关于命令组合
&&
- 命令之间使用 && 连接,实现逻辑与的功能。
- 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
- 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
||
- 命令之间使用 || 连接,实现逻辑或的功能。
- 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
- 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。
两个案例:
案例11
killall php-fpm && /usr/local/php/sbin/php-fpm
上面这个命令是 杀死php所有进程,并重新启动 php ,但是php进程要是很多,killall 不能立刻杀死所有的进程,后面的php开启也不会执行,这样可能酿成大问题,所以,要想确保万无一失,就用kill -9 杀死pid,再重启,像这样1
ps -ef |grep php |grep -v grep |awk '{print $2}'|xargs kill -9 && /www/web/php/sbin/php-fpm
案例21
rm ~/Desktop/1.txt && echo "success" || echo "fail"
如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail 提示信息
;
- 命令之间使用;,不论前面的命令是否成功,;后面的依旧会执行
- 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果
{}
- 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
示范:1
2
3
4
5
6[root@pa1 tmp]#\rm ~/Desktop/1.txt || {cd ~/Desktop/;ls -a;echo "fail"}
rm: cannot remove ‘/root/Desktop/1.txt’: No such file or directory
-bash: cd: /root/Desktop/: No such file or directory #没有这个文件,执行||后面的
. header.html php-fpm.sock
.. hsperfdata_root sess_fc6cleqmbkejpsje96t40q7o86 #ls -a
fail #输出 fail
()
1 括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格
====================我是分隔符====================我是分隔符============
关于后台运行
&
窗口关闭后台运行会取消
nohup command &
窗口关闭后台运行继续,会输出一个文件 nohup.out
screen
窗口关闭后台继续运行,比nohup稳定
tmux
tmux 是一款终端复用命令行工具,比screen更复杂但是更稳定,功能更多
查看当前有多少在后台运行的命令
1 | jobs #列出由ctrl+z,&,nohup命令调到后台的程序 |
后台命令拉到前台继续
拉到前台继续看输出的话,得看你是怎么放到后面的,解铃还需系铃人
有的是& 有的是 nohup 还有screen ,除了screen,这些后台的东西,都可以用fg加 序号继续在前台执行
1 | screen -r yourname # 回到yourname这个进程 |
怎么杀死后台运行的
jobs
1 | jobs -l #显示后台挂起的程序pid及状态 (kill pid) |
screen
1 | screen -ls #列出当前所有由screen调到后台的程序 |
查看某个进程开启的时间
1 | ps -o lstart -p pid |
查看这个命令会运行多久?
1 | time command |
查看这个命令在执行前会做什么?
1 | maybe |
关于命令行操作
Ctrl + a 跳转到当前命令行行首
Ctrl + e 跳转到当前命令行行尾
!+上次使用的命令行第一个单词 快速调用上次使用的命令行全部内容
Ctrl + r 搜索最近使用的命令并调用
ctrl - k 清除光标右边的内容
ctrl + h 清除光标左边(之前)的内容
mac用户 Ctrl 换为 control