Linux 终端特殊符号含义大全

Linux特殊符号使用及含义

总结

Linux 终端中有许多特殊符号,本文对常用的进行了总结:

  1. $ 表示变量/普通终端用户:用于引用变量的值/表示终端中的普通用户。
  2. # 表示注释/超级用户:用于在脚本中注释代码/表示终端中的超级用户。
  3. / :根目录/目录分隔符。
  4. ~ :当前用户的主目录。
  5. . :当前目录。
  6. .. :上级目录。
  7. < 输入重定向符号:将指定文件内容输入到命令中。
  8. > 输出重定向符号:将命令输出重定向到指定文件。
  9. >> 输出追加符号:用于将命令的输出追加到文件末尾。
  10. << 输入追加符号:一般用于输入多行文本。
  11. ; 命令分隔符:可以在一行中执行多个命令。
  12. : 值/路径分隔符:分割标签和值,或者分割路径,在bash脚本中表示无操作。
  13. & 后台运行符号:将命令放到后台运行。
  14. | 管道符号:将一个命令的输出作为另一个命令的输入。
  15. && 多命令符号:用于在同一行上执行多个命令。它表示只有当前一个命令成功执行后,才会执行下一个命令。
  16. || 多命令符号:用于在同一行上执行多个命令,它表示只有当前一个命令执行失败时,才会执行下一个命令。
  17. \ 转义符号:用于转义特殊字符。
  18. ! 表示历史命令:用于执行历史命令。
  19. ^ 脱字符:表示控制字符,用于快速替换前面指令或者进行正则匹配。
  20. () 子命令符号:用于在当前 shell 中执行子命令。
  21. * 通配符:表示任意个任意字符。
  22. ? 通配符:表示一个任意字符。
  23. [] 字符集合:用于匹配指定字符集合中的任意一个字符。
  24. {} 大括号符号:用于扩展字符串或命令序列。

终端特殊符号

$ 普通用户

$ 符号是Linux终端中的一个提示符,它通常出现在命令行的开头。它的作用是提示用户可以输入命令了。当你看到 $ 符号出现在命令行上时,就表示系统准备好了接受你的输入,你可以输入任何有效的命令。

另外, $ 还可以用于表示当前用户是普通用户而非超级用户(即 root 用户)。如果当前用户是 root 用户,命令提示符会变成 #

除此之外,在Linux中,$ 符号还通常用于表示环境变量的值。环境变量是一些系统级别的变量,它们可以在整个系统中被访问和使用,其中存储了一些重要的信息,例如系统路径,当前用户,当前工作目录等。使用 $ 符号,我们可以方便地访问这些变量。

以下是一些示例:

  1. $HOME 变量:它指向当前用户的主目录。例如,如果当前用户是“bob”,那么 $HOME 将是“/home/bob”。
  2. $PATH 变量:它包含了一系列目录,用于查找可执行程序。当你在终端中输入一个命令时,系统会在这些目录中查找该命令的可执行文件。例如,如果你想在终端中运行“ls”命令,那么系统会在 $PATH 变量中列出的目录中查找“ls”可执行文件。
  3. $USER 变量:它指向当前登录的用户。例如,如果当前用户是“bob”,那么 $USER 将是“bob”。
  4. $PWD 变量:它指向当前工作目录。例如,如果你在“/home/bob”目录下运行终端,那么 $PWD 将是“/home/bob”。

你可以在终端中使用“echo”命令来显示这些变量的值,例如:

echo $HOME
echo $PATH
echo $USER
echo $PWD

这些命令将会分别输出当前用户的主目录、系统的可执行路径、当前登录的用户名和当前工作目录。

image-20230520225155502

可以通过 printenv 查看所有环境变量,printenv 是一个 Linux 命令,用于打印出当前 shell 环境中的所有环境变量及其值。它的使用方法很简单,只需在终端输入 printenv 即可:

image-20230520225429504

# 超级用户

在Linux系统中, $ 符号通常表示普通用户的命令行界面,而 # 符号则表示超级用户的命令行界面。普通用户通常只有执行命令的权限,而超级用户则具有更高的权限,可以执行更高级别的操作,比如修改系统配置文件等,一般需要使用 sudo 或 su 命令切换到 root 权限后才能使用。

~ 当前用户家目录

在Linux终端中, ~ (波浪号)符号代表当前用户的家目录。家目录是每个用户在Linux系统中的默认工作目录,当用户登录到系统后,终端会自动切换到该用户的家目录。

例如,如果当前登录的用户是“user”,那么 ~ 符号就代表“/home/user”目录。在终端中输入 cd ~ 命令就可以切换到当前用户的家目录。

此外, ~ 符号还可以与其他路径组合使用,表示相对于当前用户家目录的路径。例如, ~/Documents 表示当前用户家目录下的Documents子目录。

/ 目录分隔符

在Linux中,符号“/”代表文件路径的分隔符。在文件系统中,每个文件和目录都有一个唯一的文件路径,文件路径是由“/”符号分隔的一系列目录和文件名组成的字符串。

例如, “/home/user/Documents/file.txt” 是一个文件路径,其中“/”表示根目录,“home”是根目录下的一个子目录,“user”是“home”目录下的子目录,“Documents”是“user”目录下的子目录,“file.txt”是“Documents”目录下的文件。

在命令行中,用户可以使用“/”来指定文件路径,例如:

cd /home/user/Documents

将进入“Documents”目录。

. 当前目录

. :表示当前目录,例如 ./file.txt 表示当前目录下的 file.txt 文件。,也可以使用 $PWD 表示

.. 上级目录

..:表示上一级目录,例如 ../ 表示返回上一级目录。

< 输入重定向

< :将一个文件的内容作为命令的输入。例如,sort < file.txt 将file.txt文件的内容作为sort命令的输入。

> 输出重定向

> :表示重定向符,用于将命令的输出重定向到文件中,会覆盖原有的内容。例如,ls > file.txt 将ls命令的输出写入file.txt文件中,如果文件不存在则会创建它,如果存在则会覆盖原有内容。

输出重定向还有很多种其它用法:

  • 2> :将命令的错误输出重定向到一个文件中。例如,ls /invalid_dir 2> error.txt 将ls命令的错误信息写入error.txt文件中。
  • &> :将命令的输出和错误输出都重定向到一个文件中。例如,ls /invalid_dir &> output.txt 将ls命令的输出和错误信息都写入output.txt文件中。

<< 输入追加重定向

<< 是 Linux 中的一个输入重定向符号,也称为“Here Document”,一般用于输入多行文本。它的作用是将 shell 中的一段输入作为命令或脚本的输入,并用一个特定的标识符(可以是任意字符串)来表示输入的结束。具体来说,它可以将一段文本作为标准输入传递给命令或脚本,而不需要手动逐行输入。

例如,假设我们要向一个名为 output.txt 的文件中写入三行文本。如果我们使用 echo 命令逐行输出,则需要输入三次命令,如下所示:

echo "This is line 1" > output.txt
echo "This is line 2" >> output.txt
echo "This is line 3" >> output.txt

但是,如果我们使用 << 符号,我们可以在一次命令中输入所有三行文本,如下所示:

cat << EOF > output.txt
This is line 1
This is line 2
This is line 3
EOF

这种方式可以让我们更快速、更方便地输入多行文本,并且对于需要输入大量文本的场景非常有用。

image-20230520230719692

>> 输出追加重定向

>> :表示追加重定向符,用于将命令的输出追加到文件末尾,不会覆盖原有的内容。例如,echo “hello” >> file.txt 将”hello”追加到file.txt文件的末尾。

; 命令分隔符

; :表示命令分隔符,可以在同一行输入多个命令,用分号隔开。当您在同一行上输入多个命令并用分号分隔它们时,Linux会按顺序执行这些命令。

例如,以下命令将创建一个名为 test 文件夹,并在其中创建一个名为 file.txt 的文本文件:

mkdir test; cd test; touch file.txt

这个命令将被解释为三个独立的命令:先创建一个名为 test 的文件夹,再进入该文件夹,最后在其中创建一个名为 file.txt 的空文件。

需要注意的是,分号不支持命令的逻辑控制,如if语句、循环结构等。如果需要这样的控制,请使用其他命令分隔符,如双竖线(||)或双与号(&&)。

: 值/路径分隔符

在Linux中,冒号 (:) 可以具有以下几种作用:

  1. 标签和值分隔符:在一些配置文件或脚本中,冒号用作标签和值之间的分隔符。
    例如, /etc/passwd 用于存储用户账户的信息,每一行由多个字段组成,字段之间使用冒号分隔: username:password:uid:gid:home_directory:shell
  2. 环境变量的分隔符:在环境变量中,特别是 PATH 这样的变量中,冒号用作路径分隔符。它将多个路径分开,指定在执行命令时搜索可执行程序的顺序。
    例如,PATH 变量可以包含多个路径,如 /usr/local/bin:/usr/bin:/bin。当执行命令时,系统会按照从左到右的顺序在这些路径中查找可执行程序。
  3. 空操作(占位符):在某些脚本和编程语言中,冒号可以用作无操作(no operation),表示不执行任何实际操作,只是作为一个占位符或空操作。
    例如,在Bash脚本中,: 可以用作 true 命令的替代,表示条件始终为真,如:
if [ condition ]; then
  :
else
  command
fi

这样可以在某些情况下用于占位或暂时禁用一些代码逻辑。

image-20230522150114975

& 后台运行符

& :表示后台运行符,可以 将命令放到后台运行 。具体地说,当你在终端中输入一个命令并在结尾处添加 & 时,这个命令将会在后台运行,也就是说,你可以继续在终端中输入其他的命令,而不必等待这个命令执行完成。

举个例子,如果你想要启动一个长时间运行的进程,但不想让它占用你的终端,你可以将它放入后台运行,如下所示:

my-long-running-process &

这样,该进程将在后台运行,而你可以在同一个终端中继续输入其他的命令。需要注意的是,如果你在后台运行的命令输出了任何信息,它们将会直接输出到终端上,可能会干扰你正在输入的其他命令。

| 管道符

| :表示管道符,用于将一个命令的输出作为另一个命令的输入,从而 实现两个或多个命令的组合 。例如,如果你想在Linux系统中列出某个目录中的所有文件并按文件大小排序,可以使用以下命令:

ls -l | sort -k 5 -n

其中, ls -l 命令列出目录中的所有文件,而 sort -k 5 -n 命令按照第五列(即文件大小)进行排序。通过使用管道符号“|”,这两个命令可以组合起来,以便将“ls”命令的输出传递给“sort”命令的输入。这样,你就可以在一行命令中完成两个操作。

&& (成功)则执行多命令

&& 是Linux终端中的一个符号,用于在同一行上执行多个命令。它表示只有当前一个命令成功执行后,才会执行下一个命令。例如,如果你想要在终端中同时执行两个命令,比如更新软件包并清除无用的软件包,你可以使用以下命令:

sudo apt-get update && sudo apt-get autoremove

这条命令将首先更新软件包,然后 只有在更新成功后才会运行自动删除命令 。这样可以确保所有命令都成功执行,而不会出现意外的错误。

|| (失败)则执行多命令

在Linux终端中,|| 是一个逻辑运算符,表示“或者”的含义。它用于将两个条件连接起来,如果其中一个条件成立,整个表达式就成立。在终端中,|| 通常用于构建命令行语句,以确保只有前一个命令执行失败时,才会执行下一个命令。例如,如果要在终端中运行两个命令,但只有在第一个命令失败时才运行第二个命令,可以使用以下命令:

command1 || command2

如果 command1 执行成功,则 command2 不会被执行;如果 command1 执行失败,则 command2 会被执行。

! 执行历史命令

在 Linux 终端中, ! 符号用于执行之前执行过的命令历史记录中的命令。以下是一些例子:

  1. 重复执行上一条命令:使用 !! 命令可以快速重复上一条命令,例如:

    $ ls -l
    total 0
    $ !!
    total 0
    
  2. 重复执行命令历史记录中的某个命令:使用 ! 命令加上命令的编号可以重复执行命令历史记录中的任意一条命令,例如:

    $ history
      1  ls -l
      2  cd ..
      3  pwd
    $ !2
    cd ..
    

    上面的例子中,!2 表示执行历史记录中的第二条命令。

    image-20230520231309097

  3. 重复执行以某个字符串开头的命令:使用 ! 命令加上命令的部分字符串可以重复执行以该字符串开头的命令,例如:

    $ ls -l
    total 0
    $ !ls
    total 0
    

    上面的例子中, !ls 表示执行最近一次以 ls 开头的命令,即 ls -l

通过使用 “!” 符号,我们可以更加高效地使用命令行界面,省去了重复输入相同命令的时间和精力。

^ 脱字符

在Linux终端中, ^ 符号是一个特殊的字符,表示“脱字符”,,它有多种用途:

  1. 用于表示一个控制字符:例如, ^C 表示Ctrl+C键的组合,^D 表示Ctrl+D键的组合。

如果要在Linux终端中表示一个控制字符,可以使用 ^ 符号加上对应控制字符的字母表示。例如, ^C 表示Ctrl+C控制字符,^D 表示Ctrl+D控制字符。

例如,如果想在终端中输入Ctrl+C控制字符,可以按下Ctrl+V,然后再按下Ctrl+C,此时终端会显示一个”^C”表示成功输入了控制字符。

  1. 用于快速修改命令行: 在终端中输入一个命令,但是发现其中有一个错误,可以使用 ^ 符号来快速修改。例如,输入命令 “cd /user/local/bin”,但是正确的目录名是 “usr”,那么可以在终端中输入 “^/user/usr”,就会自动修改为 “cd /usr/local/bin”。

另外, ^ 符号还可以用于在命令中引用之前执行的命令的参数。具体来说, ^ 后面跟着一个数字 n,表示引用之前执行的命令中的第 n 个参数。

例如,假设我们之前执行了以下命令:

ls -l /usr/bin

现在,如果我们想要再次执行这个命令,但是将 “/usr/bin” 替换为 “/usr/sbin”,我们可以使用 “^” 符号来引用之前执行的命令中的参数。具体来说,我们可以键入以下命令:

^bin^sbin

这个命令中的 “binsbin” 表示将之前命令中的 “bin” 替换为 “sbin”。执行该命令后,终端会自动将之前执行的命令替换为新的命令,并执行新的命令,输出结果如下:

ls -l /usr/sbin

这就是 ^ 符号的作用。它可以帮助我们快速引用之前执行的命令中的参数,从而避免重复输入相似的命令。

image-20230520231829537

  1. 用于匹配行首: 在正则表达式中, ^ 符号表示匹配行首。它可以用于快速定位和操作行首的文本。

举个例子,假设我想要在一个文件中查找以字母”t”开头的行,那么我可以使用下面的命令:

grep "^t" filename

这个命令使用了 ^ 符号来匹配行首,然后再跟上要匹配的字符 t 。这样,grep 就会在文件中查找以字母 t 开头的行,并将它们输出到终端上。

\ 转义符

\ :表示转义符,它可以 对特殊字符进行转义 ,使其具有特殊的含义。下面是一些例子:

  1. 转义字符本身:如果你需要在命令行中使用“\”字符,你需要使用“\”来表示。例如,要创建一个名为“test\file”的文件夹,你可以使用以下命令:

    mkdir test\\file
    
  2. 换行符:如果你想在命令行中换行,你可以使用“\n”来表示。例如,要在命令行中打印两行文本,你可以使用以下命令:

    echo "This is the first line.\nThis is the second line."
    
  3. 空格:有时候你需要在文件或文件夹名中使用空格,但是空格在命令行中会被解释成参数的分隔符。在这种情况下,你可以使用“\”来转义空格。例如,要打开名为“my folder”的文件夹,你可以使用以下命令:

    cd my\ folder/
    

注意:在使用转义符时,务必小心。如果你不小心把它们放错了位置,可能会导致命令无法正确执行。

" 扩展引用字符串

" :表示引用字符串,可以将其中的内容作为一个整体传递给命令。在双引号中,可以使用转义字符(\)来转义一些特殊字符,比如$和\等,使它们失去原有的特殊含义,而变成普通字符。

例如,以下命令将在终端中打印出Hello, World!:

echo "Hello, World!"

在双引号中也可以使用变量,例如:

name="John"
echo "My name is $name"

这将在终端中打印出 My name is John 。需要注意的是,在双引号内使用变量时,变量名前面必须加上$符号。

image-20230520222420079

' 不扩展引用字符串

' :也表示表示引用字符串,但它和双引号的区别是将字符串中的 所有字符视为普通字符,不进行任何转义或变量替换 。例如,如果我们要定义一个包含特殊字符的字符串,如$、*、?等,可以使用单引号将其包围,以避免特殊字符被解释为变量或通配符:

echo 'Hello $USER, the current directory is: $PWD'

在上述示例中,单引号将整个字符串包围,因此 $USER$PWD 不会被解释为变量,而是作为普通字符输出。输出结果如下:

Hello $USER, the current directory is: $PWD

() 创建子shell

在Linux终端中,括号符号 () 通常用来 创建子 shell 。这意味着命令在一个子 shell 中运行,而不是在当前 shell 中运行。例如,如果您要在当前目录中创建一个名为“test”的文件夹,并切换到该文件夹中,您可以使用以下命令:

pwd && (cd /etc && pwd)

在这个命令中, () 符号将 cd /etc && pwd 命令放入一个子 shell 中。这意味着 cd /etc 命令只会在子 shell 中运行,而不会影响当前 shell 的工作目录。因此,pwd 命令将显示etc 的完整路径。

image-20230520223219986

另一个例子是,如果您要在当前 shell 中设置一个环境变量,但只想让它在一次命令中生效,您可以使用括号符号将该命令放入一个子 shell 中。例如:

(export MYVAR="Hello world"; echo $MYVAR)

这个命令将设置一个名为 MYVAR 的环境变量,将其值设置为 "Hello world" ,并将其打印到终端上。由于命令在子 shell 中运行,所以 MYVAR 变量只在该命令执行期间存在

* 多字符通配符

在 Linux 终端中,星号 * 是通配符符号,也称为通配符。它可以代表 任何字符或任何长度的字符序列 。星号通常用于文件名扩展和搜索中,例如:

  • 列出所有以 “.txt” 结尾的文件:

    ls *.txt
    
  • 删除所有以 “.bak” 结尾的文件:

    rm *.bak
    
  • 查找包含 “hello” 文字的所有文件:

    grep "hello" *
    

在这些例子中,星号通配符将匹配所有符合条件的文件名,并且在执行命令前被扩展成实际的文件名。

? 单字符通配符

在Linux终端中, ? 符号代表通配符,可以匹配任意一个字符。当你在终端中输入一个命令时,如果需要匹配一定数量的字符,但是你并不确定这些字符是什么,那么你可以使用 ? 符号来代替这些字符。例如,如果你想查找以“file”开头、 后面跟着一个任意字符 、然后是“.txt”结尾的文件,你可以使用以下命令:

ls file?.txt

这个命令将会列出所有符合该模式的文件。

[] 条件匹配

在 Linux 终端中,输入 [] 通常用于匹配一组字符中的任意一个字符。这种匹配方式称为字符类,它允许我们在一个字符集合中指定多个字符,然后匹配其中的任意一个字符。

举个例子,假设我们在当前目录下有以下文件:

file1.txt file2.txt file3.jpg file4.png

如果我们想要列出所有以 .txt 结尾的文件,可以使用以下命令:

ls *[.]txt

这个命令中,[] 括起来的 ., 表示匹配点号本身,而不是任意一个字符。在字符类中,我们可以指定多个字符,使用 - 来表示范围。例如,如果我们想要匹配所有小写字母和数字,可以使用 [a-z0-9]。如果我们想要匹配所有大写字母和小写字母,可以使用 [A-Za-z]

总之,[] 在 Linux 终端中是非常常见的用法之一,可以用于匹配文件名、搜索文本等等。


如有疑问或错误,欢迎和我私信交流指正。
版权所有,未经授权,请勿转载!
Copyright © 2023.05 by Mr.Idleman. All rights reserved.

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月7日
下一篇 2023年12月7日

相关推荐