输出输入重定向

输入重定向中用到的符号及其作用

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2

输出重定向中用到的符号及作用

符号 作用
命令 > 文件 标准输出重定向到一个文件夹中(清空原有数据)
命令 2> 文件 错误输出重定向到一个文件夹中(清空原有数据)
命令 >> 文件 标准输出重定向到一个文件夹中(追加到原有内容)
命令 2>> 文件 错误输出重定向到一个文件夹中(追加到原有内容)
命令 >> 文件 2>&1
命令 &>> 文件1
将标准输错误输出共同写入到文件夹中(追加到原有内容的后面)
  1. # man bash > readme.txt
  2. man bash命令显示的所有文字,打印到readme.txt文件中。
  3. # echo "123" > readme.txt
  4. 123打印到readme.txt中,之前man bash的参数会消失。
  1. # echo "hello linux" > readme.txt
  2. 将字符hello linux,打印到readme.txt文件中。
  3. # echo "wuhu~" >> readme.txt
  4. 添加一行打印wuhu~到readme.txt
  1. # ls / > readme.txt
  2. ls / 命令显示的所有文字,打印到readme.txt
  3. #ls /1 2> readme.txt
  4. ls /1 命令出现报错,所以会打印到readme.txt

输出用的多一些,输入用的很少,并且很多用到的输入命令,可以使用管道符。

管道符

把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。个人理解,在第一个命令的基础上,执行第二条命令。并且,管道符是“连接”作用,也就是说,并不止只能用一次!命令A|命令B|命令C

  1. # ls -l /etc/ | more
  2. etc目录下文件很多,但只执行前面命令,会一次显示全部数据。用了管道符,more命令,可以慢慢查看。
  1. # netstat -ntlp | grep ssdh
  2. 查看端口,并且只看带有ssdh的端口

命令行的通配符

我们在操作linux时,经常会遇见知道文件名称开头,但是不知道文件的具体名称。看着满满登登的文件,也不知道怎么去找。下面有四种方法查找。

  1. 第一种:
  2. ls /dev/sd + TAB
  3. 只是知道前几个字符,TAB会帮我们自动补全
  1. 第二种:
  2. ls /dev/sda*
  3. 列出sda开头的所有文件
  1. 第三种:
  2. ls /dev/sda?
  3. 和第二种差不多
  1. 第四种:
  2. ls /dev/sda[123]
  3. ls /dev/sda[0-3]
  4. []括的是关键字,0-3是匹配03的数字,当然字符也可以。123是直接匹配123

常用的转义字符

4个最常用的转义字符如下所示

反斜杠 / :使反斜杠后面的一个变量变为单位的字符串

单引号'' :转义其中所有的变量为单纯的字符串

双引号"" :保留其中的变量属性,不进行转义处理

反引号`` : 把其中的命令执行后返回结果

先定义一个变量PRICE,赋值为5,然后用双引号括起来,并且输出

  1. #PRICE=5
  2. #echo "$PRICE"
  3. 5

如果我们希望输出,”价格为:管道符,重定向 - 图1符号,如果使用$$` 则会输出当前程序的进程号。

  1. #echo "当前价格为$$PRICE"
  2. 当前价格为 18106PRICE

如果希望第一个$ 作为美元符号显示,则需要添加/ 转义字符。

  1. #echo "当前价格为\$$PRICE"
  2. 当前价格为 $5