0%

Linux程序设计-Chapter-2

管道和重定向

重定向输出

重定向覆盖到文件

1
ls -l > lsoutput.txt

把ls命令输出到文件lsoutput.txt中

标准文件描述符

  • 0:程序的标准输入,重定向输入,输出原路打印

    1
    2
    3
    archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ ls -l 0> lsoutput.txt
    total 0
    -rwxrwxrwx 1 archer archer 0 May 4 16:55 lsoutput.txt
  • 1: 程序的标准输出,重定向输出

    1
    archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ ls -l 1> lsoutput.txt
  • 2:程序的标准错误输出,重定向错误输出

    1
    2
    3
    archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ ls -l 2> lsoutput.txt
    total 0
    -rwxrwxrwx 1 archer archer 0 May 4 16:56 lsoutput.txt

默认情况下,重定向输出到文件,会直接覆盖该文件的内容,如果要改变默认行为,使用 set -o noclobber,可以阻止覆盖写入

1
2
3
archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ set -o noclobber
archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ ls -l > lsoutput.txt
-bash: lsoutput.txt: cannot overwrite existing file

取消该选项,使用 set +o noclobber

1
2
archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ set +o noclobber
archer@Arhcer:/mnt/d/coding/linux-studying/ChapterTwo$ ls -l > lsoutput.txt

重定向附加到文件

1
ps >> lsoutput.txt