好用的linux终端命令

2019/03/05 操作系统

好用的linux终端命令

1、操作linux命令行的有用快捷键

#光标移动
CTRL + E - 移动光标到行末
CTRL + A - 移动光标到行首
#粘贴复制
CTRL + W - 剪切光标前一个单词
CTRL + U - 剪切光标前的内容
CTRL + K - 剪切光标至行末的内容
CTRL + Y - 粘贴

2、暂停并在后台运行

​ 假设正在编辑一个文本文档,这时候想突然出去执行一个命令,可以用一下这个命令行组合

CTRL + Z - 暂停应用程序
fg - 重新将应用程序唤到前台。

3、nohup

​ nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

​ nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出

那么,我们可以巧妙的吧他们结合起来用就是nohup COMMAND &这样就能使命令永久的在后台执行.

1. nohup sh test.sh  
将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
2. nohup sh test.sh  & 
将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件.

4、grep

​ Linux grep 命令用于查找文件里符合条件的字符串。

​ grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

4.1、语法

1. -a 或 --text : 不要忽略二进制的数据。
2. -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
3. -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
4. -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
5. -c 或 --count : 计算符合样式的列数。
6. -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
7. -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
8. -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
9. -E 或 --extended-regexp : 将样式为延伸的普通表示法来使用。
10. -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
11. -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
12. -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
13. -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
14. -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
15. -i 或 --ignore-case : 忽略字符大小写的差别。
16. -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
17. -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
18. -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
19. -o 或 --only-matching : 只显示匹配PATTERN 部分。
20. -q 或 --quiet或--silent : 不显示任何信息。
21. -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
22. -s 或 --no-messages : 不显示错误信息。
23. -v 或 --revert-match : 显示不包含匹配文本的所有行。
24. -V 或 --version : 显示版本信息。
25. -w 或 --word-regexp : 只显示全字符合的列。
26. -x --line-regexp : 只显示全列符合的列。
27. -y : 此参数的效果和指定"-i"参数相同。

4.2、使用例子

1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。

grep test *file 

2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串”update”的文件,并打印出该字符串所在行的内容,使用的命令为:

grep -r update /etc/acpi 

3、反向查找。前面各个例子是查找并打印出符合条件的行,通过”-v”参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含test 的行

grep -v test *test*

4、联合使用

docker ps | grep slave

5、find

​ Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

5.1、语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数:

​ find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

1.  -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
2. -amin n : 在过去 n 分钟内被读取过
3. -anewer file : 比文件 file 更晚被读取过的文件
4. -atime n : 在过去n天内被读取过的文件
5. -cmin n : 在过去 n 分钟内被修改过
6. -cnewer file :比文件 file 更新的文件
7. -ctime n : 在过去n天内被修改过的文件
8. -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
9. -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
10. -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
11. -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
12. d: 目录
13. c: 字型装置文件
14. b: 区块装置文件
15. p: 具名贮列
16. f: 一般文件
17. l: 符号连结
18. s: socket
19. -pid n : process id 是 n 的文件
20. 你可以使用 ( ) 将运算式分隔,并使用下列运算。
21. exp1 -and exp2
22. ! expr
23. -not expr
24. exp1 -or exp2
25. exp1, exp2

5.2、使用案例

1、将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

# find . -name "*.c"

2、将目前目录其其下子目录中所有一般文件列出

# find . -type f

3、将目前目录及其子目录下所有最近 20 天内更新过的文件列出

# find . -ctime -20

4、查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;

5、查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

6、cat

​ 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"选项;

使用教程:

1、把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

cat -n textfile1 > textfile2

7、diff

​ Linux diff命令用于比较文件的差异。diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

​ 使用案例

diff 1.txt 2.txt

8、awk

​ AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

​ 语法

awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)

参数说明

1. -F fs or --field-separator fs
   指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
2. -v var=value or --asign var=value
   赋值一个用户定义变量。
3. -f scripfile or --file scriptfile
   从脚本文件中读取awk命令。
4. -mf nnn and -mr nnn
   对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
5. -W compact or --compat, -W traditional or --traditional
   在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
6. -W copyleft or --copyleft, -W copyright or --copyright
   打印简短的版权信息。
7. -W help or --help, -W usage or --usage
   打印全部awk选项和每个选项的简短说明。
8. -W lint or --lint
   打印不能向传统unix平台移植的结构的警告。
9. -W lint-old or --lint-old
   打印关于不能向传统unix平台移植的结构的警告。
10. -W posix
    打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
11. -W re-interval or --re-inerval
    允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
12. -W source program-text or --source program-text
    使用program-text作为源代码,可与-f命令混用。
13. -W version or --version
    打印bug报告信息的版本。

​ 使用案例:

1、 每行按空格或TAB分割,输出文本中的1、4项

 $ awk '{print $1,$4}' log.txt

2、使用”,”分割

 $  awk -F, '{print $1,$2}'   log.txt

3、设置变量

awk -v a=1 '{print $1,$1+a}' log.txt

Search

    欢迎添加我的个人微信号

    个人微信哦

    Table of Contents