一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

linux中嘆號(hào)(!)的10個(gè)技巧分享

dyquk4xk2p3d ? 來(lái)源:入門小站 ? 2023-04-19 11:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

'!'Linux 中的符號(hào)或運(yùn)算符可用作邏輯否定運(yùn)算符,也可通過(guò)調(diào)整從歷史記錄中獲取命令,或通過(guò)修改運(yùn)行先前運(yùn)行的命令。以下所有命令均已在 bash Shell 中明確檢查。雖然我沒(méi)有檢查過(guò),但其中大部分不會(huì)在其他 shell 中運(yùn)行。

按命令編號(hào)運(yùn)行歷史記錄中的命令。

您可能不知道您可以從歷史命令(已經(jīng) / 較早執(zhí)行的命令)運(yùn)行命令這一事實(shí)。要開(kāi)始,首先通過(guò)運(yùn)行 “history” 命令找到命令編號(hào)。

$history

現(xiàn)在,在history的輸出中,僅按照它出現(xiàn)的編號(hào)運(yùn)行來(lái)自history的命令。假設(shè)運(yùn)行出現(xiàn)在'history' 命令輸出中編號(hào)為1551的命令。

$!1551

并且,它運(yùn)行在編號(hào)1551中列出的命令。這種檢索已執(zhí)行命令的方法非常有用,特別是在那些很長(zhǎng)的命令的情況下。您只需要使用**!**來(lái)調(diào)用它。

將先前執(zhí)行的命令作為倒數(shù)第二個(gè)命令、倒數(shù)第 7 個(gè)命令等運(yùn)行。

你可以運(yùn)行那些你之前運(yùn)行過(guò)的命令,它們的運(yùn)行順序是最后一個(gè)運(yùn)行命令將表示為**-1**,倒數(shù)第二個(gè)為**-2**,倒數(shù)第七個(gè)為**-7**,......。

首先運(yùn)行history命令以獲取上次執(zhí)行命令的列表。有必要運(yùn)行history命令,這樣您就可以確保沒(méi)有類似的命令rm command > file和其他命令,只是為了確保您不會(huì)意外運(yùn)行任何危險(xiǎn)的命令。然后檢查第六個(gè)最后一個(gè)命令,八個(gè)最后一個(gè)命令和第十個(gè)最后一個(gè)命令。

$history
$!-6
$!-8
$!-10

按數(shù)字運(yùn)行上次執(zhí)行的命令

將我們運(yùn)行的最后一個(gè)命令的參數(shù)傳遞給新命令,無(wú)需重新輸入

我需要列出目錄 “/home/$USER/Binary/firefox” 的內(nèi)容。

$ls/home/$USER/Binary/firefox

然后我意識(shí)到我應(yīng)該觸發(fā) “ls -l” 以查看哪個(gè)文件在那里可執(zhí)行?所以我應(yīng)該再次輸入整個(gè)命令!不,我不需要。我只需要將這個(gè)新命令的最后一個(gè)參數(shù)作為:

$ls-l!$

這里!$將攜帶在最后一個(gè)命令中傳遞給這個(gè)新命令的參數(shù)。

將上次執(zhí)行命令的參數(shù)傳遞給新命令

如何使用 (!) 處理兩個(gè)或多個(gè)參數(shù)

假設(shè)我在桌面上創(chuàng)建了一個(gè)文本文件1.txt

$touch/home/avi/Desktop/1.txt

然后使用cp命令在任一側(cè)使用完整路徑將其復(fù)制到 “/home/avi/Downloads”。

$cp/home/avi/Desktop/1.txt/home/avi/downloads

現(xiàn)在我們已經(jīng)使用cp命令傳遞了兩個(gè)參數(shù)。第一個(gè)是 “/home/avi/Desktop/1.txt”,第二個(gè)是 “/home/avi/Downloads”,讓我們以不同的方式處理它們,只需執(zhí)行echo [arguments]以不同方式打印兩個(gè)參數(shù)。

$echo"1stArgumentis:!^"
$echo"2ndArgumentis:!cp:2"

注意第一個(gè)參數(shù)可以打印為“!^”,其余參數(shù)可以通過(guò)執(zhí)行“![Name_of_Command]:[Number_of_argument]”.

在上面的例子中,第一個(gè)命令是 “cp”,第二個(gè)參數(shù)需要打印。因此“!cp:2”,如果任何命令說(shuō)xyz使用 5 個(gè)參數(shù)運(yùn)行并且您需要獲得第 4 個(gè)參數(shù),您可以使用“!xyz:4”,并根據(jù)需要使用它。所有參數(shù)都可以通過(guò) 訪問(wèn)“!*”。

處理兩個(gè)或更多參數(shù)

根據(jù)關(guān)鍵字執(zhí)行最后一條命令我們可以根據(jù)關(guān)鍵字執(zhí)行上次執(zhí)行的命令。我們可以這樣理解:

$ls/home>/dev/null[Command1]
$ls-l/home/avi/Desktop>/dev/null[Command2]
$ls-la/home/avi/Downloads>/dev/null[Command3]
$ls-lA/usr/bin>/dev/null[Command4]

在這里,我們使用了相同的命令**(ls),但使用了不同的開(kāi)關(guān)和不同的文件夾。此外,我們已將每個(gè)命令的輸出發(fā)送到 “/dev/null**”,因?yàn)槲覀儾粫?huì)處理命令的輸出,控制臺(tái)也保持干凈。

現(xiàn)在根據(jù)關(guān)鍵字執(zhí)行上次運(yùn)行命令。

$!ls[Command1]
$!ls-l[Command2]
$!ls-la[Command3]
$!ls-lA[Command4]

檢查輸出,您會(huì)驚訝地發(fā)現(xiàn)您只是通過(guò)ls關(guān)鍵字運(yùn)行已執(zhí)行的命令。

根據(jù)關(guān)鍵字運(yùn)行命令

神奇的!!

您可以使用(!!).它將在當(dāng)前命令中使用 alter/tweak 調(diào)用最后一個(gè)運(yùn)行命令。給你看場(chǎng)景

最后一天我運(yùn)行了一個(gè)單行腳本來(lái)獲取我的私有 IP,所以我運(yùn)行,

$ipaddrshow|grepinet|grep-v'inet6'|grep-v'127.0.0.1'|awk'{print$2}'|cut-f1-d/

然后我突然發(fā)現(xiàn)我需要將上面腳本的輸出重定向到一個(gè)文件ip.txt,那我該怎么辦?我應(yīng)該再次重新輸入整個(gè)命令并將輸出重定向到文件嗎?那么一個(gè)簡(jiǎn)單的解決方案是使用UP導(dǎo)航鍵并添加'> ip.txt'將輸出重定向到文件。

$ipaddrshow|grepinet|grep-v'inet6'|grep-v'127.0.0.1'|awk'{print$2}'|cut-f1-d/>ip.txt

UP鍵可以快速找到歷史命令?,F(xiàn)在考慮以下條件,下次我在單行腳本下運(yùn)行時(shí)。

$ifconfig|grep"inetaddr:"|awk'{print$2}'|grep-v'127.0.0.1'|cut-f2-d:

一旦我運(yùn)行腳本,bash 提示符就會(huì)返回一個(gè)錯(cuò)誤消息“bash: ifconfig: command not found”,我不難猜測(cè)我以用戶身份運(yùn)行此命令,而它應(yīng)該以 root 身份運(yùn)行。

那么有什么解決辦法呢?很難登錄到 root 然后再次鍵入整個(gè)命令!此外,上一個(gè)示例中的(向上導(dǎo)航鍵)在這里也沒(méi)有出現(xiàn)。所以?我們需要“!!”不帶引號(hào)調(diào)用,這將調(diào)用該用戶的最后一個(gè)命令。

$su-c!!root

這里su是切換用戶,也就是 root,-c以用戶身份運(yùn)行特定的命令,最重要的部分!!將被命令替換,最后運(yùn)行的命令將在這里替換。是的!您需要提供 root 密碼。

!!主要在以下場(chǎng)景中使用,

當(dāng)我以普通用戶身份運(yùn)行apt-get命令時(shí),我通常會(huì)收到一個(gè)錯(cuò)誤,說(shuō)您無(wú)權(quán)執(zhí)行。

$apt-getupgrade&&apt-getdist-upgrade

Opps 錯(cuò)誤... 不要擔(dān)心執(zhí)行以下命令以使其成功..

$su-c!!
$serviceapache2start
or
$/etc/init.d/apache2start
or
$systemctlstartapache2

OOPS 用戶無(wú)權(quán)執(zhí)行此類任務(wù),所以我運(yùn)行..

$su-c'serviceapache2start'
or
$su-c'/etc/init.d/apache2start'
or
$su-c'systemctlstartapache2'

運(yùn)行影響除 ![FILE_NAME] 之外的所有文件的命令

該!(邏輯 NOT)可以用來(lái)運(yùn)行所有命令的文件 / 文件擴(kuò)展名,除了后面'!'。

A.從目錄中刪除所有文件,但名稱為2.txt的文件除外。

$rm!(2.txt)

**B.**從文件夾中刪除所有文件類型,除了擴(kuò)展名為 “pdf”的文件類型。

$$rm!(*.pdf)

檢查一個(gè)目錄(比如 / home/avi/Tecmint)是否存在?printf 如果所述目錄存在與否。

在這里,我們將使用'! -d'來(lái)驗(yàn)證目錄是否存在,然后使用邏輯 AND 運(yùn)算符(&&)來(lái)打印該目錄不存在,然后使用邏輯 OR 運(yùn)算符(||)來(lái)打印目錄是否存在。

邏輯是,當(dāng)輸出[ ! -d /home/rumenz ]為0 時(shí),它將執(zhí)行超出 Logical 的內(nèi)容**,否則它將轉(zhuǎn)到 Logical OR(||)并執(zhí)行超出 LogicalOR 的內(nèi)容**。

$[!-d/home/rumenz]&&printf'
nosuch/home/rumenzdirectoryexist
'||printf'
/home/rumenzdirectoryexist
'

檢查目錄是否存在?如果沒(méi)有退出命令。與上述條件類似,但這里如果所需目錄不存在,它將退出命令。

$[!-d/home/rumenz]&&exit

如果它不存在,則在您的主目錄中創(chuàng)建一個(gè)目錄(比如 rumenz)。腳本語(yǔ)言中的一種通用實(shí)現(xiàn),如果所需目錄不存在,它將創(chuàng)建一個(gè)。

[!-d/home/rumenz]&&mkdir/home/rumenz





審核編輯:劉清

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

    關(guān)注

    4

    文章

    605

    瀏覽量

    28618
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    372

    瀏覽量

    24221

原文標(biāo)題:linux中嘆號(hào)(!)的10個(gè)技巧

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linuxgrep命令的12個(gè)實(shí)際例子

    Linuxgrep命令的12個(gè)實(shí)際例子
    發(fā)表于 02-08 09:38 ?864次閱讀

    選擇舊版安裝Windows 10時(shí)會(huì)出現(xiàn)2個(gè)嘆號(hào)

    盡管如此,我的操作系統(tǒng)是最新的(10.0.17134 Build 17134)并安裝了最新的芯片組驅(qū)動(dòng)程序(10.1.1.42),但帶有2個(gè)嘆號(hào);如果Windows 10處于uefi模式(相同
    發(fā)表于 10-26 14:55

    為什么AD10界面右下角總是出現(xiàn)一個(gè)嘆號(hào)?

    ad10應(yīng)該是破解成功了,如圖:AD10界面右下角總是出現(xiàn)一個(gè)嘆號(hào):怎么解決呢??
    發(fā)表于 08-02 04:38

    單片機(jī)win10 USB下載驅(qū)動(dòng)程序預(yù)安裝成功,可是點(diǎn)開(kāi)端口,有個(gè)黃色感嘆號(hào)

    win10系統(tǒng),單片機(jī)USB驅(qū)動(dòng)程序CH340預(yù)安裝成功,但是點(diǎn)開(kāi)端口,有個(gè)黃色感嘆號(hào),關(guān)閉電腦強(qiáng)制簽名也是試過(guò)了,還是不行,請(qǐng)問(wèn)有什么解決辦法么?
    發(fā)表于 10-15 22:22

    UDE-STK在設(shè)備管理器顯示黃色感嘆號(hào)

    UDE-STK 在設(shè)備管理器顯示黃色感嘆號(hào),然后無(wú)法正常使用是什么情況?之前在其他電腦上用過(guò)是正??梢允褂玫模瑩Q了臺(tái)電腦重新安裝就顯示黃色感嘆號(hào),無(wú)法用了怎么回事呢?在線急等,請(qǐng)各位大神指教!?。≈x謝謝謝
    發(fā)表于 12-05 08:30

    win10通訊端口為什么有黃色感嘆號(hào)?。?/a>

    win10通訊端口為什么有黃色感嘆號(hào)???
    發(fā)表于 09-28 06:52

    嘆號(hào)顯示器電路圖

    嘆號(hào)顯示器電路圖
    發(fā)表于 03-29 09:49 ?488次閱讀
    驚<b class='flag-5'>嘆號(hào)</b>顯示器電路圖

    揭開(kāi)連接出現(xiàn)小嘆號(hào)不能上網(wǎng)問(wèn)題的神秘面紗

    揭開(kāi)連接出現(xiàn)小嘆號(hào)不能上網(wǎng)問(wèn)題的神秘面紗 “怎么又不能上網(wǎng)了?”每次上不了網(wǎng)總出現(xiàn)一個(gè)嘆號(hào)?為什么在家里上網(wǎng)出現(xiàn)這個(gè)小嘆號(hào)就能上
    發(fā)表于 02-23 13:59 ?871次閱讀

    介紹Linux 終端運(yùn)行的 10 個(gè)網(wǎng)絡(luò)監(jiān)視工具

    保持對(duì)我們的網(wǎng)絡(luò)的管理,防止任何程序過(guò)度使用網(wǎng)絡(luò)、導(dǎo)致整個(gè)系統(tǒng)操作變慢,對(duì)管理員來(lái)說(shuō)是至關(guān)重要的。有幾個(gè)網(wǎng)絡(luò)監(jiān)視工具可以用于不同的操作系統(tǒng)。在這篇文章,我們將討論從 Linux 終端運(yùn)行的
    的頭像 發(fā)表于 01-05 11:04 ?4775次閱讀
    介紹<b class='flag-5'>Linux</b> 終端<b class='flag-5'>中</b>運(yùn)行的 <b class='flag-5'>10</b> <b class='flag-5'>個(gè)</b>網(wǎng)絡(luò)監(jiān)視工具

    如何快速入門運(yùn)維?了解Linux10個(gè)命令鏈接操作符

    Linux命令鏈接的意思是,通過(guò)操作符的行為將幾個(gè)命令組合執(zhí)行。Linux的鏈接命令,有些像你在shell寫短小的shell腳本,并直
    的頭像 發(fā)表于 10-03 19:33 ?3261次閱讀

    iPhone14 Pro嘆號(hào)孔可顯示為藥丸形

      據(jù)有關(guān)人士透露。蘋果iPhone 14 Pro型號(hào)的“感嘆號(hào)”沖孔可以設(shè)置為一個(gè)完整的“藥丸”形狀,中間部分可以用作隱私指示器,在使用麥克風(fēng)和攝像頭時(shí)提醒應(yīng)用程序。
    的頭像 發(fā)表于 09-01 10:44 ?3563次閱讀

    Linux如何比較兩個(gè)文件的差異?

    Linux 如何比較兩個(gè)文件的差異?答案是使用 diff 命令。
    的頭像 發(fā)表于 01-17 17:30 ?5641次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b>如何比較兩<b class='flag-5'>個(gè)</b>文件的差異?

    Linux如何比較兩個(gè)文件的差異?

    Linux 如何比較兩個(gè)文件的差異?答案是使用 diff 命令。
    的頭像 發(fā)表于 01-30 16:04 ?1.2w次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b>如何比較兩<b class='flag-5'>個(gè)</b>文件的差異?

    Linux系統(tǒng)10個(gè)常用的文本查看命令

    當(dāng)你需要查看Linux系統(tǒng)的文本文件時(shí),使用文本編輯器可能會(huì)比較繁瑣,特別是當(dāng)你只需要查看文件的內(nèi)容時(shí)。這時(shí),你可以使用Linux命令行下的文本查看工具來(lái)快速準(zhǔn)確地查看文件。下面介紹了10
    的頭像 發(fā)表于 06-24 11:44 ?1.2w次閱讀

    C語(yǔ)言中兩個(gè)嘆號(hào)的作用是什么

    不知道你是否看過(guò)上面類似的代碼,兩個(gè)嘆號(hào)出現(xiàn)在代碼,難道代碼也有思想,也需要表達(dá)情感嗎?
    的頭像 發(fā)表于 12-04 11:02 ?2110次閱讀
    C語(yǔ)言中兩<b class='flag-5'>個(gè)</b>感<b class='flag-5'>嘆號(hào)</b>的作用是什么