Linux----------------Shell重定向输入输出

(一)

标准输入

以键盘读取用户输入的数据,然后再把数据拿到 Shel程序中使用。
 

标准输出

Shell 程序产生的数据,这些数据一般都是呈现到显示器上供用户浏览查看


输入输出重定向


        输入方向就是数据从哪里流向程序数据默认从键盘流向程序,如果改变了它的方向,
数据就从其它地方流入,这就是输入重定向。

        输出方向就是数据从程序流向哪里数据默认从程序流向显示器,如果改变了它的方向,
数据就流向其它地方,这就是输出重定向。


(二)文件描述符


        linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器。在linuxshell 执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述不容易记忆,shell同时给出相应的文件名。

文件名 文件描述符 功能
标准输入stdin 0 获取键盘的输入数据
标准输出stdout 1 将正确数据输出到显示器上
标准错误 2 将错误信息输出到显示器上

        默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。以下是几种情况:

如果希望 stderr 重定向到 file,可以这样写:

$ command 2>file

如果希望 stderr 追加到 file 文件末尾,可以这样写:

$ command 2>>file

2 表示标准错误文件(stderr)。

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:

$ command > file 2>&1

或者

$ command >> file 2>&1

如果希望对 stdin 和 stdout 都重定向,可以这样写:

$ command < file1 >file2

command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。

()重定向命令列表

输出重定向

        当你在Linux或Unix-like操作系统中执行命令时,可以使用输出重定向来控制命令的输出。输出重定向通过使用特定符号来实现,以下是一些常见的语法:

  `>` 符号:

将命令的输出覆盖到指定的文件。如果文件已经存在,它将被新内容替代。

 `>>` 符号:

将命令的输出追加到指定文件的末尾,而不会删除已有的内容。

   示例:
 

   例如,执行以下命令会将指定的文本追加到"users"文件的末尾,而不会删除已有的内容:
   $ echo "好人一生平安" >> users
 

        这些输出重定向功能对于日志记录、数据备份和生成报告等任务非常有用。你可以使用这些符号来控制命令的输出,以满足不同的需求。

输入重定向

wc命令可以用来对文本进行统计,包括单词个数、行数、字节数。

wc语法格式:wc   [选项] [文件名]

常见选项有:

(四)补充

Here Document

        Here Document是Shell脚本中的一种特殊重定向方式,用于将一段文本作为输入传递给一个命令或脚本。这种重定向方式允许你在Shell脚本或交互式环境中嵌入多行文本,并将这些文本作为命令的输入。

Here Document的基本形式如下:

command << delimiter
    document
delimiter
  • command 是接收输入的命令。
  • delimiter 是自定义的分界符,它标志了文本输入的开始和结束。
  • document 包含了你要传递给命令的文本。

注意事项:

  • 结尾的delimiter必须以单独的一行顶格写,前后不能有任何字符,包括空格和制表符。
  • 开始的delimiter前后的空格会被忽略。
  • 这个功能非常适用于需要在Shell脚本中生成动态文本或配置文件的情况。

可以使用Here Document来传递多行文本,而不必在命令行中手动输入多行文本。wc -l命令用来计算Here Document中的行数。这个功能在脚本编程中非常有用,因为它允许你轻松地嵌入文本内容,而无需手动创建临时文件。

        /dev/null文件。/dev/null是一个特殊的文件,它会吞掉所有写入它的内容,这对于禁止输出或将输出丢弃非常有用。通过将命令的输出重定向到/dev/null,你可以将命令的输出完全丢弃,使其不会在屏幕上显示或占用系统资源。如果将标准输出和标准错误都重定向到/dev/null,可以使用command > /dev/null 2>&1。这里的2>&1表示将标准错误(文件描述符2)重定向到标准输出,然后再将标准输出重定向到/dev/null。这样,命令的所有输出都会被丢弃。

猜你喜欢

转载自blog.csdn.net/qq_63976098/article/details/134169916