如何在Linux中将输出写入文件
时间:2020-01-09 10:39:58 来源:igfitidea点击:
如何将输出写入Linux bash shell中的文件中?
您能否解释bash和POSIX shell的I/O重定向,以便在Unix或Linux下将数据写入文件?
在shell提示符下执行命令时,它会在屏幕或终端上显示输出。
但是,bash允许您重定向输出并将输出写入Linux或类似Unix的系统中的文件。
这对于处理很有用,或者将终端输出保存到文件中以用于其他目的。
如何将终端输出保存到文件中?
命令可以从文件接收输入,并将输出发送到文件。
将输出写入文件
语法是
command > filename
例如,将ls命令的输出发送到名为foo.txt的文件
$ ls > foo.txt
使用cat命令查看foo.txt:
$ cat foo.txt
请注意,当执行ls> foo.txt时,shell会将ls命令的输出重定向到名为foo.txt的文件,从而替换文件的现有内容。
换句话说,文件的内容将被覆盖。
将输出或数据追加到文件
语法是
command >> filename
例如,以下内容将追加数据:
echo "--------------" >> /tmp/data.txt echo "Domain information" >> /tmp/data.txt host www.theitroad.local >> /tmp/data.txt echo "--------------" >> /tmp/data.txt
验证一下:
cat /tmp/data.txt
如何使用tee命令将命令输出保存到bash中的文件
tee命令从标准输入读取并写入标准输出和文件。
将数据写入文件的语法如下:
command | tee file.txt
要追加数据吗?
尝试
command | tee -a output.txt
例子
在屏幕上显示date命令的输出,并保存到名为/tmp/output.txt的文件中。
如果output.txt已经存在,它将被覆盖:
$ date | tee /tmp/output.txt $ cat /tmp/output.txt
与上面相同,但追加到给定文件,请勿覆盖文件:
$ pwd | tee -a /tmp/test.txt $ echo "Today is $(date)" | tee -a /tmp/test.txt $ hostnamectl | tee -a /tmp/test.txt $ cat /tmp/test.txt
上面的命令会将输出追加到文件的末尾,就像前面解释的shell>>
运算符一样。
Bash和POSIX Shell的I/O重定向摘要
Shell运算符 | 描述 | 覆盖现有文件? |
---|---|---|
命令> output.txt | 将终端输出(标准输出)保存到名为output.txt的文件中 | 是 |
命令>> output.txt | 将终端输出(标准输出)追加到名为output.txt的文件中 | |
command <output.txt | 从output.txt文件获取标准输入 | N/A |
命令0 <output.txt | 从output.txt文件中获取标准输入 | N/A |
命令1> output.txt | 将标准输出放入output.txt文件 | 是 |
命令1 >> output.txt | 将标准输出追加到output.txt | 否 |
命令2> output.txt | 将标准错误放入output.txt | 是 |
命令2 >> output.txt | 将标准错误追加到output.txt文件 | 否 |
command&> output.txt | 同时输入标准错误并输出到output.txt | 是 |
命令> output.txt 2>&1 | {POSIX }将标准错误和输出都放到名为output.txt的文件中 | 是 |
command&>> output.txt | 将标准错误和输出都追加到名为output.txt的文件中 | 否 |
command >> output.txt 2>&1 | {POSIX }既将标准错误又输出到名为output.txt的文件中 | 否 |
命令| tee output.txt | 在屏幕上显示输出的同时将标准输出放入output.txt | 是 |
命令| tee -a output.txt | 在屏幕上显示输出时将标准输出追加到output.txt | 否 |
command |&tee output.txt | 在终端上显示输出时,将标准输出和错误都输入到output.txt中 | 是 |
命令2>&1 | tee output.txt | {POSIX }将标准输出和错误都输入到名为output.txt的文件中,同时在终端上显示输出 | 是 |
命令|&tee -a output.txt | 在终端上显示输出时,将标准输出和错误都追加到名为output.txt的文件 | 否 |
命令2>&1 | tee -a output.txt | {POSIX }将标准输出和错误追加到名为output.txt的文件,同时在终端上显示输出 | 否 |
总结
您学习了如何使用bash或POSIX shell将输出写入Linux或类似Unix的系统中的文件。
- /dev/stdin(标准输入)-文件描述符0被复制。
- /dev/stdout(标准输出)-复制了文件描述符1。
- /dev/stderr(标准错误)-文件描述符2被复制。