1、竖线'|'、双竖线‘||’、&和&&
作用 | ||
竖线'|' | 管道符的,将‘|’前面命令的输出作为'|'后面的输入 | cat /etc/passwd|head -n1 |
双竖线‘||’ | 前一条命令为真,则后面的命令不会执行,如果前一条命令为假,则继续执行后面的命令 | [[ -f 1.txt ]] || touch 1.txt 判断文件是否存在,不存在则创建,存在就什么都不执行 |
& | 同时执行多条命令,不管命令是否执行成功 | [[ 1 -gt 2 ]] & echo b |
&& | 同时执行多条命令,当碰到执行错误的命令时,将不再执行后面的命令 | [[ 1 -lt 2 ]] && echo b2、 |
2、head 命令
查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数
head -n 5 runoob_notes.log | 显示 notes.log 文件的开头 5 行 |
3、tail命令
命令 | 作用 |
tail notes.log | 显示 notes.log 文件的最后 10 行 |
tail -f notes.log | 显示 notes.log 文件的最后 10 行,当将某些行添加至 notes.log 文件时,会继续显示这些行,直到按下(Ctrl-C)组合键停止显示 |
tail -n +20 notes.log | 显示文件 notes.log 的内容,从第 20 行至文件末尾 |
4、ps -ef | grep命令详解
ps命令 | 将某个进程显示出来 | ps是linux下最常用的也是非常强大的进程查看命令 |
grep命令 | 查找 | grep全称是Global Regular Expression Print,表示全局正则表达式版本,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 |
| | 管道命令 | 指ps命令的输出作为grep的输入 |
以下这条命令是检查java 进程是否存在:ps -ef |grep java
字段含义如下:
UID | PID | PPID | C | STIME | TTY | TIME | CMD |
root | 19855 | 11811 | 0 | 17:50 | pts/0 | 00:00:00 | grep --color=auto java |
UID | 程序被该 UID 所拥有 |
PID | 就是这个程序的 ID |
PPID | 则是其上级父程序的ID |
C | CPU使用的资源百分比 |
STIME | 系统启动时间 |
TTY | 登入者的终端机位置 |
TIME | 使用掉的CPU时间 |
CMD | 所下达的是什么指令 |
5、awk命令
一种处理文本文件的语言,是一个强大的文本分析工具
log.txt文本内容如下:
2 this is a test
3 Do you like awk
This's a test
10 There are orange,apple,mongo
命令 | 作用 | 结果 |
awk '{print $1,$4}' log.txt | 打印第1、4列 | 2 a 3 like This's 10 orange,apple,mongo |
awk -F, '{print $1,$2}' log.txt | 以,为分隔符打印第1、4列 | 2 this is a test 3 Do you like awk This's a test 10 There are orange apple |
awk -F '[ ,]' '{print $1,$2,$5}' log.txt | 先以空格为分隔符打印 再以,为分隔符打印 | 2 this test 3 Are awk This's a 10 There apple |
awk -va=1 '{print $1,$1+a}' log.txt | 设置变量a=1 | 2 3 3 4 This's 1 10 11 |
6、kill命令
使用 kill -l 命令列出所有可用信号
1 (HUP):重新加载进程 | kill -HUP 12345 kill 12345 |
9 (KILL):强制杀死一个进程 | kill -KILL 123456 kill -9 123456 |
15 (TERM):正常停止一个进程 |
7、xargs命令
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数
8、sudo命令
sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
命令 | 含义 |
sudo -u userb ls -l | 指定用户执行命令,不加 -u 参数就是系统管理者 root |
sudo -u uggc vi ~www/index.html | 以 uggc 用户身份编辑 home 目录下www目录中的 index.html 文件 |
sudo -iu popo -H | 将HOME (家目录)指定为要变更身份的使用者家目录9、 |
9、shell脚本案例解析
sudo -iu popo -H <<-Code
TERM=xterm ps -ef|grep invitel.sh|grep -v greplawk '{print \$2}'|xargs kill -9
TERM=xterm ps -ef|grep uas_recv_invite1.csv|grep -v greplawk '{print \$2}'|xargs kill -9 TERM=xterm bash /un/sipp-3.4.1/uas/cc_autocodecoverage_kehu_callin/invitel.sh $1 $2 $3 $4 $5 $6 Code
这段Shell脚本使用了Here Document语法(<<-Code),它会将接下来的代码作为一个字符串传递给sudo命令执行。具体解释如下:
sudo -iu popo -H | 使用sudo命令以popo用户身份执行脚本,并切换为popo的环境home目录 |
<<-Code:Here Document语法 | 表示接下来的代码段是一个以Code为结束符的字符串。 |
TERM=xterm ps -ef|grep invitel.sh|grep -v greplawk '{print \$2}'|xargs kill -9 | 查找包含invitel.sh关键字的进程,并发送kill -9信号终止它们的运行。 |
TERM=xterm ps -ef|grep uas_recv_invite1.csv|grep -v greplawk '{print \$2}'|xargs kill -9 | 查找包含uas_recv_invite1.csv关键字的进程,并发送kill -9信号终止它们的运行 |
TERM=xterm bash /un/sipp-3.4.1/uas/cc_autocodecoverage_kehu_callin/invitel.sh $1 $2 $3 $4 $5 $6 | 执行invitel.sh脚本,并传递$1、$2、$3、$4、$5、$6这六个参数 |
TERM=xterm是一个环境变量设置命令,它将终端类型设置为xterm。TERM环境变量用于告诉终端应用程序使用什么类型的终端,以便正确地显示文本和控制字符。在这个Shell脚本中,将TERM设置为xterm可能是为了确保在不同的终端环境下正确显示输出。
Here Document是一种shell脚本中的语法,它允许将多行文本作为输入传递给一个命令或脚本。Here Document语法的基本语法是:使用双尖括号(<<)后跟一个标识符来指定输入的结束标记,然后在下一行开始输入文本。输入的文本会一直读取,直到读取到结束标记为止。