前面的文章中,我们已经讲了很多Linux常用命令,对于使用该操作系统,差不多就够了,可以帮助我们完成各种任务。
目录
在使用Linux命令时,我们经常会遇到一些操作符,它们可以让我们更灵活地控制命令的输入和输出,或者组合多个命令。本文将介绍Linux常用命令中的几种常见的操作符,包括:
- 通配符
- 管道符
- 重定向
- 单引号
- 双引号
1.通配符
通配符是一种特殊的字符,可以匹配一个或多个文件或目录的名称。这些通配符,往往配合ls、find、cp、mv等命令使用。通配符可以让我们更方便地指定一组文件或目录,而不需要逐一列出它们的名称。Linux中常用的通配符有以下几种:
*
:匹配任意长度的任意字符,包括空字符。例如,
*.txt
可以匹配所有以.txt
结尾的文件,a*
可以匹配所有以a
开头的文件或目录,*a*
可以匹配所有包含a
的文件或目录。
?
:匹配任意一个字符,但不能是空字符。例如,
?.txt
可以匹配所有只有一个字符的文件,以.txt
结尾,如a.txt
,b.txt
等,但不能匹配.txt
。
[]
:匹配方括号中的任意一个字符,可以使用-
表示一个范围。例如,
[abc].txt
可以匹配a.txt
,b.txt
,c.txt
,[a-c].txt
和[abc].txt
的效果相同,[0-9].txt
可以匹配所有只有一个数字的文件,以.txt
结尾,如0.txt
,1.txt
等。
[^]
:匹配方括号中的任意一个字符以外的字符,可以使用-
表示一个范围。例如,
[^abc].txt
可以匹配所有不是a.txt
,b.txt
,c.txt
的文件,以.txt
结尾,[^a-c].txt
和[^abc].txt
的效果相同,[^0-9].txt
可以匹配所有不是只有一个数字的文件,以.txt
结尾,如x.txt
,ab.txt
等。
通配符的使用示例:
# 列出当前目录下所有以.txt结尾的文件
ls *.txt
# 列出当前目录下所有以a开头,以.txt结尾的文件
ls a*.txt
# 列出当前目录下所有只有一个字符,以.txt结尾的文件
ls ?.txt
# 列出当前目录下所有以a,b,c中的任意一个字符开头,以.txt结尾的文件
ls [abc]*.txt
# 列出当前目录下所有不以a,b,c中的任意一个字符开头,以.txt结尾的文件
ls [^abc]*.txt
2.管道符
管道符是一种特殊的操作符,用来将一个命令的输出作为另一个命令的输入。
管道符的符号是 |
,
它可以让我们将多个命令串联起来,实现更复杂的功能。例如,我们可以使用|
将ls
命令的输出传递给wc
命令,统计当前目录下有多少个文件或目录。
管道符的使用示例:
# 统计当前目录下有多少个文件或目录
ls | wc -l
# 统计当前目录下有多少个以.txt结尾的文件
ls *.txt | wc -l
# 统计当前目录下所有文件的总大小(字节)
ls -l | awk '{sum += $5} END {print sum}'
3.重定向
重定向是一种特殊的操作符,用来改变命令的输入或输出的来源或目的地。重定向可以让我们将命令的输出保存到文件中,或者从文件中读取命令的输入。Linux中常用的重定向操作符有以下几种:
>
:将命令的输出重定向到一个文件中,如果文件不存在,则创建文件,如果文件已存在,则覆盖文件原有的内容。例如,
echo "Hello World" > hello.txt
可以将Hello World
这个字符串输出到hello.txt
这个文件中,如果hello.txt
已存在,则原有的内容会被删除。
>>
:将命令的输出重定向到一个文件中,如果文件不存在,则创建文件,如果文件已存在,则追加到文件的末尾。例如,
echo "Hello World" >> hello.txt
可以将Hello World
这个字符串输出到hello.txt
这个文件中,如果hello.txt
已存在,则原有的内容会保留,Hello World
会添加到文件的末尾。
<
:将一个文件的内容作为命令的输入。例如,
cat < hello.txt
可以将hello.txt
这个文件的内容作为cat
命令的输入,显示在屏幕上。
<<
:将一个字符串作为命令的输入,直到遇到一个结束标志。例如,
cat << EOF
可以将EOF
之前的所有字符串作为cat
命令的输入,显示在屏幕上,直到遇到EOF
为止。
重定向的使用示例:
# 将当前日期和时间输出到date.txt文件中,覆盖原有内容
date > date.txt
# 将当前日期和时间输出到date.txt文件中,追加到末尾
date >> date.txt
# 将date.txt文件的内容作为cat命令的输入,显示在屏幕上
cat < date.txt
# 将EOF之前的所有字符串作为cat命令的输入,显示在屏幕上,直到遇到EOF为止
cat << EOF
This is a
multi-line
string
EOF
4.单引号
单引号是一种特殊的字符,用来将一段字符串包围起来,表示这段字符串是原样输出,不进行任何解释或替换。单引号中的所有字符都会被当作普通字符,不会被当作特殊字符或变量。
例如,echo '$PATH'
可以将$PATH
这个字符串原样输出,而不会输出环境变量PATH
的值。
单引号的使用示例:
# 输出$PATH这个字符串,而不是环境变量PATH的值
echo '$PATH'
# 输出*这个字符串,而不是匹配所有文件或目录的通配符
echo '*'
# 输出Hello World这个字符串,不会换行
echo 'Hello World\n'
5.双引号
双引号是一种特殊的字符,用来将一段字符串包围起来,表示这段字符串是部分解释或替换,只有部分特殊字符或变量会被解释或替换,其他的字符会被当作普通字符。
双引号中的 $
,\
,`
,!
等字符会被当作特殊字符,其他的字符会被当作普通字符。例如,echo "$PATH"
可以输出环境变量PATH
的值,而不是$PATH
这个字符串。
双引号的使用示例:
# 输出环境变量PATH的值,而不是$PATH
echo "$PATH"
# 输出*这个字符串,而不是匹配所有文件或目录的通配符
echo "*"
# 输出Hello World这个字符串,会换行
echo "Hello World\n"
# 输出当前日期和时间,使用反引号执行date命令
echo "Today is `date`"
以上就是Linux常用命令中的几种常见的操作符的介绍,希望对您有所帮助。
如果您觉得有些用处,欢迎在评论区留言,关注。谢谢您的阅读!
往期学习笔记: