溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux Shell命令具體有哪些

發(fā)布時間:2021-11-01 10:12:23 來源:億速云 閱讀:113 作者:柒染 欄目:系統(tǒng)運維

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Linux Shell命令具體有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

引言

Shell作為Unix系操作系統(tǒng)當中最有魅力且不可或缺的組件,經(jīng)過數(shù)十載的洗禮不僅沒有被淘汰,而且愈加變得成熟穩(wěn)健,究其原因,大概因為它是個非常穩(wěn)固的粘合劑,能夠把大量功能強大的組件任意配搭,總能很好很快地完成用戶的任務(wù)。

本文的一些命令很可能看起來是”雕蟲小技”,我們只好仰慕一下Shell大牛了,但是有些細節(jié)我會稍加發(fā)掘加以說明,遇到有趣的地方希望能博您一笑了。

1.以SUDO運行上條命令

$ sudo !!

大家應(yīng)該都知sudo,不解釋。但通常出現(xiàn)的情況是,敲完命令執(zhí)行后報錯才發(fā)現(xiàn)忘了sudo。這時候,新手用戶就會:按上箭頭,按左箭頭,盯著光標回到開始處,輸入sudo,回車;高手用戶就蛋定多了,按Ctrl-p,按Ctrl-a,輸入sudo,回車。

這里介紹這個是天外飛仙級別的,對,就直接sudo !!。

當然這幾種解決方式效果是完全一樣的,只是款不一樣,嗯,不解釋。

兩個感嘆號其實是bash的一個特性,稱為事件引用符(event designators)。!!其實相當于!-1,引用前一條命令,當然也可以!-2,!-50。默認情況下bash會在~/.bash_history文件內(nèi)記錄用戶執(zhí)行的最近500條命令,history命令可以顯示這些命令。

2.以HTTP方式共享當前文件夾的文件

$ python -m SimpleHTTPServer

這命令啟動了Python的SimpleHTTPServer模塊,考慮到Python在絕大多數(shù)的Linux發(fā)行版當中都默認安裝,所以這個命令很可能是最簡單的跨平臺傳文件的方法。

命令執(zhí)行后將在本機8000端口開放HTTP服務(wù),在其他能訪問本機的機器的瀏覽器打開ttp://ip:8000即打開一個目錄列表,點擊即可下載。

3.在以普通用戶打開的VIM當中保存一個ROOT用戶文件

:w !sudo tee %

這題目讀起來糾結(jié),其實是很常見的,常常忘記了sudo就直接用vim編輯/etc內(nèi)的文件,(不過也不一定,vim發(fā)現(xiàn)保存的文件無法保存時候會提示)等編輯好了,保存時候才發(fā)現(xiàn)沒權(quán)限。曲線方法是先保存?zhèn)€臨時文件,退出后再sudo cp回去。不過實際上在vim里面可以直接完成這個過程的,命令就是如此。

查閱vim的文檔(輸入:help :w),會提到命令:w!{cmd},讓vim執(zhí)行一個外部命令{cmd},然后把當前緩沖區(qū)的內(nèi)容從stdin傳入。

tee是一個把stdin保存到文件的小工具。

而%,是vim當中一個只讀寄存器的名字,總保存著當前編輯文件的文件路徑。

所以執(zhí)行這個命令,就相當于從vim外部修改了當前編輯的文件,好完工。

4.切換回上一個目錄

$ cd -

應(yīng)該不少人都知道這個,橫桿-代表上一個目錄的路徑。

實際上cd -就是cd $OLDPWD的簡寫,bash的固定變量$OLDPWD總保存著之前一個目錄的路徑。

相對地,$PWD總保存著當前目錄的路徑。這些變量在編寫shell腳本時候相當有用。

5.替換上一條命令中的一個短語

$ ^foo^bar^

又是另外一個事件引用符(event designator),可以把上一條命令當中的foo替換成bar。

在需要重復(fù)運行調(diào)試一道長長的命令,需要測試某個參數(shù)時候,用這個命令會比較實用;但多數(shù)人會首先選擇按上箭頭提出上道命令,再移動光標去修改某參數(shù),這樣更直觀,但效率上就不夠使用引用符高,而且在腳本中用這個方法可以簡化很多。

這道命令的原始樣式應(yīng)該是這樣的:

!!:s/foo/bar/

本文一開始介紹過!!,后面的一段大家應(yīng)該很熟悉,vim、sed的替換操作都是這樣的語法。

關(guān)于事件引用符的更多用法可以深入閱讀The Definitive Guide to Bash Command Line History

6.快速備份一個文件

$ cp filename{,.bak}

這道命令把filename文件拷貝成filename.bak,大家應(yīng)該在一些比較復(fù)雜的安裝教程里面見過這樣的用法。其原理就在于bash對大括號的展開操作,filename{,.bak}這一段會被展開成filename filename.bak再傳給cp,于是就有了備份的命令了。

大括號在bash里面是一個排列的意義,可以試試這個:

$ echo {a,b,c}{a,b,c}{a,b,c}

將輸出三個集合的全排列:

aaa aab aac aba abb abc aca acb acc
baa bab bac bba bbb bbc bca bcb bcc
caa cab cac cba cbb cbc cca ccb ccc

7.免密碼SSH登錄主機

$ ssh-copy-id remote-machine

這個命令把當前用戶的公鑰串寫入到遠程主機的~/.ssh/authorized_keys內(nèi),這樣下次使用ssh登錄的時候,遠程主機就直接根據(jù)這串密鑰完成身份校驗,不再詢問密碼了。前提是你當前用戶有生成了公鑰,默認是沒有的,先執(zhí)行ssh-keygen試試吧!

這個命令如果用手工完成,是這樣的:

your-machine$ scp ~/.ssh/identity.pub remote-machine:
your-machine$ ssh remote-machine
remote-machine$ cat identity.pub >> ~/.ssh/authorized_keys

如果你想刪掉遠程主機上的密鑰,直接打開authorized_keys,搜索你的用戶名,刪除那行,即可。

8.抓取LINUX桌面的視頻

$ ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

我們在一些視頻網(wǎng)站上看到別人的3D桌面怎么怎么酷的視頻,通常就是這么來的,ffmpeg可以直接解碼X11的圖形,并轉(zhuǎn)換到相應(yīng)輸出格式。

ffmpeg的通常用法是,根據(jù)一堆參數(shù),輸出一個文件,輸出文件通常放***,下面解析下幾個參數(shù):

-f x11grab 指定輸入類型。因為x11的緩沖區(qū)不是普通的視頻文件可以偵測格式,必須指定后ffmpeg才知道如何獲得輸入。

-s wxga 設(shè)置抓取區(qū)域的大小。wxga是1366*768的標準說法,也可以換成-s 800×600的寫法。

-r 25 設(shè)置幀率,即每秒抓取的畫面數(shù)。

-i :0.0 設(shè)置輸入源,本地X默認在0.0

-sameq 保持跟輸入流一樣的圖像質(zhì)量,以用來后期處理。

后記

說Shell是一種編程語言,可能有些尷尬,雖然很多人每天都在用Shell,但從來沒見它榮登TIOBE編程語言排行榜之類的,可以說毫無名分,因為很多用戶沒意識到它是一種語言,只當做這是一個能夠很好完成任務(wù)的工具,基本得理所當然,就好像GUI程序的菜單、按鈕一樣。

掌握Shell,通常能夠讓任務(wù)在數(shù)秒鐘內(nèi)完成,這就讓Shell跟C、Perl、Python這些語言區(qū)別開來,沒人否認后者更能勝任更多的任務(wù),但是他們是在不同的層面上去做,Shell依賴大量的系統(tǒng)組件黏合調(diào)用,而后者依賴各種庫,各所擅長不同的應(yīng)用領(lǐng)域,比喻就是,Shell是混凝土,可以很方便地粘合一些建筑組件而成為穩(wěn)固的高樓大廈;但同樣是粘合劑,粘玻璃窗、粘書報、粘皮鞋,混凝土是絕對不合適的,Shell并不擅長一些細致操作,比如它連浮點運算都不支持,更別提什么圖形運算什么的。但這并不妨礙Shell來幫我們完成很多粗重任務(wù)。

上述就是小編為大家分享的Linux Shell命令具體有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI