日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

最牛B 的 Linux Shell 命令(一)

發(fā)布時(shí)間:2024/4/11 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最牛B 的 Linux Shell 命令(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 引言??
  • ??
  • Shell作為Unix系操作系統(tǒng)當(dāng)中最有魅力且不可或缺的組件,經(jīng)過數(shù)十載的洗禮不僅沒有被淘汰,而且愈加變得成熟穩(wěn)健,究其原因,大概因?yàn)樗莻€(gè)非常穩(wěn)固的粘合劑,能夠把大量功能強(qiáng)大的組件任意配搭,總能很好很快地完成用戶的任務(wù)。??
  • ??
  • 本文的一些命令很可能看起來是“雕蟲小技”,我們只好仰慕一下Shell大牛了,但是有些細(xì)節(jié)我會(huì)稍加發(fā)掘加以說明,遇到有趣的地方希望能博您一笑了。??
  • ??
  • 1.以sudo運(yùn)行上條命令??
  • ??
  • $?sudo?!!??
  • ??
  • 大家應(yīng)該都知sudo,不解釋。但通常出現(xiàn)的情況是,敲完命令執(zhí)行后報(bào)錯(cuò)才發(fā)現(xiàn)忘了sudo。這時(shí)候,新手用戶就會(huì):按上箭頭,按左箭頭,盯著光標(biāo)回到開始處,輸入sudo,回車;高手用戶就蛋定多了,按Ctrl-p,按Ctrl-a,輸入sudo,回車。??
  • ??
  • 這里介紹這個(gè)是天外飛仙級(jí)別的,對(duì),就直接sudo?!!。??
  • ??
  • 當(dāng)然這幾種解決方式效果是完全一樣的,只是款不一樣,嗯,不解釋。??
  • ??
  • 兩個(gè)感嘆號(hào)其實(shí)是bash的一個(gè)特性,稱為事件引用符(event?designators)。!!其實(shí)相當(dāng)于!-1,引用前一條命令,當(dāng)然也可以!-2,!-50。默認(rèn)情況下bash會(huì)在~/.bash_history?文件內(nèi)記錄用戶執(zhí)行的最近500條命令,history命令可以顯示這些命令。??
  • ??
  • 關(guān)于事件引用符的更多用法可以深入閱讀The?Definitive?Guide?to?Bash?Command?Line?History。??
  • ??
  • 2.以HTTP方式共享當(dāng)前文件夾的文件??
  • ??
  • $?python?-m?SimpleHTTPServer??
  • ??
  • 這命令啟動(dòng)了Python的SimpleHTTPServer模塊,考慮到Python在絕大多數(shù)的Linux發(fā)行版當(dāng)中都默認(rèn)安裝,所以這個(gè)命令很可能是最簡(jiǎn)單的跨平臺(tái)傳文件的方法。??
  • ??
  • 命令執(zhí)行后將在本機(jī)8000端口開放HTTP服務(wù),在其他能訪問本機(jī)的機(jī)器的瀏覽器打開ttp://ip:8000即打開一個(gè)目錄列表,點(diǎn)擊即可下載。??
  • ??
  • 3.在以普通用戶打開的vim當(dāng)中保存一個(gè)root用戶文件??
  • ??
  • :w?!sudo?tee?%??
  • ??
  • 這 題目讀起來糾結(jié),其實(shí)是很常見的,常常忘記了sudo就直接用vim編輯/etc內(nèi)的文件,(不過也不一定,vim發(fā)現(xiàn)保存的文件無法保存時(shí)候會(huì)?提示) 等編輯好了,保存時(shí)候才發(fā)現(xiàn)沒權(quán)限。曲線方法是先保存?zhèn)€臨時(shí)文件,退出后再sudo?cp回去。不過實(shí)際上在vim里面可以直接完成這個(gè)過程的,命令就是 如此。??
  • ??
  • 查閱vim的文檔(輸入:help?:w),會(huì)提到命令:w!{cmd},讓vim執(zhí)行一個(gè)外部命令{cmd},然后把當(dāng)前緩沖區(qū)的內(nèi)容從stdin傳入。??
  • ??
  • tee是一個(gè)把stdin保存到文件的小工具。??
  • ??
  • 而%,是vim當(dāng)中一個(gè)只讀寄存器的名字,總保存著當(dāng)前編輯文件的文件路徑。??
  • ??
  • 所以執(zhí)行這個(gè)命令,就相當(dāng)于從vim外部修改了當(dāng)前編輯的文件,好完工。??
  • ??
  • 4.切換回上一個(gè)目錄??
  • ??
  • $?cd?-??
  • ??
  • 應(yīng)該不少人都知道這個(gè),橫桿-代表上一個(gè)目錄的路徑。??
  • ??
  • 實(shí)際上cd?-就是cd?$OLDPWD的簡(jiǎn)寫,bash的固定變量$OLDPWD總保存著之前一個(gè)目錄的路徑。??
  • ??
  • 相對(duì)地,$PWD總保存著當(dāng)前目錄的路徑。這些變量在編寫shell腳本時(shí)候相當(dāng)有用。??
  • ??
  • 5.替換上一條命令中的一個(gè)短語??
  • ??
  • $?^foo^bar^??
  • ??
  • 又是另外一個(gè)事件引用符(event?designator),可以把上一條命令當(dāng)中的foo替換成bar。??
  • ??
  • 在需要重復(fù)運(yùn)行調(diào)試一道長(zhǎng)長(zhǎng)的命令,需要測(cè)試某個(gè)參數(shù)時(shí)候,用這個(gè)命令會(huì)比較實(shí)用;但多數(shù)人會(huì)首先選擇按上箭頭提出上道命令,再移動(dòng)光標(biāo)去修改某參數(shù),這樣更直觀,但效率上就不夠使用引用符高,而且在腳本中用這個(gè)方法可以簡(jiǎn)化很多。??
  • ??
  • 這道命令的原始樣式應(yīng)該是這樣的:??
  • ??
  • !!:s/foo/bar/??
  • ??
  • 本文一開始介紹過!!,后面的一段大家應(yīng)該很熟悉,vim、sed的替換操作都是這樣的語法。??
  • ??
  • 關(guān)于事件引用符的更多用法可以深入閱讀The?Definitive?Guide?to?Bash?Command?Line?History??
  • ??
  • 6.快速備份一個(gè)文件??
  • ??
  • $?cp?filename{,.bak}??
  • ??
  • 這 道命令把filename文件拷貝成filename.bak,大家應(yīng)該在一些比較復(fù)雜的安裝教程里面見過這樣的用法。其原理就在于bash對(duì)大?括號(hào)的 展開操作,filename{,.bak}這一段會(huì)被展開成filename?filename.bak再傳給cp,于是就有了備份的命令了。??
  • ??
  • 大括號(hào)在bash里面是一個(gè)排列的意義,可以試試這個(gè):??
  • ??
  • $?echo?{a,b,c}{a,b,c}{a,b,c}??
  • ??
  • 將輸出三個(gè)集合的全排列:??
  • ??
  • 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??
  • 關(guān)于shell當(dāng)中的集合操作,可深入閱讀“Set?Operations?in?the?Unix?Shell”??
  • ??
  • 7.免密碼ssh登錄主機(jī)??
  • ??
  • $?ssh-copy-id?remote-machine??
  • ??
  • 這 個(gè)命令把當(dāng)前用戶的公鑰串寫入到遠(yuǎn)程主機(jī)的~/.ssh/authorized_keys內(nèi),這樣下次使用ssh登錄的時(shí)候,遠(yuǎn)程主機(jī)就直接根據(jù)這串密鑰 完成身份校驗(yàn),不再詢問密碼了。前提是你當(dāng)前用戶有生成了公鑰,默認(rèn)是沒有的,先執(zhí)行ssh-keygen試試吧!??
  • ??
  • 這個(gè)命令如果用手工完成,是這樣的:??
  • ??
  • your-machine$?scp?~/.ssh/identity.pub?remote-machine:??
  • your-machine$?ssh?remote-machine??
  • remote-machine$?cat?identity.pub?>>?~/.ssh/authorized_keys??
  • ??
  • 如果你想刪掉遠(yuǎn)程主機(jī)上的密鑰,直接打開authorized_keys,搜索你的用戶名,刪除那行,即可。??
  • ??
  • 8.抓取Linux桌面的視頻??
  • 1??
  • $?ffmpeg?-f?x11grab?-s?wxga?-r?25?-i?:0.0?-sameq?/tmp/out.mpg??
  • ??
  • 我們?cè)谝恍┮曨l網(wǎng)站上看到別人的3D桌面怎么怎么酷的視頻,通常就是這么來的,ffmpeg可以直接解碼X11的圖形,并轉(zhuǎn)換到相應(yīng)輸出格式。??
  • ??
  • ffmpeg的通常用法是,根據(jù)一堆參數(shù),輸出一個(gè)文件,輸出文件通常放最后,下面解析下幾個(gè)參數(shù):??
  • ??
  • -f?x11grab?指定輸入類型。因?yàn)閤11的緩沖區(qū)不是普通的視頻文件可以偵測(cè)格式,必須指定后ffmpeg才知道如何獲得輸入。??
  • ??
  • -s?wxga?設(shè)置抓取區(qū)域的大小。wxga是1366*768的標(biāo)準(zhǔn)說法,也可以換成-s?800×600的寫法。??
  • ??
  • -r?25?設(shè)置幀率,即每秒抓取的畫面數(shù)。??
  • ??
  • -i?:0.0?設(shè)置輸入源,本地X默認(rèn)在0.0??
  • ??
  • -sameq?保持跟輸入流一樣的圖像質(zhì)量,以用來后期處理。??
  • ??
  • 后記??
  • 說 Shell是一種編程語言,可能有些尷尬,雖然很多人每天都在用Shell,但從來沒見它榮登TIOBE編程語言排行榜之類的,可以?說毫無名分,因?yàn)楹?多用戶沒意識(shí)到它是一種語言,只當(dāng)做這是一個(gè)能夠很好完成任務(wù)的工具,基本得理所當(dāng)然,就好像GUI程序的菜單、按鈕一樣。??
  • ??
  • 掌 握Shell,通常能夠讓任務(wù)在數(shù)秒鐘內(nèi)完成,這就讓Shell跟C、Perl、Python這些語言區(qū)別開來,沒人否認(rèn)后者更能勝任更多的任?務(wù),但是 他們是在不同的層面上去做,Shell依賴大量的系統(tǒng)組件黏合調(diào)用,而后者依賴各種庫(kù),各所擅長(zhǎng)不同的應(yīng)用領(lǐng)域,比喻就是,Shell是混凝土,?可以很 方便地粘合一些建筑組件而成為穩(wěn)固的高樓大廈;但同樣是粘合劑,粘玻璃窗、粘書報(bào)、粘皮鞋,混凝土是絕對(duì)不合適的,Shell并不擅長(zhǎng)一些細(xì)致操?作,比 如它連浮點(diǎn)運(yùn)算都不支持,更別提什么圖形運(yùn)算什么的。但這并不妨礙Shell來幫我們完成很多粗重任務(wù)。??
  • ??
  • Shell的工作方式,大多數(shù)入門用戶會(huì)覺得枯燥難學(xué),而所謂的經(jīng)典教材也離不開《Advanced?Bash-Scripting》、《Bash?Guide?for?Beginners》,但類似本文這樣的一些“雕蟲小技”因?yàn)殡y登大雅之堂絕不會(huì)收錄進(jìn)去。這情況如果象國(guó)外一些unix用戶比較多的地方會(huì)有很好改善,?即使是新手,偶爾看看別人的操作都能“偷師”一手,我編譯本系列文章其實(shí)也就希望稍微改善一下這個(gè)狀況。
  • 轉(zhuǎn)載于:https://www.cnblogs.com/kuangxiangjie/archive/2010/12/24/1916348.html

    總結(jié)

    以上是生活随笔為你收集整理的最牛B 的 Linux Shell 命令(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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