搜索
首页运维linux运维linux中的特殊字符及含义是什么

linux的特殊字符:1、“#”注释字符;2、“~”,代表用户的home目录;3、“;”,是担任“连续指令”功能的符号;4、“/”,路径目录分隔符;5、“”,转义符;6、“|”,管道符;7、“.”,代表当前目录;8、“..”,代表父目录,也就是当前目录的上一级目录;9、“?”,指的是单字符通配符,代表文件名中任意一个字符的匹配;10、“*”,代表任意字符序列,匹配任意字符等。

linux特殊符号使用及含义

#:

以 # 开头,代表这句话是注释。

#!/bin/bash 常出现在命令之前,或者命令之后,后面是注释文字,不会被执行
#当输入的命令不想被执行时输入(#)就行了
#This line is comments.(这是一行注释)

虽然上面那段话就被忽略了,但它还是会添加到您的命令历史记录中。

更厉害的做法如下:

先定义一个变量并给它赋值字符串 “amazing alvin”

this_string="amazing alvin"

linux中的特殊字符及含义是什么

${this_string#amazing} 返回的是被注释掉 amazing 的 this_string 字符串变量,可以 echo 输出看下结果:

echo awsome ${this_string#amazing}

amazing 只是被注释掉而已,它并未被删除,去掉注释它就回来了:

echo $this_string

linux中的特殊字符及含义是什么

~

~ 代表用户的home目录,指的是主目录,也就是我们用户的个人目录,无论你身在何方,输入 cd ~ 它将带你回家!

cd ~

linux中的特殊字符及含义是什么

更高端的玩法就是在它后面加上具体的路径,直接定位到家目录中的指定位置,是不是很方便呢?

cd ~/work/archive

linux中的特殊字符及含义是什么

;分号

分号是在shell中用来执行“连续指令”的符号。

这跟我们日常使用的 ";" 差不多,就不细说了,主要是用来分隔命令的。

ls > count.txt; wc -l count.txt; rm count.txt

linux中的特殊字符及含义是什么

这里注意,用 ; 分隔命令时,即使第一个命令失败,第二个命令也会运行,即使第二个命令失败,第三个命令也会运行,依此类推。

如果要在一个命令失败的情况下就停止,请使用 "&&" ,如下:

cd ./doesntexist && cp ~/Documents/reports/* .

linux中的特殊字符及含义是什么

;;连续分号 (Terminator)

专用在 case 的选项,担任 Terminator 的角色。

case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version 0.1" ;;esac

. dot

在 shell 中,使用者应该都清楚,一个 . 代表当前目录,两个 .. 代表上层目录

我们来看一下当前目录下的全部文件:

ls -al

linux中的特殊字符及含义是什么

红圈里的 . 就是指当前目录,不过这没什么意义,我们更多的是在命令中使用它,如下:

./script.sh

这样做是在告诉 bash 只要在当前目录中查找并执行 script.sh 文件就好了,不用在路径中找了。

linux中的特殊字符及含义是什么

假设我们要回到上一级目录:

cd ..

linux中的特殊字符及含义是什么

跟前面一样,你可以在它后面加具体的目录,这里的意思就是定位到与当前目录同级的其它目录:

cd ../projects/

linux中的特殊字符及含义是什么

‘string’ 单引号 (字符串单引号)

被单引号用括住的内容,将被视为单一字串。引号内的$符号被视为普通符号处理,不起变量替换的作用。

hello world=hello world echo '$hello world' # We get $hello world

“string” 双引号 (字符串双引号)

被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同

heyyou=homeecho "$heyyou" # We get home

command(命令) 倒引号 (反引号)

如果一串命令被单引号或双引号括起来,它将被视为字符串而不会被执行。要处理这种情况,我们得用倒单引号来做。

fdv=`date +%F`echo "Today $fdv"

在倒引号内的 date %F 会被视为指令,执行的结果会带入 fdv 变数中。

, 逗点 (comma,标点中的逗号)

这个符号常运用在运算当中当做"区隔"用途。例touch f{1,2,3}

/ 斜线 (forward slash):

在路径表示时,代表目录。通常单一的 / 代表 root 根目录的意思

斜杠 "/" 指的是路径目录分隔符,这里没什么好说的。

ls ~/work/tests/

linux中的特殊字符及含义是什么

但是,有意思的是,如果 / 路径目录分隔符前面没有东西的话,是不是就是意味着这是最上级的目录了?由于 Linux 系统的目录树均始于 / ,所以仅仅一个 / 代表了我们常说的系统根目录。

cd /

linux中的特殊字符及含义是什么

\ 倒斜线(转义符)

在交互模式下的escape 字元,有几个作用;放在指令前,有取消 aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。

# type rmrm is aliased to `rm -i'# \rm ./*.log

上例,我在 rm 指令前加上 escape 字元,作用是暂时取消别名的功能,将 rm 指令还原。

# bkdir=/home# echo "Backup dir, \$bkdir = $bkdir"Backup dir,$bkdir = /home

上例 echo 内的 \$bkdir,escape 将 $ 变数的功能取消了,因此,会输出 $bkdir,而第二个 $bkdir则会输出变数的内容 /home。

| 管道 (pipeline)

pipeline 是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。

who | wc -l

善用这个观念,对精简 script(脚本) 有相当的帮助

! 感叹号(negate or reverse)

通常代表反逻辑的作用,比如条件侦测中用,!= 来代表"不等于"

ls f[!1-9]代表显示除了f0, f1 .... f9 这几个文件的其他文件

:冒号

在 bash 中,这是一个内建指令:"什么事都不干",但返回状态值 0

echo $? # 回应为 0
: > f.$$

这句话可以重写为:上述语句的效果等同于将空数据输出重定向到文件f.$$。不仅写法简短了,而且执行效率也好上许多。

有时,也会出现以下这类的用法

: ${HOSTNAME?} ${USER?} ${MAIL?}

该行的功能是检查这些环境变量是否已设置,没有设置的环境变量将显示错误消息到标准错误输出。使用类似 test 或 if 这样的方法进行此类检查基本上也可行,但是无法与上一个例子的简洁和效率相比。

除了上述之外,还有一个地方必须使用冒号

PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla

在使用者自己的HOME 目录下的 .bash_profile或任何功能相似的档案中,设定关于"路径"的场合中,我们都使用冒号,来做区隔。

? 问号 (wild card)

在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元,但不包含 null 字元。

# ls a?a1

星号 (wild card)

相当常用的符号。她使用通配符来表示文件名扩展中的任何字符,包括 null 字符。

# ls a*a a1 access_log

在运算时,它则代表 "乘法"。

let "fmult=2*3"

除了内建指令 let,还有一个关于运算的指令expr,星号在这里也担任"乘法"的角色。不过在使用上得小心,他的前面必须加上escape 字元。

** 次方运算

两个星号在运算时代表 "次方" 的意思。

let "sus=2**3"echo "sus = $sus" # sus = 8

$ 美元

变量替换(Variable Substitution)的代表符号。

vrs=123echo "vrs = $vrs" # vrs = 123

另外,在 Regular Expressions 里被定义为 "行" 的最末端 (end-of-line)。这个常被用于grep、sed、awk以及vim(vi)之中。

${} 变量的正规表达式

bash 对 ${} 定义了不少用法。以下是取自线上说明的表列  

${parameter:-word}   ${parameter:=word}   ${parameter:?word}   ${parameter:+word}   ${parameter:offset}   ${parameter:offset:length}   ${!prefix*}   ${#parameter}   ${parameter#word}   ${parameter##word}   ${parameter%word}   ${parameter%%word}   ${parameter/pattern/string}   ${parameter//pattern/string}

$*

$* 引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,然后依此类推。引用变量的代表方式如下:

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}.....

个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住

$* 则是代表所有引用变量的符号。使用时,得视情况加上双引号。

echo "$*"

还有一个与 $* 具有相同作用的符号,但效用与处理方式略为不同的符号

¥@

$@ 与 $* 具有相同作用的符号,不过她们两者有一个不同点。

符号 $* 将所有的引用变量视为一个整体。

但符号 $@ 则仍旧保留每个引用变量的区段观念。

$#

这也是与引用变量相关的符号,她的作用是告诉你,引用变量的总数量是多少。

echo "$#"

$? 状态值 (status variable)

通常情况下,UNIX(Linux)系统的进程以调用系统调用exit()来终止。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。

一般指令程序倘若执行成功,其回传值为 0;失败为 1。

tar cvfz dfbackup.tar.gz /home/user > /dev/nullecho"$?"$$

因为进程的ID是独一无二的,所以在任何时候都不可能存在重复的PID。有时,script会需要产生临时文件,用来存放必要的资料。而此script亦有可能在同一时间被使用者们使用。在这种情况下,固定文件名在写法上就显的不可靠。唯有产生动态文件名,才能符合需要。符号$$或许可以符合这种需求。它代表当前shell 的 PID。

echo "$HOSTNAME, $USER, $MAIL" > ftmp.$$

使用它来作为文件名的一部份,可以避免在同一时间,产生相同文件名的覆盖现象。

通常情况下,操作系统将回收已经完成执行的进程ID,并在需要时重新分配使用。所以 script 即使临时文件是使用动态档名的写法,如果script 执行完毕后仍不加以清除,会产生其他问题。

( ) 指令群组 (command group)

把一系列连续的指令用括号括起来,这种在 shell 中的使用称为指令组。如下面的例子:(cd ~ ; vcgh=`pwd` ;echo $vcgh),指令群组有一个特性,shell会以产生 subshell来执行这组指令。因此,在其中所定义的变数,仅作用于指令群组本身。我们来看个例子

# cat ftmp-01#!/bin/basha=fsh(a=incg ; echo -e "\n $a \n")echo $a#./ftmp-01incgfsh

除了上述的指令群组,括号也用在 array 变数的定义上;另外也应用在其他可能需要加上escape字元才能使用的场合,如运算式。

(( ))

这一组符号内建于 bash 中,类似于 let 命令,可用于算术运算。所以,在执行效率上会比使用 let指令要好许多。

#!/bin/bash(( a = 10 ))echo -e "inital value, a = $a\n"(( a++))echo "after a++, a = $a"

{ } 大括号 (Block of code)

有时候 script 当中会出现,大括号中会夹着一段或几段以"分号"做结尾的指令或变数设定。

# cat ftmp-02#!/bin/basha=fsh{a=inbc ; echo -e "\n $a \n"}echo $a#./ftmp-02inbcinbc

这种用法与上面介绍的指令群组非常相似,但有个不同点,它在当前的 shell 执行,不会产生 subshell。

大括号也被运用在 "函数" 的功能上。在广义的解释中,单纯使用大括号的作用就像是一个没有显式命名的函数。因此,这样写 script也是相当好的一件事。特别是在重定向输入和输出方面,该方法可以简化脚本的复杂度。

此外,大括号还有另一种用法,如下

{xx,yy,zz,...}

这种大括号的组合,常用在字串的组合上,来看个例子

mkdir {userA,userB,userC}-{home,bin,data}

我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data,这几个目录。这组符号在适用性上相当广泛。能加以善用的话,回报是精简与效率。像下面的例子

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

如果不是因为支援这种用法,我们得写几行重复几次呀

[ ] 中括号

常出现在流程控制中,扮演括住判断式的作用。if [ "$?" != 0 ]thenecho "Executes error"exit1fi

这个符号在正则表达式中担任类似 "范围" 或 "集合" 的角色

rm -r 200[1234]

上例,代表删除 2001, 2002, 2003, 2004 等目录的意思

[[ ]]

这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与&& 逻辑等符号。

#!/bin/bashread akif [[ $ak > 5 || $ak< 9 ]]thenecho $akfi

|| 逻辑符号

这个会时常看到,代表 or 逻辑的符号

&& 逻辑符号

这个也会常看到,代表 and 逻辑的符号

& 后台工作

单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。

tar cvfz data.tar.gz data > /dev/null&

单字边界

在规则表达式中,这组符号被定义为表示"边界"的意义。譬如,当我们想找寻 the 这个单字时,如果我们用

grep the FileA

你会发现,像 there 这样的单个单词,也会被视为匹配的单词。因为 the 正巧是 there的一部份。为了避免这种情况发生,我们必须使用边界符号

grep &#39;\&#39; FileA
  • 加号 (plus)

在运算式中,她用来表示 "加法"。expr 1 + 2 + 3
此外在规则表达式中,用来表示"很多个"的前面字元的意思。
# grep &#39;10\+9&#39; fileB109100910000910000931010009#这个符号在使用时,前面必须加上escape 字元。
  • 减号 (dash)

在运算式中,她用来表示 "减法"。
expr 10 - 2
此外也是系统指令的选项符号。
ls -expr 10 - 2
在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表"标准输入"的意思。这是 GNU指令的共通选项。譬如下例
tar xpvf -
这里的 - 符号,既代表从标准输入读取资料。
不过,在 cd 指令中则比较特别
cd -
这代表变更工作目录到"上一次"工作目录。

% 除法 (Modulo)

在运算式中,用来表示 "除法"。

expr 10 % 2

此外,也被运用在关于变量的规则表达式当中的下列

${parameter%word}${parameter%%word}

一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。

= 等号 (Equals)

常在设定变数时看到的符号。

vara=123echo " vara = $vara"

或者像是 PATH 的设定,甚至应用在运算或判断式等此类用途上。

== 等号 (Equals)

常在条件判断式中看到,代表 "等于" 的意思。

if [ $vara == $varb ]...下略

!= 不等于

常在条件判断式中看到,代表 "不等于" 的意思。

if [ $vara != $varb ]...下略

^

这个符号在规则表达式中,代表行的 "开头" 位置,在[]中也与"!"(叹号)一样表示“非”

输出/输入重导向

>      >>     &>   2&>   2>&   >&2

文件描述符(File Descriptor),用一个数字(通常为0-9)来表示一个文件。

常用的文件描述符如下:

文件描述符          名称         常用缩写     默认值
     0               标准输入      stdin            键盘
     1               标准输出      stdout         屏幕
     2            标准错误输出   stderr          屏幕

我们在简单地用时,相当于使用 0(下面会详细介绍)。

  • * cmd > file

    把cmd命令的输出重定向到文件file中。使用bash的noclobber选项可以防止覆盖已有文件,如果文件已经存在,则会显示错误信息并保留原文件内容。

  • * cmd >> file

    把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。

  • * cmd

    使cmd命令从file读入

  • * cmd

    从命令行读取输入,直到一个与text相同的行结束。若要防止shell变量替换,必须使用引号将输入括起来。如果使用

  • * cmd

    把word(而不是文件word)和後面的换行作为输入提供给cmd。

  • * cmd file

    通过将文件file重定向到stdin/stdout以读写模式打开,可以避免对文件file的破坏。仅当应用程序利用了这一特性时,它才是有意义的。

  • * cmd >| file

    功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。

  • : > filename      把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).

  • cmd >&n 把输出送到文件描述符n

  • cmd m>&n 把输出 到文件符m的信息重定向到文件描述符n

  • cmd >&- 关闭标准输出

  • cmd

  • cmd m

  • cmd

  • cmd

  • cmd >&n- 移动输出文件描述符 n而非复制它。(需要解释)

注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。

以上是linux中的特殊字符及含义是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
Linux:基本命令和操作Linux:基本命令和操作Apr 24, 2025 am 12:20 AM

Linux中不可或缺的命令包括:1.ls:列出目录内容;2.cd:改变工作目录;3.mkdir:创建新目录;4.rm:删除文件或目录;5.cp:复制文件或目录;6.mv:移动或重命名文件或目录。这些命令通过与内核交互执行操作,帮助用户高效管理文件和系统。

Linux操作:管理文件,目录和权限Linux操作:管理文件,目录和权限Apr 23, 2025 am 12:19 AM

在Linux中,文件和目录管理使用ls、cd、mkdir、rm、cp、mv命令,权限管理使用chmod、chown、chgrp命令。1.文件和目录管理命令如ls-l列出详细信息,mkdir-p递归创建目录。2.权限管理命令如chmod755file设置文件权限,chownuserfile改变文件所有者,chgrpgroupfile改变文件所属组。这些命令基于文件系统结构和用户、组系统,通过系统调用和元数据实现操作和控制。

Linux中的维护模式是什么?解释了Linux中的维护模式是什么?解释了Apr 22, 2025 am 12:06 AM

MaintenancemodeInuxisAspecialBootenvironmentforforcalsystemmaintenancetasks.itallowsadMinistratorStoperFormTaskSlikerSettingPassingPassingPasswords,RepairingFilesystems,andRecoveringFrombootFailuresFailuresFailuresInamInimAlenimalenimalenrenmentrent.ToEnterMainterMainterMaintErmaintErmaintEncemememodeBoode,Interlecttheboo

Linux:深入研究其基本部分Linux:深入研究其基本部分Apr 21, 2025 am 12:03 AM

Linux的核心组件包括内核、文件系统、Shell、用户空间与内核空间、设备驱动程序以及性能优化和最佳实践。1)内核是系统的核心,管理硬件、内存和进程。2)文件系统组织数据,支持多种类型如ext4、Btrfs和XFS。3)Shell是用户与系统交互的命令中心,支持脚本编写。4)用户空间与内核空间分离,确保系统稳定性。5)设备驱动程序连接硬件与操作系统。6)性能优化包括调整系统配置和遵循最佳实践。

Linux体系结构:揭示5个基本组件Linux体系结构:揭示5个基本组件Apr 20, 2025 am 12:04 AM

Linux系统的五个基本组件是:1.内核,2.系统库,3.系统实用程序,4.图形用户界面,5.应用程序。内核管理硬件资源,系统库提供预编译函数,系统实用程序用于系统管理,GUI提供可视化交互,应用程序利用这些组件实现功能。

Linux操作:利用维护模式Linux操作:利用维护模式Apr 19, 2025 am 12:08 AM

Linux的维护模式可以通过GRUB菜单进入,具体步骤为:1)在GRUB菜单中选择内核并按'e'编辑,2)在'linux'行末添加'single'或'1',3)按Ctrl X启动。维护模式提供了一个安全环境,适用于系统修复、重置密码和系统升级等任务。

Linux:如何进入恢复模式(和维护)Linux:如何进入恢复模式(和维护)Apr 18, 2025 am 12:05 AM

进入Linux恢复模式的步骤是:1.重启系统并按特定键进入GRUB菜单;2.选择带有(recoverymode)的选项;3.在恢复模式菜单中选择操作,如fsck或root。恢复模式允许你以单用户模式启动系统,进行文件系统检查和修复、编辑配置文件等操作,帮助解决系统问题。

Linux的基本要素:为初学者解释Linux的基本要素:为初学者解释Apr 17, 2025 am 12:08 AM

Linux的核心组件包括内核、文件系统、Shell和常用工具。1.内核管理硬件资源并提供基本服务。2.文件系统组织和存储数据。3.Shell是用户与系统交互的接口。4.常用工具帮助完成日常任务。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境