Bash 重定向

首页 / Shell/Bash / Bash 重定向

重定向指的是将命令行输出写入指定位置。

>用来将标准输出重定向到指定文件。

$ ls -l /usr/bin > ls-output.txt

如果重定向后的指定文件已经存在,就会被覆盖,不会有任何提示。

如果命令没有任何输出,那么重定向之后,得到的是一个长度为0的文件。因此,>具有创建新文件或改写现存文件、将其改为长度0的作用。

$ > ls-output.txt

>>用来将标准输出重定向追加到指定文件。

$ ls -l /usr/bin >> ls-output.txt

2>用来将标准错误重定向到指定文件。

$ ls -l /bin/usr 2> ls-error.txt

标准输出和标准错误,可以重定向到同一个文件。

$ ls -l /bin/usr > ls-output.txt 2>&1
# 或者
$ ls -l /bin/usr &> ls-output.txt

# 追加到同一个文件
$ ls -l /bin/usr &>> ls-output.txt

如果不希望输出错误信息,可以将它重定向到一个特殊文件/dev/null

$ ls -l /bin/usr 2> /dev/null

|用于将一个命令的标准输出,重定向到另一个命令的标准输入。

$ ls -l /usr/bin | less

不要将>|混淆。

$ ls > less

上面命令会在当前目录,生成一个名为less的文本文件。

下面是标准错误重定向的一个例子。

invalid_input () {
    echo "Invalid input '$REPLY'" >&2
    exit 1
}
read -p "Enter a single item > "
[[ -z $REPLY ]] && invalid_input

tee

tee命令用于同时将标准输出重定向到文件,以及另一个命令的标准输入。

$ ls /usr/bin | tee ls.txt | grep zip

命令替换

命令替换(command substitution)指的是将一个命令的输出,替换进入另一个命令。$(command)表示命令替换,另一种写法是使用反引号。

$ echo $(ls)
# 或者
$ echo `ls`

$ ls -l $(which cp)
# 或者
$ ls -l `which cp`

basename

basename命令清除 一个路径名的开头部分,只留下一个文件的基本名称。

#!/bin/bash
# file_info: simple file information program
PROGNAME=$(basename $0)
if [[ -e $1 ]]; then
    echo -e "\nFile Type:"
    file $1
    echo -e "\nFile Status:"
    stat $1
else
    echo "$PROGNAME: usage: $PROGNAME file" >&2
    exit 1
fi

教程来源:网道(WangDoc.com)以及 Github 无私奉献

这一章《Bash 重定向》你学到了什么?做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

深入剖析Kubernetes -〔张磊 - 57讲〕

Electron开发实战 -〔邓耀龙 - 35讲〕

SRE实战手册 -〔赵成 - 13讲〕

基于人因的用户体验设计课 -〔刘石 - 33讲〕

csv 数据以逗号结尾 |Python |

使用 pandas 从 csv 文件中提取数据时出现错误

投资组合动态规划的背包问题和回溯

如何在python中并排获得七段输出?

Kotlin - kotlin 列表过滤器是否创建一个新的列表对象?

无法从 Django ViewSet 引发 APIException

视频推荐〔Shell/Bash - 06_shell格式化输出〕

更多视频 »