输入输出重定向
0: 标准输入文件; 1: 标准输出文件; 2: 标准错误输出文件;
COMMAND >FILENAME 相当于 COMMAND 1>file : 以覆盖的方式,将正确输出结果输出到FILENAME文件中
COMMAND >>FILENAME 相当于 COMMAND 1>>FILENAME : 以追加的方式,将正确输出结果输出到FILENAME文件中
COMMAND 2>FILENAME : 以覆盖的方式,把命令结果的错误信息输出到FILENAME文件中
COMMAND 2>>FILENAME : 以追加的方式,把命令结果的错误信息输出到FILENAME文件中
COMMAND >FILENAME 2>&1: 以覆盖的方式,把正确输出和错误信息同时输出到FILENAME文件中
COMMAND >>FILENAME 2>>&1 : 以追加的方式,把正确输出和错误信息同时输出到FILENAME文件中
COMMAND >FILENAME1 2>FILENME2 : 以覆盖的方式,将正确输出结果输出到FILENAME1,将错误信息输出到FILENAME2
COMMAND >>FILENAME1 2>>FILENME2 : 以追加的方式,将正确输出结果输出到FILENAME1,将错误信息输出到FILENAME2
COMMAND <FILENAME : 将FILENAME文件作为COMMAND的输入
COMMAND <<END : 从键盘作为输入,直到遇见分界符END结束
COMMANDN <FILENAME1 >FILENAME2 : 将FILENAME1作为COMMAND的输入,将正确结果输出到FILENAME2中
文件描述符(图片来源:C语言中文网)
结束
exec N>FILENAME: execute a command that completely replaces the current process. 永久更改当前Shell的文件描述符N的文件指针。
/dev/tty: 这个文件代表显示器
Here Document
COMMAND <<END
DOCUMENT CONTENT
END
Here String
COMMAND <<< STRING
Shell组命令
{ COMMAND1; COMMAND2; COMMAND3; ...} : 在当前Shell中执行命令
( COMMAND1; COMMAND2; COMMAND3; ...} : 创造一个子Shell执行命令
管道 pipe
COMMAND1 | COMMAND2
子进程
$SHLVL: Shell level 记录多个Bash进程实例嵌套深度的累加器,每次进入一层普通的子进程,SHLVL的值加1
$BASH_SUBSHELL: 记录一个Bash进程实例中多个子Shell嵌套深度的累加器,每次进入一层子Shell,BASH_SUBSHELL的值加1
信号:进程间的通信
Ctrl+C终结一个命令的执行;
kill [NUM] [PID];
disown %NUM: 将后台作业进程离开当前Shell,当前Shell关闭后,该进程继续运行
模块化
source FILENAME
. FILENAME
历史命令
!NUM: 通过history查看命令命令数字,执行第NUM条命令
!!: 执行上一条命令
!$: 代表上一条命令的最后一个参数