相关扩展
nohup | 所属包:coreutils
功能说明:该命令可以让用户在退出系统之后,继续于后台中执行程序。注意nohup命令不会自动将程序放到后台执行,因此需要配合shell的特殊字符'&'使用,'&'放在一行指令的最后,如'nohup command &'
文件重定向原理
要想明白文件重定向,首先需要理解linux中的所有进程,是有3个预设文件描述符的,文件描述符映射到文件指针,文件指针指向具体文件:
fd0 |默认映射到标准输入文件指针->(/dev/stdin)
fd1 |默认映射到标准输出文件指针->(/dev/stdout)
fd2 |默认映射到标准错误文件指针->(/dev/stderr)
所谓标准输入文件,从终端读取信息
所谓标准输出文件,将结果输出至终端
所谓标准错位文件,将错误输出至终端
所谓重定向,就是改变fd对应的文件指针
重定向符号
重定向中 文件有两种表示方式:'文件名'或者'&文件描述符'
> |输出重定向,将[左侧]command结果输入到[右侧]文件
>>|输出重定向,将[左侧]command结果追加到[右侧]文件
< |输入重定向,将[右侧]文件作为[左侧]command的输入
<<|输入重定向,从标准输入中读入,直到遇到[右侧]分界符停止,作为[左侧]command的输入
n>&m |将n映射的文件修改为[m映射的文件]
重定向应用
典型用法
$ cat <<EOF
> 111
> 222
> EOF
预期输出
111
222
cat <file_list等同于
cat 0<file_list
1.将fd0映射的文件修改为file_list
2.执行cat,从fd0映射的file_list文件读取数据
PS:输入重定向符'<',[左侧]默认为fd0
echo 'hello' >file_log等同于
echo 'hello' 1>file_log
1.将fd1映射的文件修改为file_log
2.执行echo,将'hello'字串写入fd1映射的file_log文件
PS:输出重定向符'>',[左侧]默认为fd1
2>/dev/null
1.将fd2映射的文件修改为/dev/null
2>&1 >/dev/null等同于
2>&1 1>/dev/null
1.将fd2映射的文件修改为/dev/stdout
2.将fd1映射的文件修改为/dev/null
>/dev/null 2>&1等同于
1>/dev/null 2>&1
1.将fd1映射的文件修改为/dev/null
2.将fd2映射的文件修改为[fd1映射的文件]
效果:fd1&fd2都映射到/dev/null
PS:此用法较为常见'>/dev/null 2>&1',较为麻烦,故有简写:'&>/dev/null'或'>&/dev/null'
应用扩展…(待续)
标准输入
read |从键盘/文件中读取文本行,并赋值给变量
标准输出
echo |将文本行/变量输出到标准输出
cat |将文件内容输出到标准输出
tee |将结果输出到标准输出,另一个副本输出到相应文件