搜尋
首頁運維linux運維linux中有哪些特殊字符

linux中有哪些特殊字符

Mar 30, 2023 am 11:30 AM
linux

linux的特殊字元:1、“#”註解字元;2、“~”,代表使用者的home目錄;3、“;”,是擔任“連續指令”功能的符號;4、“ /”,路徑目錄分隔符;5、“\”,轉義符;6、“|”,管道符;7、“.”,代表當前目錄;8、“..”,代表父目錄,也就是目前目錄的上一層目錄;9、“?”,指的是單字元通配符,代表檔案名稱中任意一個字元的匹配;10、“*”,代表任意字元序列,符合任意字元等。

linux中有哪些特殊字符

本教學操作環境:linux7.3系統、Dell G3電腦。

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.$$

上面这一行,相当于 cat /dev/null >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)

相当常用的符号。在文件名扩展(Filename expansion)上,她用来代表任何字元,包含 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.$$

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

ps: 基本上,系统会回收执行完毕的 PID,然后再次依需要分配使用。所以 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字元才能使用的场合,如运算式。

(( ))

这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 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也是相当好的一件事。尤其对输出输入的重导向上,这个做法可精简 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 '10\+9' 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中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。

  • * cmd >> file

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

  • * cmd

    使cmd命令从file读入

  • * cmd

    从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用

  • * cmd

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

  • * cmd file

    以读写模式把文件file重定向到输入,文件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视频教程

以上是linux中有哪些特殊字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux中的維護模式:何時以及為什麼使用它Linux中的維護模式:何時以及為什麼使用它Apr 25, 2025 am 12:15 AM

使用Linux維護模式的時機和原因:1)系統啟動問題時,2)進行重大系統更新或升級時,3)執行文件系統維護時。維護模式提供安全、控制的環境,確保操作的安全性和效率,減少對用戶的影響,並增強系統的安全性。

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。恢復模式允許你以單用戶模式啟動系統,進行文件系統檢查和修復、編輯配置文件等操作,幫助解決系統問題。

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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中