目录
一、逻辑符号
1.1&&
1.2||
二、连接符号
2.1|
2.2>
2.3>>
2.4<
三、分隔符号
3.1 ;
在Linux中,逻辑符号和连接符号常用于构建命令行中的逻辑操作和管道操作。下面对这两种符号进行总结描述。
一、逻辑符号
1.1&&
逻辑与符号,用于在一个命令成功执行后执行另一个命令,如果前面的命令失败了,后面的命令不执行。例如,command1 && command2
表示只有当command1
成功执行后,才会执行command2
。
用法示例:
mkdir A1 && cd A1
这个命令是会先创建一个名为A1
的目录,然后如果创建成功,才会进入该目录。
执行结果如下:
观察图中结果:
在p4的目录下只有一个A2的文本文件,当执行命令后发现命令提示符已经切换到A1目录,证明目录A1已经创建成功,再次检查p4目录,结果为A1和A2。
1.2||
逻辑或符号,用于在一个命令执行失败后执行另一个命令,如果前面的命令成功了,后面的命令不执行。例如,command1 || command2
表示只有当command1
执行失败后,才会执行command2
。
用法示例:
rmdir B3 || cat > A3
- 如果目录 B3 存在并且成功被删除,则不执行后续命令。
- 如果目录 B3 不存在或无法删除,则将用户的输入保存到文件 A3 中。
因为目录 B3 不存在,所以rmdir
命令将会失败,执行 cat > A3
命令。
然后编辑A3文件内容,保存退出。
执行结果如下:
观察图中结果:
p4的目录下没有B3空目录,因此执行命令失败进行提示;然后编辑A3文件内容:asdf保存退出,再次查看p4目录发现已经存在A3文件,查看A3文件内容和上面编辑一样。
二、连接符号
2.1|
管道符号,用于将前一个命令的输出作为后一个命令的输入。例如,command1 | command2
表示将command1
的输出作为command2
的输入进行处理。
或者换种理解:
| 是在当多个命令作用在同一个文件上时,可以使用,是先把第一个命令执行,然后在执行得到的结果上,再执行第二个命令。
只需要在第一个命令后加文件名;
该符号相当于oracle把子查询的结果集当成数据来源。
用法示例:
ls -l|grep ".txt"
ls -l
:列出当前目录下的文件和文件夹详细信息。grep ".txt"
:在ls -l
的输出中搜索包含 ".txt" 的行。
执行结果如下:
- 执行
ls -l
命令,列出当前目录下的文件和文件夹的详细信息。 - 将
ls -l
的输出作为输入传递给grep
命令。 - 在
ls -l
的输出中,通过grep
过滤出包含 "file.txt" 的行,并将其打印出来。
2.2>
重定向符号,用于将命令的输出重定向到文件中。例如,command > file
表示将command
的输出写入到文件file
中,如果文件不存在则创建,如果文件已存在则覆盖原有内容。
用法示例:
echo "hi,树先生" > c.txt
- 执行
echo "hi,树先生"
命令,将字符串 "hi,树先生" 输出到标准输出(通常是终端)。 - 将标准输出的内容通过重定向操作符
>
保存到文件c.txt
中。
执行结果如下:
文件 c.txt
已经存在,使用 >
操作符会覆盖文件中的内容。
如果c.txt不存在,运行该命令后,文件 c.txt
将被创建,并且其中的内容将包含字符串 "hi,树先生"。 例如重定向到d.txt中:
注意:
假如遇到下图这种情况:
通常是由于 Bash Shell 的历史扩展功能导致的。在 Bash 中,
!
符号被用作历史命令扩展的起始符号。可以按照下面方法解决:
- 使用单引号:将命令包裹在单引号中可以禁用历史命令扩展功能。例如,使用
'!'
而不是!
echo 'Hello, World!' > d.txt
如上面例子中的 hi,老板!
- 使用反斜杠转义:使用反斜杠
\
对!
进行转义,以防止其被识别为历史命令扩展。echo hi,\!树先生 > e.txt
执行结果如下:
2.3>>
追加重定向符号,用于将命令的输出追加到文件中。例如,command >> file
表示将command
的输出追加到文件file
的末尾,如果文件不存在则创建。
用法示例:
2.2示例中讲到 假如文件 c.txt
已经存在,使用 >
操作符会覆盖文件中的内容。
如果只是想要追加内容而不是覆盖,请使用 >>
操作符。
echo '
Hello, World!
This is an example file.
It contains some text for demonstration. ' >> c.txt
执行结果如下:
该命令将会追加内容到现有的 c.txt
文件末尾。
2.4<
输入重定向符号,用于将文件的内容作为命令的输入。例如,command < file
表示将文件file
的内容作为command
的输入进行处理。
三、分隔符号
3.1 ;
分号符号 --命令分隔符;
用于指定多个命令在同一行上依次执行,不考虑前一个命令的执行结果。即连接多个命令,命令之间互不影响;会把前后两个命令的结果一次都显示出来。
用法示例:
cat c ; cat d ; cat -n g
执行结果如下:
进行连续的 cat
操作,并使用 -n
选项对最后一个文件进行行号编号。
每个 cat
命令之间使用分号 ;
进行分隔。这样,命令将按顺序执行,并在终端上连续显示各个文件的内容。