0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

shell命令格式和特殊字符

CHANBAEK ? 來源:嵌入式攻城獅 ? 作者: 安迪西 ? 2023-04-18 15:04 ? 次閱讀

1. shell簡介

shell可直譯為“貝殼”,貝殼是動物作為外在保護(hù)的一種工具。 可以理解為:Linux中的 shell就是 Linux內(nèi)核的一個外層保護(hù)工具,并負(fù)責(zé)完成用戶與內(nèi)核之間的交互。

命令是用戶向系統(tǒng)內(nèi)核發(fā)出控制請求,與交互的文本流。 而 shell是一個命令行解釋器,將用戶命令解析為操作系統(tǒng)所能理解的指令,實(shí)現(xiàn)用戶與操作系統(tǒng)的交互。 當(dāng)需要重復(fù)執(zhí)行若干命令,可以將這些命令集合起來,加入一定的控制語句,編輯成為 shell腳本文件,交給 shell批量執(zhí)行。

圖片

最初的 UNIX shell經(jīng)過多年的發(fā)展,由不同的機(jī)構(gòu)、針對不同的目錄,開發(fā)出許多不同類型的 shell程序,目前流行的 shell主要有以下幾種:

  • Bourne Shell(sh):由 AT&T的 Steve Bourne開發(fā),是第一個流行的 shell,是 UNIX上的標(biāo)準(zhǔn) shell。 不過 sh的作業(yè)控制功能薄弱,且不支持別名與歷史記錄等功能
  • C Shell(csh):sh之后另一個廣為流傳的 shell,由柏克萊大學(xué)的 Bill Joy設(shè)計,語法有點(diǎn)類似 C語言,其內(nèi)部命令有52個,較為龐大。 但目前使用的不多
  • Korn Shell(ksh):由AT&T 的David Korn開發(fā),語法與 sh相同,同時具備 csh的易用特點(diǎn)。 許多安裝腳本都使用 ksh,有42條內(nèi)部命令,但與 bash 相比有一定的限制性
  • Bourne Again Shell(bash):由 GNU組織開發(fā),保持了對 sh的兼容性,是各種Linux發(fā)行版默認(rèn)配置的shell。 能夠提供環(huán)境變量以配置用戶 shell環(huán)境,支持歷史記錄,內(nèi)置算數(shù)功能,支持通配符表達(dá)式,將常用命令內(nèi)置簡化

2. shell命令格式

2.1 shell命令提示符

shell提示符標(biāo)識了命令行的開始。 用戶在提示符后面輸入一條命令并按 Enter鍵,完成向系統(tǒng)提交命令。 通常 shell命令提示符采用以下格式:

username@hostname:direction$
用戶名     主機(jī)名     目錄名
  • username:用戶名,顯示當(dāng)前登錄用戶的賬戶名(執(zhí)行命令 whoami)
  • hostname:主機(jī)名,顯示登錄的主機(jī)名(執(zhí)行命令 hostname)
  • direction:目錄名,顯示當(dāng)前所處的路徑,根目錄下顯示為“/”,主目錄下顯示為“~“(執(zhí)行命令 pwd)

2.2 shell命令格式

通常一條 shell命令包含三個要素:命令名稱、選項(xiàng)、參數(shù)。 命令名稱是必須的,選項(xiàng)和參數(shù)都可選項(xiàng)。 格式如下:

$ Command [-Options] Argument1 Argument2...
    指令      選項(xiàng)      參數(shù)1     參數(shù)2 ...
  • :shell提示符,若為超級用戶,提示符為“#”,其他用戶的提示符均為“”
  • Command:命令名稱,shell命令或程序,嚴(yán)格區(qū)分大小寫
  • Options:命令選項(xiàng),用于改變命令執(zhí)行類型,由“-”引導(dǎo),可同時帶多個選項(xiàng)
  • Argument:命令參數(shù),指出命令作用的對象或目標(biāo),允許帶多個參數(shù)

一條命令的三要數(shù)之間用空格隔開; 若將多個命令在一行書寫,用分號(;)將各命令隔開; 如果一條命令不能在一行寫完,在行尾使用反斜杠()表明該條命令未結(jié)束。

2.3 shell命令初體驗(yàn)

使用shell命令,關(guān)閉或重啟系統(tǒng)

sudo shutdown -h now	#系統(tǒng)立即關(guān)機(jī)
sudo shutdown -r now	#系統(tǒng)立即重啟
sudo reboot now			 #系統(tǒng)立即重啟
sudo shutdown -h +45 "That is all!" #系統(tǒng)45分鐘后關(guān)機(jī)
sudo shutdown -r +60	               #系統(tǒng)60分鐘后重啟

3. shell中的特殊字符

3.1 shell中的通配符

當(dāng)需要用命令處理一組文件,例如 file.txt、file2.txt、file3.txt…,用戶不必一一輸入文件名,可使用 shell通配符。 shell命令的通配符含義如下表

圖片

3.2 shell中的管道

管道可以把一系列命令鏈接起來,意味著第一個命令的輸出將作為第二個命令的輸入,通過管道傳遞給第二個命令,第二個命令的輸出又將作為第三個命令的輸入,以此類推。 就像通過使用“|” 符連成一個管道。

ls /use/bin | wc -w
1249

以上操作中,借助管道“|”,將 ls的輸出直接作為 wc命令的輸入。 使用管道可以巧妙的將一些命令聯(lián)合使用,得到單個命令所無法實(shí)現(xiàn)的效果。 例如使用以上的命令組合,得到的是/usr/bin目錄下文件的個數(shù)。

3.3 輸入輸出重定向

輸入輸出重定向是改變 shell命令或程序默認(rèn)的標(biāo)準(zhǔn)輸入輸出目標(biāo),重新定向到新的目標(biāo)。 linux中默認(rèn)的標(biāo)準(zhǔn)輸入定義為鍵盤,標(biāo)準(zhǔn)輸出定義為終端窗口。 用戶可以為當(dāng)前操作改變輸入或輸出,迫使某個特定命令的輸入或輸出來源為外部文件

圖片

cat命令功能為在標(biāo)準(zhǔn)輸出上顯示文件。 下面通過一個實(shí)例,可以更好地理解重定向的功能:

an@ubuntu:~/di$ cat   #使用標(biāo)準(zhǔn)輸入/出設(shè)備
hello world!     #用戶使用標(biāo)準(zhǔn)輸入設(shè)備鍵盤,鍵入字符串,并按Enter鍵
hello world!     #系統(tǒng)在標(biāo)準(zhǔn)輸出顯示器上,顯示用戶剛剛輸入的字符串
an@ubuntu:~/di$ cat > file1.txt #輸出重定向,將輸出定向到文件file1.txt
hello world!     #用戶使用標(biāo)準(zhǔn)輸入設(shè)備鍵盤,鍵入字符串,并按Enter鍵
                 #用戶輸入的字符串被保存在file1.txt文件中
an@ubuntu:~/di$ cat < file1.txt #輸入重定向,將cat的輸入指定為file1.txt
hello world!     #系統(tǒng)在標(biāo)準(zhǔn)輸出顯示器上,顯示cat命令從文件中讀出的字符串

3.4 命令置換

命令替換是將一個命令的輸出作為另一個命令的參數(shù)。 命令格式如下所示:

command1  `command2`

其中,命令 command2的輸出將作為命令 command1的參數(shù)。 需要注意,命令置換的單引號為ESC鍵下方的“`”鍵

linux@ubuntu:~$ ls  `pwd`
Desktop  Examples  linux  andyxi

pwd命令用于顯示當(dāng)前目錄的絕對路徑。 在上面的命令行中,使用命令置換符,將 pwd的運(yùn)行結(jié)果作為 ls命令的參數(shù)。 最終,命令執(zhí)行結(jié)果是顯示當(dāng)前目錄的文件內(nèi)容。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1360

    瀏覽量

    40185
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6684

    瀏覽量

    123140
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7594

    瀏覽量

    135864
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    676

    瀏覽量

    21965
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    363

    瀏覽量

    23259
收藏 人收藏

    評論

    相關(guān)推薦

    Linux Shell系列教程之Shell printf命令詳解

      一、Shell printf命令語法  printf format-string [arguments...]  format-string為描述格式規(guī)格的字符串,用來描述輸出的排
    發(fā)表于 09-03 13:47

    linux shell命令/unix shell命令教程

    linux shell命令/unix shell命令教程:為了防止未授權(quán)用戶訪問你的文件,可以在文件和目錄上設(shè)置權(quán)限位。還可以設(shè)定文件在創(chuàng)建時所具有的缺省權(quán)限:這些只是整個系統(tǒng)安全問題
    發(fā)表于 12-06 13:08 ?61次下載
    linux <b class='flag-5'>shell</b><b class='flag-5'>命令</b>/unix <b class='flag-5'>shell</b><b class='flag-5'>命令</b>教程

    unix的shell命令是什么

    Unix shell,通常被稱作“命令行”,為Unix和類Unix操作系統(tǒng)提供了傳統(tǒng)的用戶界面。用戶通過輸入shell所執(zhí)行的命令,引導(dǎo)計算機(jī)的操作。在微軟Windows操作系統(tǒng)平臺,
    發(fā)表于 11-14 14:43 ?4565次閱讀
    unix的<b class='flag-5'>shell</b><b class='flag-5'>命令</b>是什么

    inux shell通配符、元字符、轉(zhuǎn)義符最全使用攻略

    加入”*” 都是作用在命令名直接??梢钥吹?b class='flag-5'>shell 元字符,基本是作用在命令上面,用作多命令分割(或者參數(shù)分割)。因此看到與通配符有相同的
    的頭像 發(fā)表于 02-15 14:10 ?3059次閱讀
    inux <b class='flag-5'>shell</b>通配符、元<b class='flag-5'>字符</b>、轉(zhuǎn)義符最全使用攻略

    Shell內(nèi)建命令:trap命令

    1.命令簡介 trap 命令Shell 內(nèi)建命令,用于指定在接收到信號后將要采取的動作。常見的用途是在腳本程序被中斷時完成清理工作。 2.命令
    的頭像 發(fā)表于 02-09 18:19 ?5940次閱讀
    <b class='flag-5'>Shell</b>內(nèi)建<b class='flag-5'>命令</b>:trap<b class='flag-5'>命令</b>

    Shell內(nèi)建命令:exit命令

    1.簡介 exit 命令Shell 內(nèi)建命令,用于退出當(dāng)前 Shell 進(jìn)程。 2.命令格式
    的頭像 發(fā)表于 02-02 10:45 ?3881次閱讀

    Linux系統(tǒng)命令shell腳本實(shí)踐指南

    Linux系統(tǒng)命令shell腳本實(shí)踐指南資料下載。
    發(fā)表于 06-01 14:47 ?28次下載

    Shell命令行解釋器簡介

    Shell 是一個命令行解釋器,Shell 為用戶提供了與設(shè)備進(jìn)行命令行交互的方式,用戶通過串口、以太網(wǎng)、無線等方式將命令傳輸給具有
    的頭像 發(fā)表于 08-19 17:20 ?3157次閱讀

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發(fā)表于 01-11 16:50 ?4次下載

    shell腳本基礎(chǔ)知識

    shell腳本是一個文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell腳本的本質(zhì)是shell命令
    的頭像 發(fā)表于 04-17 15:00 ?1048次閱讀

    shell腳本本身自帶的命令詳解

    除了以文件形式保存在/usr/bin下面的命令,shell腳本中還可以使用shell本身自帶的命令,即內(nèi)置命令
    的頭像 發(fā)表于 05-23 09:32 ?969次閱讀
    <b class='flag-5'>shell</b>腳本本身自帶的<b class='flag-5'>命令</b>詳解

    shell腳本基本命令

    Shell腳本是一種可執(zhí)行文件,它包含了一組用某種特定語言編寫的命令,這些命令可以被解釋器(如bash)執(zhí)行。以下是一些常見的shell腳本基本命令
    的頭像 發(fā)表于 11-08 10:08 ?1989次閱讀

    shell命令和linux命令一樣嗎

    Shell命令和Linux命令并不完全一樣。 首先,Shell是一種命令行解釋器,它是用來解釋和執(zhí)行用戶輸入的
    的頭像 發(fā)表于 11-08 10:51 ?2701次閱讀

    linux命令shell編程有什么聯(lián)系

    Linux命令Shell編程之間存在密切的聯(lián)系。 首先,Shell是Linux命令行下的解釋器,它提供了一個用戶界面,使用戶能夠與Linux內(nèi)核進(jìn)行交互。
    的頭像 發(fā)表于 11-08 10:53 ?869次閱讀

    linux命令行與shell編程實(shí)戰(zhàn)

    Linux命令行與Shell編程實(shí)戰(zhàn)主要涉及以下內(nèi)容: Linux命令行基礎(chǔ):學(xué)習(xí)Linux命令行的基本操作,如文件管理、進(jìn)程管理、網(wǎng)絡(luò)配置等。熟悉使用
    的頭像 發(fā)表于 11-08 10:57 ?715次閱讀