久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Linux Shell命令具體有哪些

157次閱讀
沒有評論

共計 3186 個字符,預計需要花費 8 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關 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 times;600 的寫法。

-r 25 設置幀率,即每秒抓取的畫面數。

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

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

后記

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

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

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

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計3186字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 濮阳县| 长治市| 济南市| 扎赉特旗| 调兵山市| 澄城县| 玉田县| 如东县| 白银市| 砚山县| 弥勒县| 渭源县| 兴化市| 绿春县| 深州市| 宜良县| 通化市| 保山市| 长汀县| 玉林市| 基隆市| 子长县| 淳化县| 隆子县| 德昌县| 沁水县| 郯城县| 合水县| 嵊州市| 洛川县| 炉霍县| 自贡市| 怀安县| 韩城市| 靖远县| 嘉鱼县| 汶上县| 财经| 惠东县| 平远县| 新昌县|