四时宝库

程序员的知识宝库

Shell编程 - 输出重定向和输入重定向

我们在Shell脚本中看到下面这些符号:

>, >>, <, <<, <<<

它们就是shell中的输出重定向和输入重定向符号。

1. '>' 输出重定向

使用方式:command > file

作用:将 command 的标准输出重定向到一个文件(file)中。如果文件不存在,则会创建文件;如果文件已存在,则会覆盖文件的内容。示例:

ls > file.txt

将ls命令的输出写入file.txt,如果文件已存在,则覆盖文件内容。

2. >> (追加输出重定向):

使用方式:command >> file

作用:与 > 类似,但是如果文件已经存在,>> 不会覆盖文件的内容,而是将输出追加到文件的末尾。

示例:

echo "new content" >> file.txt 

将字符串 "new content" 追加到file.txt 的末尾。

3.< (输入重定向):

使用方式:command < file

作用:将文件(file)的内容作为 command 的标准输入。这样,command 将从文件中读取数据而不是从键盘输入。

示例:

sort < input.txt 

将 input.txt 文件的内容作为输入,并对其进行排序。

4.<< :

使用方式:command << delimiter ... delimiter

作用:创建一个Here Document,允许你在文档中指定多行输入,并将其作为 command 的标准输入。delimiter 是一个自定义的分界符,它标志着输入的结束。

示例:

cat << END 
Line 1 
Line 2 
Line 3 
END

这个例子中,cat 命令会将 Here Document 中的多行文本作为标准输入并输出到屏幕上。

5.<<< :

'<<<'有多种应用,例如:

  • 将字符串传递给命令
# 将字符串 "Hello, World!" 传递给 cat 命令的标准输入
cat <<< "Hello, World!"
  • 在变量中使用 <<<
test_variable="Test text"

# 将变量 $test_variable 的值传递给 grep 命令的标准输入
grep "text" <<< "$test_variable"
  • 使用 <<< 输入多行文本
while read line; do 
    echo "Line: $line" 
done <<< #39;Line 1\nLine 2\nLine 3'
# <<< 用于将包含多行文本的字符串传递给 while 循环的标准输入
  • 使用 <<< 追加到文件
# 将字符串 "Appended text" 附加到文件 output.txt 的末尾
cat <<< "Appended text" >> output.txt



知识点:

(1)标准输入 (stdin):

标准输入是一个程序接收输入数据的地方。当你从键盘输入数据时,这些数据被发送到程序的标准输入。

在 shell 中,通过键盘输入的内容成为标准输入。通常用符号'0'表示标准输入。

(2) 标准输出 (stdout):

标准输出是一个程序向其调用者或其他程序发送输出的地方。当程序产生输出时,输出被发送到标准输出。

在 shell 中,通过屏幕显示的内容通常是标准输出。通常用符号'1'表示标准输出。

(3) 标准错误 (stderr):

标准错误是一个程序用于发送错误消息或诊断信息的地方。与标准输出不同,标准错误通常用于输出错误信息,以便用户或其他程序能够注意到并进行适当的处理。

在shell中,通常用符号'2'表示标准错误。

(4) 将标准错误重定向到标准输出:

2>&1,这表示将标准错误重定向到与标准输出相同的地方。例如:

# 将标准错误和标准输出都重定向到 output.txt 文件
ls -al 2>&1 > output.txt

(5) 将标准错误和标准输出重定向到黑洞:

command &> /dev/null 
# 或 
command > /dev/null 2>&1

/dev/null 是一个特殊的设备文件,所有写入它的数据都会被丢弃(所以在shell中该设备也被称为黑洞)。这种技巧常常用于在脚本或命令行执行时,不想看到输出或不希望输出被保存的情况。

只为记录和分享......

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接