Linux/AP_Autosar/C++系列之 基础命令
“ 磨刀不误砍柴工,先说一下基础命令,后面慢慢善其事,本文可能也看不下去,就当为后面的文章做个可有可无的字典查询。知道就好。”
Linux命令概况
Linux操作系统为用户提供了两种调用其服务和功能的接口:程序接口和操作接口。
操作控制命令是由一组命令及命令解释程序组成,也称为命令接口或联机用户接口,
命令的格式如下:
命令名 参数 1 参数 2 … 参数 n
操作命令执行过程如下:
(1)系统启动命令解释程序,输出命令提示符,等待用户输入命令,
(2)用户输入命令并按Enter键,
(3)命令解释程序读入命令、分析命令、执行命令,
(4)命令执行结束后,命令提示符再次输出,等待下一条命令。
Linux常用命令分类
文件管理类:cd、 cp 、chmod、chown、chgrp、comm、diff、file、find、ln、ls、mkdir、mv、pwd、
rm、rmdir。
进程管理类:at、kill、mail、nice、nohup、ps、time、write、mesg。
文本加工类:cat、crypt、grep、norff、uniq、wc、sort、spell、tail、troff。
软件开发类:cc、f77、login、logout、size、yacc、vi、emacs、dbs、lex、make、lint、ld。
系统维护类:date、man、passwd、stty、tty、who。
Linux常用命令分类
文件管理类 文件属性:
第一个字母表示文件类型,
“-” 普通文件;“d” 目录,字母”d”,是dirtectory(目录)的缩写;
“l” 符号链接;“b” 块设备文件;“c” 字符设备文件。
紧接着的3*3个字符分3组,各指示此文件的读、写、执行权限。
rwx(Owner)r-x(Group)r-x(Other)
1、使用者自己可读,可写,可执行;
2、同一组的用户可读,不可写,可执行;
3、其它 用户不可读,不可写,可执行
第二个栏位,表示文件个数,
第三个栏位,表示该文件或目录的拥有者,
第四个栏位,表示所属的组(group),
第五个栏位,表示文件大小,文件大小用byte来表示,空目录一般都是1024byte,
第六个栏位,表示最后一次修改时间,以”月,日,时间”的格式表示,
第七个栏位,表示文件名,我们可以用ls –a显示隐藏的文件名。
root@iZ2vcb0v0htktk3gwslzh8Z:~# ls -l
total 626316
drwxr-xr-x 10 root root 4096 Jun 27 17:42 diag-client-lib
drwxr-xr-x 4 root root 4096 Jul 24 23:01 DoVehicle
drwxr-xr-x 37 16446 staff 4096 Jun 7 02:30 gcc-4.9.4
-rw-r--r-- 1 root root 115960349 Aug 3 2016 gcc-4.9.4.tar.gz
drwxr-xr-x 5 root root 4096 Jun 14 00:21 git
chmod:用来修改某个目录或文件的访问权限。
语法:chmod [-cfvR] [--help] [--version] [who] [+ | - | =] [mode] 文件名。
权限范围:
u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
chown:用于设置文件或目录所有者和所属群组。
语法:chown [-cfhvR] [--help] [--version] user[:group] file...
user : 新的文件拥有者的使用者 ID;
group : 新的文件拥有者的使用者组(group);
-c : 显示更改的部分的信息;
-f : 忽略错误信息;
-h :修复符号链接;
-v : 显示详细的处理信息;
-R : 处理指定目录以及其子目录下的所有文件;
--help : 显示辅助说明;
--version : 显示版本。
find:用于在目录层次结构中搜索文件。
语法:find [path] [expression] [file name or directory name]
-path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录;
-expression:expression可以分为——“-options [-print -exec -ok ...]”;
-print,find命令将匹配的文件输出到标准输出;
-exec,find命令对匹配的文件执行该参数所给出的shell命令;
相应命令的形式为‘command’ { } \;,注意{ }和\;之间的空格;
-ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,
在执行每一个命令之前,都会给出提示,让用户来确定是否执行;
注意:对于路径名来说,若想从某一目录开始查找,则一定需要写成绝对路径的形式,但
若以当前目录开始查找,可以直接用“ . ”代替路径名
rm:用于删除一个文件或者目录。
语法:rm [options] name. . .
-i:删除前逐一询问确认;
-f:即使原档案属性设为只读,亦直接删除,无需逐一确认;
-r:将目录及以下之档案亦逐一删除;
ln:为某一个文件在另外一个位置建立一个同步的链接。
语法:ln [参数][源文件或目录][目标文件或目录]
硬链接:
1.以文件副本的形式存在,但不占用实际空间;
2.不允许给目录创建硬链接;
3.只有在同一个文件系统中才能创建。
软链接:
1.以路径的形式存在,类似于Windows操作系统中的快捷方式;
2.可以 跨文件系统;
3.可以对一个不存在的文件名进行链接;
4.可以对目录进行链接。
注意:ln命令会保持每一处链接文件的同步性,不论改动了哪处,其他链接的文件都会
发生相同的变化。
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
--help 显示帮助信息
--version 显示版本信息
下面我们对源文件进行编辑。然后通过链接的文件cat.
ps:用于显示当前进程的状态,类似于 windows 的任务管理器。
语法:ps [options] [--help]
ps:的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A:列出所有的进程;
-w:显示加宽可以显示较多的资讯;
-au:显示较详细的资讯;
-aux:显示所有包含其他使用者的行程;
au(x) 输出格式 :USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ;
USER:行程拥有者;
PID:pid;
%CPU:占用的 CPU 使用率;
%MEM:占用的记忆体使用率;
VSZ:占用的虚拟记忆体大小;
RSS:占用的记忆体大小;
TTY:终端的次要装置号码 (minor device number of tty);
STAT: 该行程的状态:
D:无法中断的休眠状态 (通常 IO 的进程);
R:正在执行中;
S:静止状态;
T:暂停执行;
Z:不存在但暂时无法消除;
W:没有足够的记忆体分页可分配;
<:高优先序的行程;
N:低优先序的行程;
L:有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O);
START: 行程开始时间;
TIME: 执行的时间;
COMMAND:所执行的指令。
我这个是阿里云服务器,可能和一般虚拟机有点不同。
kill:用于删除执行中的程序或工作。
语法:kill [信息名称或编号][程序]
[程序]:程序的PID或是PGID,也可以是工作编号;
[信息名称或编号]:指定要送出的信息;
最常用的信号是:
1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。
cat:用于连接文件并打印到标准输出设备上。
语法:cat [-AbeEnstTuv] [--help] [--version] fileName
-n 或 --number:由 1 开始对所有输出的行数编号;
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号;
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外;
-E 或 --show-ends:在每行结束处显示 $;
-T 或 --show-tabs:将 TAB 字符显示为 ^I;
-A:--show-all:等价于 –vET;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# cat test.txt niubiroot@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se#
grep:用于查找文件里符合条件的字符串。
语法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行
动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
-a 或 –text:不要忽略二进制的数据;
-A<显示行数> 或 --after-context=<显示行数>:除了显示符合范本样式的那一列之外,并显
示该行之后的内容;
-b 或 --byte-offset:在显示符合样式的那一行之前,标示出该行第一个字符的编号;
-B<显示行数> 或 --before-context=<显示行数>:除了显示符合样式的那一行之外,并显示
该行之前的内容;
-c 或 –count:计算符合样式的列数;
-C<显示行数> 或 --context=<显示行数>或-<显示行数>:除了显示符合样式的那一行之外,
并显示该行之前后的内容;
-d <动作> 或 --directories=<动作>:当指定要查找的是目录而非文件时,必须使用这项参数,
否则grep指令将回报信息并停止动作;
-e<范本样式> 或 --regexp=<范本样式>:指定字符串做为查找文件内容的样式;
-E 或 --extended-regexp:将样式为延伸的正则表达式来使用;
-f<规则文件> 或 --file=<规则文件>:指定规则文件,其内容含有一个或多个规则样式,让
grep查找符合规则条件的文件内容,格式为每行一个规则样式;
-F 或 --fixed-regexp:将样式视为固定字符串的列表;
-G 或 --basic-regexp:将样式视为普通的表示法来使用;
-h 或 --no-filename:在显示符合样式的那一行之前,不标示该行所属的文件名称;
-H 或 --with-filename:在显示符合样式的那一行之前,表示该行所属的文件名称;
-i 或 --ignore-case:忽略字符大小写的差别;
-l 或 --file-with-matches:列出文件内容符合指定的样式的文件名称;
-L 或 --files-without-match:列出文件内容不符合指定的样式的文件名称;
-n 或 --line-number:在显示符合样式的那一行之前,标示出该行的列数编号;
-o 或 --only-matching:只显示匹配PATTERN 部分;
-q 或 --quiet或—silent:不显示任何信息;
-r 或 –recursive:此参数的效果和指定“-d recurse”参数相同;
-s 或 --no-messages:不显示错误信息;
-v 或 --invert-match:显示不包含匹配文本的所有行;
-V 或 –version:显示版本信息;
-w 或 --word-regexp:只显示全字符合的列;
-x --line-regexp:只显示全列符合的列;
-y:此参数的效果和指定“-i”参数相同。
注意:grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件
的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列
显示出来,若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令
会从标准输入设备读取数据。
1、以递归的方式查找“/etc/acpi” 下包含“update”的文件;
2、查找后缀有 file 字样的文件中包含 test 字符串的文件,并 打印出该字符串的行;
grep test *file
3、反向查找,查找文件名中包含 test 的文件中不包含test 的行;
grep -v test *file
VI/VIM
使用:vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert
mode)和底线命令模式(Last line mode)。
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会
输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符;
x 删除当前光标所在处的字符;
: 切换到底线命令模式,以在最底一行输入命令;
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
底线命令模式:
在命令模式下按下:(英文冒号)就进入了底线命令模式;
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多;
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
输入模式:
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符;
ENTER,回车键,换行;
BACK SPACE,退格键,删除光标前一个字符;
DEL,删除键,删除光标后一个字符;
方向键,在文本中移动光标;
HOME/END,移动光标到行首/行尾;
Page Up/Page Down,上/下翻页;
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线;
ESC,退出输入模式,切换到命令模式。
vi几种模式间切换:
date:用来显示或设定系统的日期与时间。
语法:date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr]
[--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
-d datestr:显示 datestr 中所设定的时间 (非系统时间);
--help:显示辅助讯息;
-s datestr:将系统时间设为 datestr 中所设定的时间;
-u:显示目前的格林威治时间;
--version:显示版本编号。
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# date
Mon 24 Jul 2023 11:42:32 PM CST
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# date '+%c'
Mon 24 Jul 2023 11:42:37 PM CST
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# date '+%D'
07/24/23
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# date '+%x'
07/24/2023
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# date '+%T'
23:42:53
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se# date '+%X'
11:42:55 PM
root@iZ2vcb0v0htktk3gwslzh8Z:~/Linux_Se#
全系更新中......
文章转载自公众号:汽车与基础软件