日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux新手必须掌握的命令(2)

發(fā)布時間:2023/12/20 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux新手必须掌握的命令(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、輸入輸出重定向

輸入重定向是指把文件導(dǎo)入到命令中,而輸出重定向則是指把原本要輸出到屏幕的數(shù)據(jù)信息寫入到指定文件中。

在日常的學(xué)習(xí)和工作中,相較于輸入重定向,我們使用輸出重定向的頻率更高。

所以又將輸出重定向分為了標(biāo)準(zhǔn)輸出重定向和錯誤輸出重定向兩種不同的技術(shù),以及清空寫入與追加寫入兩種模式。

  • 標(biāo)準(zhǔn)輸入重定向(STDIN,文件描述符為0):默認(rèn)從鍵盤輸入,也可從其他文件或命令中輸入。

  • 標(biāo)準(zhǔn)輸出重定向(STDOUT,文件描述符為1):默認(rèn)輸出到屏幕。
  • 錯誤輸出重定向(STDERR,文件描述符為2):默認(rèn)輸出到屏幕。

比如我們分別查看兩個文件的屬性信息,其中第二個文件是不存在的,雖然針對這兩個文件的操作都分別會在屏幕上輸出一些數(shù)據(jù)信息,但這兩個操作的差異其實(shí)很大。

先用ls查看當(dāng)前目錄,然后查看lc詳細(xì)信息,再隨便輸入一個不存在的文件名查詢。

?

在上述命令中,名為 lc 的文件是存在的,輸出信息是該命令的標(biāo)準(zhǔn)輸出信息。而名為 lclc 的第二個文件是不存在的,因此在執(zhí)行完ls命令之后顯示的報錯提示信息也是該命令的錯誤輸出信息。

那么,要想把原本輸出到屏幕上的數(shù)據(jù)轉(zhuǎn)而寫入到文件當(dāng)中,就要區(qū)別對待這兩種輸出信息。

對于輸入重定向來講,用到的符號及其作用如下表:

符號

作用

命令 < 文件

將文件作為命令的標(biāo)準(zhǔn)輸入

命令 << 分界符

從標(biāo)準(zhǔn)輸入中讀入,直到遇見分界符才停止

命令 < 文件1 > 文件2

將文件1作為命令的標(biāo)準(zhǔn)輸入并將標(biāo)準(zhǔn)輸出到文件2


對于輸出重定向來講,用到的符號及其作用如下表:

符號

作用

命令 > 文件

將標(biāo)準(zhǔn)輸出重定向到一個文件中(清空原有文件的數(shù)據(jù))

命令 2> 文件

將錯誤輸出重定向到一個文件中(清空原有文件的數(shù)據(jù))

命令 >> 文件

將標(biāo)準(zhǔn)輸出重定向到一個文件中(追加到原有內(nèi)容的后面)

命令 2>> 文件

將錯誤輸出重定向到一個文件中(追加到原有內(nèi)容的后面)

命令 >> 文件 2>&1或命令 &>> 文件

將標(biāo)準(zhǔn)輸出與錯誤輸出共同寫入到文件中(追加到原有內(nèi)容的后面)

對于重定向中的標(biāo)準(zhǔn)輸出模式,可以省略文件描述符1不寫,而錯誤輸出模式的文件描述符2是必須要寫的。

通過標(biāo)準(zhǔn)輸出重定向?qū)?systemctl status vsftpd 命令原本要輸出到屏幕的信息寫入到文件 lc 中,然后用cat命令顯示 lc 文件中的內(nèi)容。具體命令如下:

?

如果想把命令的報錯信息寫入到文件,平時一般用不到。

但是當(dāng)用戶在執(zhí)行一個自動化的Shell腳本時,這個操作會特別有用,因?yàn)樗梢园颜麄€腳本執(zhí)行過程中的報錯信息都記錄到文件中,便于安裝后的排錯工作。

接下來我們以一個不存在的文件進(jìn)行實(shí)驗(yàn)演示:

?

因?yàn)槲覀冇玫氖? >>? 所以追加到文檔原有內(nèi)容后面了。

?

輸入重定向相對來說有些冷門,在工作中遇到的概率會小一點(diǎn)。

輸入重定向的作用是把文件直接導(dǎo)入到命令中。接下來使用輸入重定向把 lc 文件導(dǎo)入給 wc -l 命令,統(tǒng)計一下文件中的內(nèi)容行數(shù)。

?

二、管道命令符

管道命令符的作用也可以用一句話來概括“把前一個命令原本要輸出到屏幕的標(biāo)準(zhǔn)正常數(shù)據(jù)當(dāng)作是后一個命令的標(biāo)準(zhǔn)輸入”。

比如用翻頁的形式查看/etc目錄中的文件列表及屬性信息(這些內(nèi)容默認(rèn)會一股腦兒地顯示到屏幕上,根本看不清楚):

?ls?-l?/etc/?|?more

?

最上面顯示總共多少條,我們可以利用more命令的用法來瀏覽這些信息。

三、常用的轉(zhuǎn)義字符

4個最常用的轉(zhuǎn)義字符如下所示。

  • 反斜杠(\):使反斜杠后面的一個變量變?yōu)閱渭兊淖址?/li>
  • 單引號(''):轉(zhuǎn)義其中所有的變量為單純的字符串。
  • 雙引號(""):保留其中的變量屬性,不進(jìn)行轉(zhuǎn)義處理。
  • 反引號(``):把其中的命令執(zhí)行后返回結(jié)果。

我們先定義一個名為PRICE的變量并賦值為5,然后輸出以雙引號括起來的字符串與變量信息:

?

接下來,我們希望能夠輸出“Price is $5”,即價格是5美元的字符串內(nèi)容。

但碰巧美元符號與變量提取符號合并后的$$作用是顯示當(dāng)前程序的進(jìn)程ID號碼,于是命令執(zhí)行后輸出的內(nèi)容并不是我們所預(yù)期的:

?

要想讓第一個“$”作為美元符號,那么就需要使用反斜杠(\)來進(jìn)行轉(zhuǎn)義,將這個命令提取符轉(zhuǎn)義成單純的文本,去除特殊功能。

?

四、Vim文本編輯器

Vim編輯器中設(shè)置了三種模式—命令模式、末行模式和編輯模式,每種模式分別又支持多種不同的命令快捷鍵,這大大提高了工作效率。

要想高效率地操作文本,就必須先搞清這三種模式的操作區(qū)別以及模式之間的切換方法。

  • 命令模式:控制光標(biāo)移動,可對文本進(jìn)行復(fù)制、粘貼、刪除和查找等工作。
  • 輸入模式:正常的文本錄入。
  • 末行模式:保存或退出文檔,以及設(shè)置編輯環(huán)境。

?

在每次運(yùn)行Vim編輯器時,默認(rèn)進(jìn)入命令模式,此時需要先切換到輸入模式后再進(jìn)行文檔編寫工作。

而每次在編寫完文檔后需要先返回命令模式,然后再進(jìn)入末行模式,執(zhí)行文檔的保存或退出操作。

在Vim中,無法直接從輸入模式切換到末行模式。

Vim編輯器中在命令模式中最常用的一些命令如下圖。

命令

作用

dd

刪除(剪切)光標(biāo)所在整行

5dd

刪除(剪切)從光標(biāo)處開始的5行

yy

復(fù)制光標(biāo)所在整行

5yy

復(fù)制從光標(biāo)處開始的5行

n

顯示搜索命令定位到的下一個字符串

N

顯示搜索命令定位到的上一個字符串

u

撤銷上一步的操作

p

將之前刪除(dd)或復(fù)制(yy)過的數(shù)據(jù)粘貼到光標(biāo)后面


末行模式主要用于保存或退出文件,以及設(shè)置Vim編輯器的工作環(huán)境,還可以讓用戶執(zhí)行外部的Linux命令或跳轉(zhuǎn)到所編寫文檔的特定行數(shù)。

要想切換到末行模式,在命令模式中輸入一個冒號就可以了。末行模式中可用的命令如下表。

命令

作用

:w

保存

:q

退出

:q!

強(qiáng)制退出(放棄對文檔的修改內(nèi)容)

:wq!

強(qiáng)制保存退出

:set nu

顯示行號

:set nonu

不顯示行號

:命令

執(zhí)行該命令

:整數(shù)

跳轉(zhuǎn)到該行

:s/one/two

將當(dāng)前光標(biāo)所在行的第一個one替換成two

:s/one/two/g

將當(dāng)前光標(biāo)所在行的所有one替換成two

:%s/one/two/g

將全文中的所有one替換成two

?字符串

在文本中從下至上搜索該字符串

/字符串

在文本中從上至下搜索該字符串

編寫腳本文檔的第1步就是給文檔取個名字,這里將其命名為practice.txt。如果存在該文檔,則是打開它。如果不存在,則是創(chuàng)建一個臨時的輸入文件。

打開practice.txt文檔后,默認(rèn)進(jìn)入的是Vim編輯器的命令模式。此時只能執(zhí)行該模式下的命令,而不能隨意輸入文本內(nèi)容,我們需要切換到輸入模式才可以編寫文檔。

五、編寫Shell腳本

可以將Shell終端解釋器當(dāng)作人與計算機(jī)硬件之間的“翻譯官”,它作為用戶與Linux系統(tǒng)內(nèi)部的通信媒介,除了能夠支持各種變量與參數(shù)外,還提供了諸如循環(huán)、分支等高級編程語言才有的控制結(jié)構(gòu)特性。

要想正確使用Shell中的這些功能特性,準(zhǔn)確下達(dá)命令尤為重要。

Shell腳本命令的工作方式有兩種:交互式和批處理。

  • 交互式(Interactive):用戶每輸入一條命令就立即執(zhí)行。
  • 批處理(Batch):由用戶事先編寫好一個完整的Shell腳本,Shell會一次性執(zhí)行腳本中諸多的命令。

在Shell腳本中不僅會用到很多Linux命令以及正則表達(dá)式、管道符、數(shù)據(jù)流重定向等語法規(guī)則,還需要把內(nèi)部功能模塊化后通過邏輯語句進(jìn)行處理,最終形成日常所見的Shell腳本。

查看SHELL變量可以發(fā)現(xiàn)當(dāng)前系統(tǒng)已經(jīng)默認(rèn)使用Bash作為命令行終端解釋器了:

?

使用Vim編輯器把Linux命令按照順序依次寫入到一個lc文件中,這就是一個簡單的腳本了。

例如,如果想查看當(dāng)前所在工作路徑并列出當(dāng)前目錄下所有的文件及屬性信息,實(shí)現(xiàn)這個功能的腳本應(yīng)該類似于下面這樣:

?

第一行的腳本聲明(#!)用來告訴系統(tǒng)使用哪種Shell解釋器來執(zhí)行該腳本;

第二、三行的可執(zhí)行語句就是我們平時執(zhí)行的Linux命令。

通過bash lc 來執(zhí)行(lc是剛才編輯那個文件名)

?

但是,像上面這樣的腳本程序只能執(zhí)行一些預(yù)先定義好的功能,太過死板了。

為了讓Shell腳本程序更好地靈活完成工作,必須要讓腳本程序能夠像之前執(zhí)行命令時那樣,接收輸入的參數(shù)。

接收參數(shù)的變量,變量之間可以使用空格間隔。

例如$0對應(yīng)的是當(dāng)前Shell腳本程序的名稱,$#對應(yīng)的是總共有幾個參數(shù),$*對應(yīng)的是所有位置的參數(shù)值,$?對應(yīng)的是顯示上一次命令的執(zhí)行返回值,而$1、$2、$3……則分別對應(yīng)著第N個位置的參數(shù)值。

?

例如,編輯如下文件:

?

執(zhí)行后:

?

下面再介紹判斷用戶參數(shù)

系統(tǒng)在執(zhí)行mkdir命令時會判斷用戶輸入的信息,即判斷用戶指定的文件夾名稱是否已經(jīng)存在,如果存在則提示報錯;

反之則自動創(chuàng)建。Shell腳本中的條件測試語法可以判斷表達(dá)式是否成立,若條件成立則返回數(shù)字0,否則便返回其他隨機(jī)數(shù)值。

條件測試語法的執(zhí)行格式如圖所示。切記,條件表達(dá)式兩邊均應(yīng)有一個空格。

?

按照測試對象來劃分,條件測試語句可以分為4種:

  • 文件測試語句;
  • 邏輯測試語句;
  • 整數(shù)值比較語句;
  • 字符串比較語句。

文件測試即使用指定條件來判斷文件是否存在或權(quán)限是否滿足等情況的運(yùn)算符,具體的參數(shù)如表:

運(yùn)算符

作用

-d

測試文件是否為目錄類型

-e

測試文件是否存在

-f

判斷是否為一般文件

-r

測試當(dāng)前用戶是否有權(quán)限讀取

-w

測試當(dāng)前用戶是否有權(quán)限寫入

-x

測試當(dāng)前用戶是否有權(quán)限執(zhí)行

下面使用文件測試語句來判斷/etc/fstab是否為一個目錄類型的文件,然后通過Shell解釋器的內(nèi)設(shè)$?變量顯示上一條命令執(zhí)行后的返回值。

如果返回值為0,則目錄存在;如果返回值為非零的值,則意味著目錄不存在:

?

再判斷/etc/fstab是否為一般文件

?

邏輯語句用于對測試結(jié)果進(jìn)行邏輯分析,根據(jù)測試結(jié)果可實(shí)現(xiàn)不同的效果。

例如在Shell終端中邏輯“與”的運(yùn)算符號是&&,它表示當(dāng)前面的命令執(zhí)行成功后才會執(zhí)行它后面的命令,因此可以用來判斷/dev/cdrom文件是否存在,若存在則輸出Exist字樣。

?

除了邏輯“與”外,還有邏輯“或”,它在Linux系統(tǒng)中的運(yùn)算符號為||,表示當(dāng)前面的命令執(zhí)行失敗后才會執(zhí)行它后面的命令,因此可以用來結(jié)合系統(tǒng)環(huán)境變量USER來判斷當(dāng)前登錄的用戶是否為非管理員身份:

切換到非管理員身份,進(jìn)行管理員驗(yàn)證:

?

第三種邏輯語句是“非”,在Linux系統(tǒng)中的運(yùn)算符號是一個嘆號(!),它表示把條件測試中的判斷結(jié)果取相反值。

也就是說,如果原本測試的結(jié)果是正確的,則將其變成錯誤的;原本測試錯誤的結(jié)果則將其變成正確的。

我們現(xiàn)在切換回到root管理員身份,再判斷當(dāng)前用戶是否為一個非管理員的用戶。

由于判斷結(jié)果因?yàn)閮纱畏穸ǘ兂烧_,因此會正常地輸出預(yù)設(shè)信息:

?

下面這個示例的執(zhí)行順序是,先判斷當(dāng)前登錄用戶的USER變量名稱是否等于root,然后用邏輯運(yùn)算符“非”進(jìn)行取反操作,效果就變成了判斷當(dāng)前登錄的用戶是否為非管理員用戶了。

最后若條件成立則會根據(jù)邏輯“與”運(yùn)算符輸出user字樣;或條件不滿足則會通過邏輯“或”運(yùn)算符輸出root字樣,而如果前面的&&不成立才會執(zhí)行后面的||符號。

?

整數(shù)比較運(yùn)算符僅是對數(shù)字的操作,不能將數(shù)字與字符串、文件等內(nèi)容一起操作,而且不能想當(dāng)然地使用日常生活中的等號、大于號、小于號等來判斷。

因?yàn)榈忍柵c賦值命令符沖突,大于號和小于號分別與輸出重定向命令符和輸入重定向命令符沖突。

因此一定要使用規(guī)范的整數(shù)比較運(yùn)算符來進(jìn)行操作。可用的整數(shù)比較運(yùn)算符如表所示。

運(yùn)算符

作用

-eq

是否等于

-ne

是否不等于

-gt

是否大于

-lt

是否小于

-le

是否等于或小于

-ge

是否大于或等于


接下來測試一下10是否大于10以及10是否等于10(通過輸出的返回值內(nèi)容來判斷):

?

轉(zhuǎn)載于:https://www.cnblogs.com/nefu-Lc/p/9485989.html

總結(jié)

以上是生活随笔為你收集整理的Linux新手必须掌握的命令(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。