文章目录
- 学习记录
- pip的使用
- 终端隐藏输出
- \>/dev/null 2>&1 VS >/dev/null 2>/dev/null
- nohup
- 文件描述符
- 输出重定向
- 输入重定向
- cat结合重定向
- ls可以连续使用
- 参考
学习记录
pip的使用
python -m pip install XXX
终端隐藏输出
> /dev/null
表示把标准输出重定向到/dev/null,也就是不在屏幕上输出标准输出
>& /dev/null
表示把标准输出和错误输出重定向到/dev/null,程序不在屏幕上输出
2>/dev/nul
2表示标准错误,将标准错误重定向到空设备里,即不输出错误信息
>/dev/null 2>&1
默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
2>&1 >/dev/null
意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
cat /dev/null > /home/omc/h.txt
清空文件/home/omc/h.txt
/dev/zero
当使用或者读取的时候,提供无限连续不断的空的数据流
- 覆盖其他的文件信息
- 产生指定大小的空文件,如交换文件,模拟虚拟文件系统
>/dev/null 2>&1 VS >/dev/null 2>/dev/null
不用>/dev/null 2>/dev/null重复,用重定向绑定原因,
将标准输出和错误输出都定向到out文件中
出现了乱码。这是因为采用这种写法,标准输出和错误输出会抢占往out文件的管道,所以可能会导致输出内容的时候出现缺失、覆盖等情况。有时候不出现乱码,可能出现只有error信息或者只有正常信息的情况。最后的情况是无法预估的。
而且,由于out文件被打开了两次,两个文件描述符会抢占性的往文件中输出内容,所以整体IO效率不如>/dev/null 2>&1来得高。
nohup
使用nohup command &命令形式来启动一些后台程序,比如一些java服务:
为了不让一些执行信息输出到前台(控制台),加上刚才提到的>/dev/null 2>&1命令来丢弃所有的输出:
文件描述符
类型 | 文件描述符 | 默认情况 | 对应文件句柄位置 |
---|---|---|---|
标准输入(standard input) | 0 | 从键盘获得输入 | /proc/slef/fd/0 |
标准输出(standard output) | 1 | 输出到屏幕(即控制台) | /proc/slef/fd/1 |
错误输出(error output) | 2 | 输出到屏幕(即控制台) | /proc/slef/fd/2 |
输出重定向
命令 | 介绍 |
---|---|
command >filename | 把标准输出重定向到新文件中 |
command 1>filename | 同上 |
command >>filename | 把标准输出追加到文件中 |
command 1>>filename | 同上 |
command 2>filename | 把标准错误重定向到新文件中 |
command 2>>filename | 把标准错误追加到新文件中 |
输入重定向
命令 | 介绍 |
---|---|
command <filename | 以filename文件作为标准输入 |
command 0<filename | 同上 |
command <<delimiter | 从标准输入中读入,直到遇到delimiter分隔符 |
cat结合重定向
如果cat后面没有跟文件名的话,那它的作用就是将标准输入(比如键盘)回显到标准输出(比如屏幕)上
可以将利用输入重定向,将我们在键盘上敲入的字符写入到文件中。使用ctrl+c来结束输入
让cat读取一个文件
使用分隔符,输入完cat >out <<end,然后敲下回车之后,命令并没有结束,此时cat命令像一开始一样,等待输入数据。然后当我们敲入end之后,cat命令就结束了。end之前输入的字符都已经被写入到了out文件中。这就是输入分割符的作用。
ls可以连续使用
例如
ls dirname1 dirname2
参考
linux中>/dev/null 2>&1和2>&1 > /dev/null