www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > IOT物聯(lián)網(wǎng)小鎮(zhèn)
[導(dǎo)讀]使用Linux系統(tǒng)的開發(fā)者,很多人都有自己喜歡的系統(tǒng)命令,下面這個(gè)幾個(gè)命令令是我平常用的比較多的,分享一下。我不會(huì)教科書般的羅列每個(gè)指令的詳細(xì)用法,只是把日常開發(fā)過(guò)程中的一些場(chǎng)景下,經(jīng)常使用的命令常見用法進(jìn)行演示。希望對(duì)您有小小的幫助~~也非常歡迎各位大俠,在留言區(qū)分享您的私房命...

使用Linux系統(tǒng)的開發(fā)者,很多人都有自己喜歡的系統(tǒng)命令,下面這個(gè)幾個(gè)命令令是我平常用的比較多的,分享一下。


不會(huì)教科書般的羅列每個(gè)指令的詳細(xì)用法,只是把日常開發(fā)過(guò)程中的一些場(chǎng)景下,經(jīng)常使用的命令常見用法進(jìn)行演示。


希望對(duì)您有小小的幫助~~也非常歡迎各位大俠,在留言區(qū)分享您的私房命令。


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.1 grep
grep、awk、sed 這三個(gè)指令,作為L(zhǎng)inux系統(tǒng)中文本處理的三大法寶,我最喜歡、最常用的就是grep指令,沒有之一!


它的基本用法是:


grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN]... [-f FILE]... [FILE...]
看起來(lái)有那么的選項(xiàng),我最常用的是這2個(gè)場(chǎng)景


1. 在一個(gè)文件或者文件夾中,查找指定的字符串:


grep -rni "pthread" *
-r: 遞歸查找;
-n:打印行號(hào);
-i: 不區(qū)分大小寫;


2. 查看某個(gè)進(jìn)程的相關(guān)信息,例如:進(jìn)程 ID


$ ps -aux | grep bash
root 4681 0.0 0.1 24892 5912 pts/3 Ss 10:10 0:00 bash
root 18052 0.0 0.0 15968 960 pts/3 S 13:38 0:00 grep --color=auto bash
可以看到,結(jié)果中出現(xiàn)了grep這個(gè)指令自身的進(jìn)程信息,可以通過(guò)-v選項(xiàng)過(guò)濾掉它:


$ ps -aux | grep bash | grep -v grep
root 4681 0.0 0.1 24892 5912 pts/3 Ss 10:10 0:00 bash
最后,再結(jié)合awk命令,就可以把進(jìn)程ID 4681提取出來(lái)了:


$ ps -aux | grep bash | grep -v grep | awk '{print $2}'
4681
在一些腳本工具中,這樣的用法還是很常見的。


例如:在一些守護(hù)進(jìn)程的啟動(dòng)腳本中,都會(huì)利用這條指令來(lái)判斷:當(dāng)前系統(tǒng)中是否已經(jīng)有一個(gè)實(shí)例正在運(yùn)行了。


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.2 q
看到這個(gè)指令,您一定會(huì)疑惑:僅僅一個(gè)字母 q,這是何方神圣?


Linux系統(tǒng)中壓根就沒有這個(gè)命令!


是的,這個(gè)字母僅僅是一個(gè)alias(別名)。


我有很強(qiáng)的強(qiáng)迫癥,在終端窗口執(zhí)行一條命令的時(shí)候,我經(jīng)常會(huì)需要確認(rèn)指令是否執(zhí)行正確。


在Linux系統(tǒng)中,$?用來(lái)表示最后命令的退出狀態(tài):0表示沒有錯(cuò)誤,其他表示錯(cuò)誤。


因此,在執(zhí)行完一條命令后,可以執(zhí)行下面的這條命令來(lái)確認(rèn):剛才執(zhí)行的那條命令是否成功了。


echo $?
強(qiáng)迫癥的問(wèn)題是解決了,但是由于這條指令使用的太頻繁了,需要敲那么多的字符,還要結(jié)合shift按鍵。


于是我就給它設(shè)置了一個(gè)alias(別名)。


設(shè)置alias的方法估計(jì)都知道啊,就是在個(gè)人家目錄下的.bashrc中修改。


我的alias設(shè)置如下:


alias ll='ls -lF'
alias la='ls -A'
alias l='ls -CF'
alias q='echo $?'
這樣的話,每次執(zhí)行完一條系統(tǒng)命令之后,隨手敲一個(gè)字母 q就可以檢查執(zhí)行結(jié)果了,省時(shí)省力!


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.3 pwd
可能有些人會(huì)奇:pwd怎么會(huì)是常用命令呢?它的作用是打印當(dāng)前路徑,在命令行窗口中,路徑是一直顯示出來(lái)的?。?/span>


沒錯(cuò),在默認(rèn)的情況下,當(dāng)前所處的路徑信息,是直接顯示出來(lái)的,如下:


root@ubuntu:~/OpenSource/linux-4.15/samples/watchdog$
但是這里有一個(gè)小小的問(wèn)題:如果終端窗口的大小并不是全屏的,如果目錄層次比較深,那么顯示的路徑信息就會(huì)特別的長(zhǎng),這樣的話,本來(lái)就不太寬的終端窗口就顯得很擠,輸入命令的時(shí)候很可能要折返到下一行去。


于是,我就喜歡把這個(gè)顯示的路徑給它縮短:只顯示最后一個(gè)文件目錄,如下:


root@ubuntu:watchdog$
也就是把前面的~/OpenSource/linux-4.15/samples路徑信息都丟掉,這樣的話,終端窗口中就有足夠的空間來(lái)輸入了。


如果某個(gè)時(shí)候,我想看一下當(dāng)前目錄的全路徑,那么就執(zhí)行一下 pwd 這個(gè)指令就可以了。


這就是我為什么經(jīng)常使用pwd命令的原因。


那么,應(yīng)該怎么樣來(lái)去掉顯示路徑中的目錄信息呢?


還是修改家目錄下的.bashrc文件:


if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot: ($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot: ($debian_chroot)}\u@\h:\w\$ '
fi

找到上面這幾行內(nèi)容,把最后面的\w修改成\W即可,也就是小寫的w改成大寫的W。


如果你正在測(cè)試,請(qǐng)不要忘記使用source .bashrc或者. .bashrc命令來(lái)重新加載哦!


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.4 find
find命令用來(lái)查找符合指定條件的文件。


我最常用的場(chǎng)景就是:查找指定名稱或類型的文件了。


特別是在寫Makefile的時(shí)候,經(jīng)常遇到找不到頭文件的錯(cuò)誤,于是就可以這樣查找:


find ./ -name xxx.h
或者按照后綴名來(lái)查找文件:


find ./ -name *.txt
這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.5 history
history用來(lái)記錄執(zhí)行過(guò)的命令,如果您很少使用這條命令,那說(shuō)明您的記憶力很好!


但是對(duì)于我這樣忘性比較好的人來(lái)說(shuō),history命令簡(jiǎn)直太有用了!


我在命令行窗口中測(cè)試某段代碼,經(jīng)常需要反復(fù)的做這樣的排錯(cuò)過(guò)程:修改代碼-編譯-執(zhí)行-查看結(jié)果。


如果編譯指令比較長(zhǎng),我相信沒有誰(shuí)樂意一個(gè)字符一個(gè)字符的敲鍵盤,大部分是使用history列出最近使用的命令,然后復(fù)制、粘貼一下。


查看歷史命令的時(shí)候,由于輸出太多,可以結(jié)合grep指令,只顯示我們感興趣的命令記錄,例如:


history | grep gcc
那么,結(jié)果中將只會(huì)顯示帶有g(shù)cc字眼的那些命令。


另外,還有一個(gè)小技巧:在不查看history的情況下,快速的輸入之前執(zhí)行過(guò)的某條指令(有一個(gè)前提條件:你必須能記住那條指令中剛開始的幾個(gè)字符)。


比如,之前已經(jīng)執(zhí)行過(guò)這條指令:


gcc -m32 -Wl,--export-dynamic -o main main.c -ldl
幾分鐘之后,我想再次執(zhí)行這條命令,可以這么做:


同時(shí)按下 control 和 r 這兩個(gè)按鍵,此時(shí)輸入光標(biāo)處就會(huì)變成這樣:


root@ubuntu:tmp$
(reverse-i-search)`':
這時(shí),可以輸入命令最前面的幾個(gè)字母:gcc -m,此時(shí)終端就會(huì)到歷史命令記錄中去查找,輸入的字符越多,匹配就越精確。


如果輸入的字符,精準(zhǔn)的匹配到了某個(gè)歷史命令記錄,它就立刻把這條命令完整的顯示出來(lái)。


這個(gè)小技巧真的很好用,推薦您試一下!


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.6 od
od命令用來(lái)輸出給定文件的內(nèi)容。


輸入文件內(nèi)容的指令有很多了:cat、head、tail等等。但是od命令主要用來(lái)查看文件的二進(jìn)制編碼,顯示的時(shí)候可以以指定的進(jìn)制進(jìn)行顯示。


在之前的一篇拆解 ELF 格式的文章中:Linux系統(tǒng)中編譯、鏈接的基石-ELF文件:扒開它的層層外衣,從字節(jié)碼的粒度來(lái)探索,我就大量的使用了od指令,在一個(gè)ELF格式的文件中,從任意地址開始、讀取任意長(zhǎng)度的字節(jié)碼。


例如下面這條指令:讀取main文件中最開始的52個(gè)字節(jié)的內(nèi)容:


od -Ax -t x1 -N 52 main
main是Linux系統(tǒng)中的可執(zhí)行程序,當(dāng)然也就是ELF格式了。


od指令中使用到了下面這幾個(gè)選項(xiàng):


-Ax: 顯示地址的時(shí)候,用十六進(jìn)制來(lái)表示。如果使用 -Ad,意思就是用十進(jìn)制來(lái)顯示地址;


-t -x1: 顯示字節(jié)碼內(nèi)容的時(shí)候,使用十六進(jìn)制(x),每次顯示一個(gè)字節(jié)(1);


-N 52:只需要讀取 52 個(gè)字節(jié);


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?可以看出main文件最開始的四個(gè)字節(jié):7f 是 ELF 文件的魔數(shù),45 4c 46 是 "ELF" 3個(gè)字母。


因此,使用od命令來(lái)分析二進(jìn)制文件的內(nèi)容,還是很有威力的!


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?
No.7 for
for這個(gè)命令,常常出現(xiàn)在腳本文件中,用來(lái)處理循環(huán)的情況,比如:遍歷文件、計(jì)數(shù),例如:


#!/bin/bash

for file in /tmp/*;
do
echo $file;
done
我在使用for的時(shí)候,最常用的場(chǎng)景是給很多相同后綴的文件,按順序進(jìn)行重命名


i=0;for x in *.mp4; do n=$(printf "d" "$i"); mv $x $n.mp4; let i=i 1; done
這里是按照純數(shù)字來(lái)重命名的,也可以根據(jù)需要加上前綴等字符串。


這里還有一個(gè)小問(wèn)題需要注意一下:如果文件名中存在空格,mv指令就會(huì)提示錯(cuò)誤


mv: target 'xxx' is not a directory
解決方法是:在終端窗口中,先執(zhí)行一下這個(gè)命令:


IFS='

'
然后,再執(zhí)行批量重命名命令,就不會(huì)出現(xiàn)錯(cuò)誤了!


這 7 個(gè) Linux 命令,你是怎么來(lái)使用的?當(dāng)然,更好的方式是,把這幾個(gè)命令寫成一個(gè)腳本文件,實(shí)現(xiàn)對(duì)任意類型的文件進(jìn)行批量重命名功能,然后放在自己的私有bin目錄下,隨取隨用。


別擔(dān)心,我已經(jīng)幫你寫好了,如下所示(file_rename.sh):


#!/bin/bash

if [ $# -eq 0 ];then
sufix=mp4
else
sufix=$1
fi

IFS='

'

i=0;for x in *.$sufix; do n=$(printf "d" "$i"); mv $x $n.$sufix; let i=i 1; done

只要執(zhí)行./file_rename.sh,就會(huì)默認(rèn)把當(dāng)前目錄下所有mp4文件進(jìn)行重命名。


如果是其他類型的文件,那就傳遞一個(gè)參數(shù)進(jìn)去。


比如:如果要批量對(duì)png格式的圖片進(jìn)行重命名,那就執(zhí)行./file_rename.sh png,最后的png是傳入的參數(shù),對(duì)應(yīng)于腳本文件中的$1變量。



------ End ------期待您在留言區(qū)分享自己的私房指令,任何技術(shù)問(wèn)題可以探討!
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉