linux特殊命令(shell特殊字符转义)

linux特殊命令(shell特殊字符转义)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-03-29
文章简介

linux的特殊字符:1、“开头,代表这句话是注释。#!/bin/bash常出现在命令之前,或者命令之后,后面是注释文字,不会被执行 bkdir=/home#echo"Backupdir,$b

2025阿里云双十一服务器活动

linux的特殊字符:1、“开头,代表这句话是注释。

#!/bin/bash常出现在命令之前,或者命令之后,后面是注释文字,不会被执行

bkdir=/home#echo"Backupdir,$bkdir=$bkdir"Backupdir,$bkdir=/home

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

|管道(pipeline)

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

who|wc-l

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

!感叹号(negateorreverse)

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

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

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

:>f.$$

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

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

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

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

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

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

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

?问号(wildcard)

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

lsa*aa1access_log

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

let"fmult=2*3"

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

**次方运算

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

let"sus=2**3"echo"sus=$sus"vrs=123

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

${}变量的正规表达式

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

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

$*

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

$0,$1,$2,$3,$4,$5,$6,$7,$8,$9,,.....

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

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

echo"$*"

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

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

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

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

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

echo"$catftmp-01#!/bin/basha=fsh(a=incg;echo-e"

")echo$a!/bin/bash((a=10))echo-e"initalvalue,a=$a

"((a++))echo"aftera++,a=$a"

{}大括号(Blockofcode)

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

!/bin/basha=fsh{a=inbc;echo-e"

"}echo$a!/bin/bashreadakif[[$ak>5||$ak<9]]thenecho$akfi

||逻辑符号

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

&&逻辑符号

linux特殊命令,shell特殊字符转义

&后台工作

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

tarcvfzdata.tar.gzdata>/dev/null&

<…>单字边界

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

greptheFileA

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

grep'\'FileA

  • 加号(plus)

  • 在运算式中,她用来表示"加法"。expr1+2+3

    此外在规则表达式中,用来表示"很多个"的前面字元的意思。

    这个符号在使用时,前面必须加上escape字元。

  • 减号(dash)

  • 在运算式中,她用来表示"减法"。

    此外也是系统指令的选项符号。

    在GNU指令中,如果单独使用-符号,不加任何该加的文件名称时,代表"标准输入"的意思。这是GNU指令的共通选项。譬如下例

    这里的-符号,既代表从标准输入读取资料。

    这代表变更工作目录到"上一次"工作目录。

    %除法(Modulo)

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

    expr10%2

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

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

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

    =等号(Equals)

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

    vara=123echo"vara=$vara"

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

    ==等号(Equals)

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

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

    !=不等于

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

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

    ^

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

    输出/输入重导向

    >>><<<:>&>2&>2<>>&>&2

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

    文件描述符名称常用缩写默认值

    2标准错误输出stderr屏幕

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

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

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

  • 从命令行读取输入,直到一个与text相同的行结束。若要防止shell变量替换,必须使用引号将输入括起来。如果使用<<-,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。

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

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

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

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

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

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

  • cmd<&n输入来自文件描述符n

  • cmdm<&nm来自文件描述各个n

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

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

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

    以上就是linux中的特殊字符及含义是什么的详细内容,更多请关注主机测评网其它相关文章!

    标签:
    租韩国服务器多少钱一个月(游戏服务器租用多少钱一年)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!