Linux 命令行黑技術(shù)(LTS)

Linux命令行,是開發(fā)人員日常接觸的東西。但是栅组,有很多小技巧袱衷。我在這里做個(gè)總結(jié)(長期更新)。


image

在路徑間如魚得水

黑技術(shù)1:設(shè)立根目錄

如果笑窜,你經(jīng)常使用一個(gè)目錄作為你的根目錄,那么登疗,你可以通過CDPATH來指定你的cd根目錄排截。
例如,我經(jīng)常到/etc目錄下,來対相應(yīng)的文件進(jìn)行配置辐益。比如我想從我的家目錄到/etc/nginx/目錄下断傲,一般的方法是:

cd /etc/nginx/ 

有沒有可以偷懶的法子呢?當(dāng)然有智政,我們可以在.bashrc(如果你是zsh的話认罩,就在.zshrc下)加入export CDPATH=/etc
現(xiàn)在,你想打開的/etc/nginx/目錄下续捂,只需要輸入:

cd nginx

懶人必備垦垂。
當(dāng)然,你可以輸入多個(gè)根路徑牙瓢,只要在每個(gè)路徑下用:隔開劫拗。

export CDPATH=.:~:/etc:/var:

黑技術(shù)2:在兩個(gè)路徑相互切換

當(dāng)我們經(jīng)常需要在一個(gè)terminal下,在兩個(gè)路徑之間矾克,來回切換页慷。這個(gè)時(shí)候,我們可以使用cd -,在兩個(gè)路徑之間“反復(fù)橫跳”胁附。

image

例如:第一個(gè)路徑是/etc/nginx/酒繁,第二個(gè)路徑是~/project/,我們先cd /etc/nginx/下,然后控妻,再cd ~/project/州袒。隨后,當(dāng)我們需要切換另一個(gè)路徑只需要cd -就可以實(shí)現(xiàn)饼暑。

黑技術(shù)3:將路徑通過棧的方式訪問

如果稳析,遇到訪問路徑的過程像棧這種數(shù)據(jù)結(jié)構(gòu),那么我們可以用pushd來解決弓叛。
實(shí)現(xiàn)過程:

  1. 導(dǎo)航到相應(yīng)的目錄例如/tmp/push1
  2. 使用pushd命令壓入目錄棧
  3. 在其他路徑下彰居,使用popd命令,導(dǎo)航到棧頂目錄撰筷。

例子:

/tmp/目錄下創(chuàng)建來push1,push2,push3三個(gè)目錄陈惰,需求是將這三個(gè)目錄分別壓入目錄棧,然后分別導(dǎo)航到相應(yīng)的目錄毕籽。下面將顯示整個(gè)過程:

# pcdack @ pcdack-sword in /tmp/push1 [18:58:01] 
$ pwd
/tmp/push1

# pcdack @ pcdack-sword in /tmp/push1 [18:58:15] 
$ pushd .
/tmp/push1 /tmp ~

# pcdack @ pcdack-sword in /tmp/push1 [18:58:22] 
$ cd /tmp/push2

# pcdack @ pcdack-sword in /tmp/push2 [18:58:31] 
$ pushd .
/tmp/push2 /tmp/push1 /tmp ~

# pcdack @ pcdack-sword in /tmp/push2 [18:58:37] 
$ cd /tmp/push3

# pcdack @ pcdack-sword in /tmp/push3 [19:00:23] 
$ pushd .
/tmp/push3 /tmp/push2 /tmp/push1 /tmp ~

# pcdack @ pcdack-sword in /tmp/push3 [19:00:28] 
$ popd
/tmp/push2 /tmp/push1 /tmp ~

# pcdack @ pcdack-sword in /tmp/push2 [19:00:37] 
$ popd
/tmp/push1 /tmp ~

整個(gè)過程非常簡(jiǎn)單抬闯,相信大家都能看得懂井辆。

腳本:

當(dāng)然我們可以將導(dǎo)航與壓棧操作結(jié)合起來,我們可以將下面的代碼寫到.bashrc或者.zshrc下來實(shí)現(xiàn)溶握。

function pushcd(){
    cd "$@" && eval pushd .;
}

然后杯缺,壓棧和切換路徑一個(gè)命令解決。

黑技術(shù)4:“優(yōu)雅”的切換上級(jí)目錄

如果我們身處一個(gè)特別深的目錄下睡榆,例如:/dev/bus/usb/001萍肆。那么,我們?nèi)绾吻袚Q到/dev/bus/目錄下咧胀屿?一般的做法是cd ../..,這里只有兩級(jí)目錄看似還是可以接受的塘揣,但是,如果宿崭,有一天亲铡,要回退五級(jí)目錄。那么一般的寫法就不優(yōu)雅了葡兑。所以奖蔓,在這里要介紹一個(gè)黑技術(shù)。使用alias來解決問題铁孵。在我們的.bashrc或者.zshrc下輸入:

alias ..="cd .."
alias ..2="cd ../.."
alias ..3="cd ../../.."
alias ..4="cd ../../../.."
alias ..5="cd ../../../../.."

然后锭硼,我們回退兩級(jí)目錄將變成..2,優(yōu)雅蜕劝,快樂檀头,美麗。
當(dāng)然岖沛,也可以用其他表示方法:例如:cd1,cd2...

黑技術(shù)5:mkdir與cd的結(jié)合

在日常的開發(fā)中暑始,我們經(jīng)常需要?jiǎng)?chuàng)建一個(gè)文件夾,并且婴削,導(dǎo)航到這個(gè)目錄廊镜。但是,為了優(yōu)(tou)雅(lan)唉俗。我們可以把兩個(gè)命令和在一起嗤朴。創(chuàng)建一個(gè)新的命令mkdircd。把下面的代碼添加到.bashrc或者.zshrc下:

function mkdircd(){
    mkdir -p "$@" && eval cd "\"\$$#\"";
}

這樣就OK了虫溜。

原來你是這樣的剪切板

我們經(jīng)常在terminal中雹姊,使用系統(tǒng)剪切板。比如衡楞,將一個(gè)命令的輸出復(fù)制到剪切板吱雏,然后,粘貼到瀏覽器或其他地方等等的用途。首先歧杏,我們需要一個(gè)軟件叫xsel镰惦。在各大發(fā)行版本中的包管理中都有,比如在arch中pacman -S xsel就可以安裝了犬绒。

使用

1.將命令輸出到剪切板,比如旺入,我想將ls的結(jié)果復(fù)制到剪切板中,那么輸入下面的命令就可以了:

ls | xsel -i -b

為了更加方便調(diào)用凯力,我們可以.zshrc或者.bashrc填入如下代碼:

alias to_clipboard="sel -i -b"

那么眨业,剛剛的例子就變成了:

ls | to_clipboard

當(dāng)然,我們也可以集成查看剪切板內(nèi)容的命令,在.zshrc或是.bashrc中添加:

alias clipboard="xsel -b -o"

當(dāng)我們?cè)趖erminal中輸入clipboard時(shí),就會(huì)將剪切板的內(nèi)容輸出沮协。

壓縮文件自如操作

黑技術(shù)1:萬能解壓命令

在Linux中,壓縮的格式有很多種類卓嫂,例如慷暂,常用的有.tar.gz,zip,tar.bz2等等。解壓命令“又臭又長”晨雳,那么行瑞,我們能不能一個(gè)命令就可以把所有的壓縮格式的文件解壓出來咧?當(dāng)然是可以的餐禁,我們只需要將下面腳本添加到.zshrc或者.bashrc里血久,就可以做到一個(gè)命令解壓所有:

注意:你的機(jī)器里需要預(yù)先安裝了unrar,unzip命令

ex ()
{
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xjf $1   ;;
      *.tar.gz)    tar xzf $1   ;;
      *.bz2)       bunzip2 $1   ;;
      *.rar)       unrar x $1     ;;
      *.gz)        gunzip $1    ;;
      *.tar)       tar xf $1    ;;
      *.tbz2)      tar xjf $1   ;;
      *.tgz)       tar xzf $1   ;;
      *.zip)       unzip $1     ;;
      *.Z)         uncompress $1;;
      *.7z)        7z x $1      ;;
      *)           echo "'$1' cannot be extracted via ex()" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}

黑技術(shù)2:頭文字“Z”

有些時(shí)候帮非,我們需要直接查看壓縮包里的內(nèi)容氧吐,而不需要解壓這個(gè)壓縮包,那么我們可以使用z字頭命令末盔。這個(gè)系列一共有:

  1. zgrep
  2. zcat
  3. zless
  4. zmore
  5. zdiff
    這些命令其實(shí)和不帶"z"的功能類似筑舅,只不過作用的對(duì)象不一樣。"z"命令是專門用在壓縮文件下的陨舱。
    例子:
#我先創(chuàng)建幾個(gè)文本文件
echo "this first line">first
gzip first
# 我們通過調(diào)用z命令來查看內(nèi)容
zcat first.gz
# 當(dāng)然同理我們可以通過zless翠拣,zmore來查看
# zgrep需要查找的字符用\-i參數(shù)指定,比如我想查找?guī)в衊line`字眼的內(nèi)容:
zgrep -i line first.gz
# zdiff用來對(duì)比兩個(gè)歸檔文件的不同,與diff類似
# 我們首先創(chuàng)建一個(gè)新的文本
echo "this second line">second
gzip second 
# 然后進(jìn)行對(duì)比
zdiff first.gz second.gz

”智慧“的Grep命令

黑技術(shù):使grep具有與游盲,或误墓,非的邏輯

grep是我們經(jīng)常使用的文本搜索工具。那么益缎,我們?nèi)绾问刮覀兊膅rep具有與谜慌,或,非搜索條件链峭?
在介紹使用之前畦娄,我們先顯示我們要處理的數(shù)據(jù)(employee文件)

100 張三 CEO 薪水 100k
101 李四 android工程師 薪水 10k
102 王五 IOS工程師 薪水 10k
103 劉六 Web工程師 薪水 20k
104 馮七 大數(shù)據(jù)工程師 薪水 25k

grep并沒有直接的”與“命令,需要我們使用正則表達(dá)式來模擬與命令

grep -E "字符1.*字符2" filename
grep -E "字符1.*字符2|字符2.*字符1" filename

我們要匹配要姓張,并且是CEO兩個(gè)條件熙卡。那么杖刷,我們輸入的命令是:

grep -E "張.*CEO" employee

我們要找文檔中姓李與姓張的人:
方法1:

grep '字符1\|字符2' filename
grep '張\|李' employee

方法2:

grep -E '字符1|字符2' employee
grep -E '張|李' employee

除去所有姓李的人

grep -v '字符1' employee
grep -v '李' employee

(未完待續(xù))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市驳癌,隨后出現(xiàn)的幾起案子滑燃,更是在濱河造成了極大的恐慌,老刑警劉巖颓鲜,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件表窘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡甜滨,警方通過查閱死者的電腦和手機(jī)乐严,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衣摩,“玉大人昂验,你說我怎么就攤上這事“纾” “怎么了既琴?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泡嘴。 經(jīng)常有香客問我甫恩,道長,這世上最難降的妖魔是什么酌予? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任磺箕,我火速辦了婚禮,結(jié)果婚禮上抛虫,老公的妹妹穿的比我還像新娘滞磺。我一直安慰自己,他們只是感情好莱褒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布击困。 她就那樣靜靜地躺著,像睡著了一般广凸。 火紅的嫁衣襯著肌膚如雪阅茶。 梳的紋絲不亂的頭發(fā)上菩混,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天阵谚,我揣著相機(jī)與錄音启昧,去河邊找鬼提陶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛让腹,可吹牛的內(nèi)容都是我干的焦读。 我是一名探鬼主播仓蛆,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝌诡!你這毒婦竟也來了溉贿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤浦旱,失蹤者是張志新(化名)和其女友劉穎宇色,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颁湖,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宣蠕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甥捺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抢蚀。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖镰禾,靈堂內(nèi)的尸體忽然破棺而出思币,到底是詐尸還是另有隱情,我是刑警寧澤羡微,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站惶我,受9級(jí)特大地震影響妈倔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绸贡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一盯蝴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧听怕,春花似錦捧挺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至声搁,卻和暖如春黑竞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疏旨。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工很魂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檐涝。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓遏匆,卻偏偏與公主長得像法挨,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幅聘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言陵叽,發(fā)作 oo-boon-too 的音狞尔。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,257評(píng)論 9 467
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評(píng)論 0 5
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,159評(píng)論 2 33
  • 1.fedora、redhat巩掺、Centos偏序、 suse、ubuntu都是常見的linux 2./分區(qū)胖替、swap分...
    liudai123閱讀 890評(píng)論 0 3
  • 本文筆記源自這里——[實(shí)驗(yàn)樓]歡迎大家在下面交流其中有問題的地方喜歡請(qǐng)點(diǎn)收藏研儒,每日更新(全部已親自實(shí)踐). 一. ...
    東皇Amrzs閱讀 3,985評(píng)論 7 54