Bash 實用技巧大全

2021-07-23 19:41:06 字數 3690 閱讀 8763

&  後台執行程式 

()   使用子shell, 比如 (cd ../../commlib/; make) 

$()  命令替換,和 ``的作用是一樣的 

<< heredoc

使用舉例:

比如你要在 shell 指令碼中 使用 awk 指令碼 

awk -f

eof 

)$(())  執行整數計算 $((66/2)) 

if (( 算術運算 )) 

if [[ 字串運算 ]]

alias 定義命令別名

dot .  或 source 命令, 在當前shell中執行指令碼

exec 可以重定向當前shell的檔案描述符, 或執行另乙個程式。

trap 可以捕獲訊號

nohup 防止ssh 掛起導致的問題 

screen 可以用來保持 會話,  不受ssh的關閉影響

export 匯出變數給子shell使用

tee 可以 把 輸出 分流

env_var=value your_program 這樣可以 為這乙個程式 修改它環境變數,外部shell的環境變數沒有被更改

tac 倒置檔案

cd -   快速回到前乙個路徑

cd  回到使用者的home目錄

pushd, popd, dirs 實現多目錄跳轉

pushd命令用來更改您的當前目錄並將其儲存在堆疊中。popd命令用來從堆疊的頂部移除目錄並使您返回該位置。dirs命令來顯示當前目錄堆疊。(dir –v –p)

pushd +n; popd +n 可以操作虛擬目錄堆疊

你可能已經知道$path變數可以列出 bash的「搜尋路徑」——當在當前目錄不能找到請求的檔案時,bash會自動搜尋的目錄。不過,bash也支援$cdpath變數,當試圖改變目錄時該變數列出cd命令轉向的目錄。為了使用這個特性,我們要對$cdpath變數賦值乙個目錄列表,如下面的例子所示:

bash> cdpath='.:~:/usr/local/apache/htdocs:/disk1/backups'

bash> export cdpath

現在,無論何時使用cd命令,bash將會檢查$cdpath列表中的所有目錄來查詢要轉向的目錄名。

1) $*: 代表所有引數,其間隔為ifs內定引數的第乙個字元 

2) $@: 與*星號類同。不同之處在於不參照ifs 

3) $#: 代表引數數量 

4) $?: 執行上乙個指令的返回值 

5) $-: 最近執行的foreground pipeline的選項引數 

6) $$: 本身的process id 

7) $!: 執行上乙個背景指令的pid 

8) $_: 顯示出最後乙個執行的命令

emacs風格

ctrl+p: 方向鍵 上 ↑ 

ctrl+n: 方向鍵下 ↓ 

ctrl+b: 方向鍵 ← 

alt+f: 游標右移乙個單詞 

ctrl+f :方向鍵 → 

alt+b: 游標左移乙個單詞 

ctrl+a:游標移到行首 

ctrl+e:游標移到行尾 

ctrl+k:清除游標後至行尾的內容。 

ctrl+d: 刪除游標所在字母;注意和backspace以及ctrl+h的區別,這2個是刪除游標前的字元 

ctrl+r:搜尋之前打過的命令。會有乙個提示,根據你輸入的關鍵字進行搜尋bash的history 

ctrl+m : 輸入回車 

ctrl+i : 輸入tab 

ctrl+[ : 輸入esc

其它 ctrl+h:刪除游標前乙個字元,同 backspace 鍵相同。 

alt + p 非增量方式反向搜尋歷史 

alt + > 歷史命令列表中的最後一行命令開始向前 

ctrl+u: 清除游標前至行首間的所有內容。 

ctrl+w: 移除游標前的乙個單詞 

ctrl+t: 交換游標位置前的兩個字元 

ctrl+y: 貼上或者恢復上次的刪除 

ctrl+l:清屏,相當於clear。 

ctrl + xx 游標在行頭與行尾進行跳轉 

alt+r 撤銷當前行的所有內容 

ctrl+z : 把當前程序轉到後台執行 

ctrl+s : 鎖住螢幕 

ctrl+q : 恢復螢幕 

ctrl+v key: 輸入特殊字元 

alt + l 將當前游標處之後的字母轉化成小寫字母 

alt + u 將當前游標處之後的字母轉化成大寫字母 

ctrl + alt + e 擴充套件命令列的內容(例如:ls  =>  ls  -l  --color=tty) 

ctrl+c:殺死當前程序, 輸入模式下,中斷輸入的命令。 

ctrl+d:退出當前 shell 

esc + . 快捷鍵可以輪詢歷史命令的引數或選項。 

esc + t 快捷鍵可以 置換前兩個單詞。 

輸入重複字母 esc e 可以輸入100個e字元

按多次可以補全 

可以補全本機上的使用者名稱 

可以補全檔名 

可以補全主機名,localhost可以方便地用 lo補全.

!!    重新執行上一條命令 

!n  重新執行第n條命令。比如 !3 

!-n 重新執行倒數第n條命令。!-3 

!string  重新執行以字串打頭的命令。 比如 !vim 

!?string?  重新執行包含字串的命令。 比如 !?test.cpp? 

!?string?%  替換為: 最近包含這個字串的命令的引數。比如:   vim !?test.cpp?% 

!$   替換為:上一條命令的最後乙個引數。比如 vim !$ 

!!string  在上一條命令的後面追加 string ,並執行。 

!nstring  在第n條指令後面追加string,並執行。 

^old^new^  對上一條指令進行替換 修飾

:s/old/new/  對第n條指令中第一次出現的new替換為old。 比如 vim !?test.cpp?:s/cpp/c/ 

:gs/old/new/  全部替換 

:wn  w為數字, 取指令的第w個引數. 

:p 回顯命令而不是執行, 比如 !ls:p  。 這個很有用, 你可以先檢視你選的命令對不對,要執行時再使用!!

/etc/profile 設定環境變數(所有使用者) 

~/.bash_profile 設定環境變數(當前使用者) 

~/.bashrc 

~/.bash_history 

~/.bash_logout

好文要頂

關注我收藏該文

napoleon_liu

關注 - 1

粉絲 - 50

+加關注1 0

*** 用diff和patch工具維護原始碼

*** gcc 中的編譯器堆疊保護技術

posted @ 

2011-02-12 12:05

napoleon_liu 閱讀(

2)  

編輯收藏

#1樓[ 樓主] 

2011-02-18 10:29 | 

napoleon_liu

因為linux下很多程式都使用readline庫,所以上面提到的鍵繫結,在很多任務具上都可以使用,比如gdb,mysql.

位操作實用技巧大全

檢測乙個無符號數是不是2 n 1 為冪 x x 1 將最右側0位改為1位 x x 1 獲得最右側的0 x x 1 x 將最右側的1位改為0位 x x 1 二進位制補碼運算公式 x x 1 x 1 x x 1 x x 1 x x 1 x y x y 1 x y x y x y x y 1 x y x ...

Linux 實用技巧

值得一提的是vim是慈善軟體 charityware 如有贊助或評比得獎,所得將全部救助烏干達孤兒,軟體使用是免費的,歡迎手頭有點閒錢的使用者捐款贊助,如果沒銀子也沒關係,至少當有評比活動時 有獎金可拿的那種 應用技巧一 快速注釋 1 連續行注釋 使用vim vi編輯shell指令碼,在進行除錯的時...

vim實用技巧

以前習慣於eclipse,sourceinsight,vim用的不是很熟悉,在現在的公司中,vim是一種必備的技巧,慢慢,從難受到得心應手,vim還是比較好用的,下面記錄一點實用的技巧 1 vim ctags cscope是乙個強大的比擬於sourceinsight的字元介面的工具 2 ctrl 跳...