您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Linux Shell命令具體有哪些,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
引言
Shell作為Unix系操作系統當中最有魅力且不可或缺的組件,經過數十載的洗禮不僅沒有被淘汰,而且愈加變得成熟穩健,究其原因,大概因為它是個非常穩固的粘合劑,能夠把大量功能強大的組件任意配搭,總能很好很快地完成用戶的任務。
本文的一些命令很可能看起來是”雕蟲小技”,我們只好仰慕一下Shell大牛了,但是有些細節我會稍加發掘加以說明,遇到有趣的地方希望能博您一笑了。
1.以SUDO運行上條命令
$ sudo !!
大家應該都知sudo,不解釋。但通常出現的情況是,敲完命令執行后報錯才發現忘了sudo。這時候,新手用戶就會:按上箭頭,按左箭頭,盯著光標回到開始處,輸入sudo,回車;高手用戶就蛋定多了,按Ctrl-p,按Ctrl-a,輸入sudo,回車。
這里介紹這個是天外飛仙級別的,對,就直接sudo !!。
當然這幾種解決方式效果是完全一樣的,只是款不一樣,嗯,不解釋。
兩個感嘆號其實是bash的一個特性,稱為事件引用符(event designators)。!!其實相當于!-1,引用前一條命令,當然也可以!-2,!-50。默認情況下bash會在~/.bash_history文件內記錄用戶執行的最近500條命令,history命令可以顯示這些命令。
2.以HTTP方式共享當前文件夾的文件
$ python -m SimpleHTTPServer
這命令啟動了Python的SimpleHTTPServer模塊,考慮到Python在絕大多數的Linux發行版當中都默認安裝,所以這個命令很可能是最簡單的跨平臺傳文件的方法。
命令執行后將在本機8000端口開放HTTP服務,在其他能訪問本機的機器的瀏覽器打開ttp://ip:8000即打開一個目錄列表,點擊即可下載。
3.在以普通用戶打開的VIM當中保存一個ROOT用戶文件
:w !sudo tee %
這題目讀起來糾結,其實是很常見的,常常忘記了sudo就直接用vim編輯/etc內的文件,(不過也不一定,vim發現保存的文件無法保存時候會提示)等編輯好了,保存時候才發現沒權限。曲線方法是先保存個臨時文件,退出后再sudo cp回去。不過實際上在vim里面可以直接完成這個過程的,命令就是如此。
查閱vim的文檔(輸入:help :w),會提到命令:w!{cmd},讓vim執行一個外部命令{cmd},然后把當前緩沖區的內容從stdin傳入。
tee是一個把stdin保存到文件的小工具。
而%,是vim當中一個只讀寄存器的名字,總保存著當前編輯文件的文件路徑。
所以執行這個命令,就相當于從vim外部修改了當前編輯的文件,好完工。
4.切換回上一個目錄
$ cd -
應該不少人都知道這個,橫桿-代表上一個目錄的路徑。
實際上cd -就是cd $OLDPWD的簡寫,bash的固定變量$OLDPWD總保存著之前一個目錄的路徑。
相對地,$PWD總保存著當前目錄的路徑。這些變量在編寫shell腳本時候相當有用。
5.替換上一條命令中的一個短語
$ ^foo^bar^
又是另外一個事件引用符(event designator),可以把上一條命令當中的foo替換成bar。
在需要重復運行調試一道長長的命令,需要測試某個參數時候,用這個命令會比較實用;但多數人會首先選擇按上箭頭提出上道命令,再移動光標去修改某參數,這樣更直觀,但效率上就不夠使用引用符高,而且在腳本中用這個方法可以簡化很多。
這道命令的原始樣式應該是這樣的:
!!:s/foo/bar/
本文一開始介紹過!!,后面的一段大家應該很熟悉,vim、sed的替換操作都是這樣的語法。
關于事件引用符的更多用法可以深入閱讀The Definitive Guide to Bash Command Line History
6.快速備份一個文件
$ cp filename{,.bak}
這道命令把filename文件拷貝成filename.bak,大家應該在一些比較復雜的安裝教程里面見過這樣的用法。其原理就在于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內,這樣下次使用ssh登錄的時候,遠程主機就直接根據這串密鑰完成身份校驗,不再詢問密碼了。前提是你當前用戶有生成了公鑰,默認是沒有的,先執行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
我們在一些視頻網站上看到別人的3D桌面怎么怎么酷的視頻,通常就是這么來的,ffmpeg可以直接解碼X11的圖形,并轉換到相應輸出格式。
ffmpeg的通常用法是,根據一堆參數,輸出一個文件,輸出文件通常放***,下面解析下幾個參數:
-f x11grab 指定輸入類型。因為x11的緩沖區不是普通的視頻文件可以偵測格式,必須指定后ffmpeg才知道如何獲得輸入。
-s wxga 設置抓取區域的大小。wxga是1366*768的標準說法,也可以換成-s 800×600的寫法。
-r 25 設置幀率,即每秒抓取的畫面數。
-i :0.0 設置輸入源,本地X默認在0.0
-sameq 保持跟輸入流一樣的圖像質量,以用來后期處理。
后記
說Shell是一種編程語言,可能有些尷尬,雖然很多人每天都在用Shell,但從來沒見它榮登TIOBE編程語言排行榜之類的,可以說毫無名分,因為很多用戶沒意識到它是一種語言,只當做這是一個能夠很好完成任務的工具,基本得理所當然,就好像GUI程序的菜單、按鈕一樣。
掌握Shell,通常能夠讓任務在數秒鐘內完成,這就讓Shell跟C、Perl、Python這些語言區別開來,沒人否認后者更能勝任更多的任務,但是他們是在不同的層面上去做,Shell依賴大量的系統組件黏合調用,而后者依賴各種庫,各所擅長不同的應用領域,比喻就是,Shell是混凝土,可以很方便地粘合一些建筑組件而成為穩固的高樓大廈;但同樣是粘合劑,粘玻璃窗、粘書報、粘皮鞋,混凝土是絕對不合適的,Shell并不擅長一些細致操作,比如它連浮點運算都不支持,更別提什么圖形運算什么的。但這并不妨礙Shell來幫我們完成很多粗重任務。
上述就是小編為大家分享的Linux Shell命令具體有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。