原文連結
巧用cd命令:
1:用 CDPATH 來定義你的cd 命令的 根目錄
例:如現在不再/etc下
export CDPATH=/etc
cd mail
將會進入到 /etc/mail 目錄下
這樣我們就可以在我們自己的home 目錄下的.bash_profile檔案裡 加上 export CDPATH=path,這樣我們就可以把自己一個常用的目錄定為我們的cd的起始目錄
2:對於很深的目錄,如果想返回上一級或上兩級 或多級, 敲入很多http://www.cnblogs.com/......等會很麻煩,我們可以在.bash_profile裡加上
alias ..="cd .."
alias ..2="cd ../.."
alias ..3="cd http://www.cnblogs.com/.."
alias ..4="cd http://www.cnblogs.com/../.."
alias ..5="cd http://www.cnblogs.com/http://www.cnblogs.com/.."
這樣我們就可以用 ..5放回到上5級的目錄。
當然這裡你可以用任意的形式定義別名, 如用 cd2="cd ../..",或 cd...="cd ../.."等等。
這樣我們就可以使用我們自訂的“快速鍵”了。
3:一個命令解決建立目錄 && 進入此目錄
$ vi .bash_profile
function mkdircd () { mkdir -p "$@" && eval cd "/"/$$#/""; }
我們就可以用此自製的mkdircd命令實現目的了。
4:cd - 可以返回我們上一次到過的目錄, 這樣我們就不會為錯誤的輸入而跳出很深的目錄而懊惱了。而不用去用上下鍵 或 history去找上次的命令了。
5:popd , pushd , dirs :
pushd:把當前的目錄 入棧
popd : 把當前的目錄 出棧並進入該目錄
dirs:列出棧中的目錄。
6:用“shopt -s cdspell” 糾正你的輸入錯誤
現在sh下敲入以上命令, 若你想進入/tmp目錄 而錯誤的敲為了cd /temp ,則自動回糾正你的錯誤(當然這裡假設你沒有/temp這個目錄),也可以試試別的拼字錯誤的情況。
日期操作:
1:設定日期
date {mmddhhmiyyyy.ss}
mm – Month
dd – Date
hh – 24 hour format
mi – Minutes
yyyy – Year
ss – seconds
如:# date 013122192009.53
也可以用以下的形式:
# date +%Y%m%d -s "20090131"
# date -s "01/31/2009 22:19:53"
# date -s "31 JAN 2009 22:19:53"
# date set="31 JAN 2009 22:19:53"
只設定時間:
# date +%T -s "22:19:53"
# date +%T%p -s "10:19:53PM"
2:察看 硬體時間
用 hwclock
修改硬體時間:
# hwclock –systohc
# hwclock --systohc –utc
察看系統設定
# cat /etc/sysconfig/clock
3:設定日期格式
o %D date (mm/dd/yy)
o %d day of month (01..31)
o %m month (01..12)
o %y last two digits of year (00..99)
o %a locale’s abbreviated weekday name (Sun..Sat)
o %A locale’s full weekday name, variable length (Sunday..Saturday)
o %b locale’s abbreviated month name (Jan..Dec)
o %B locale’s full month name, variable length (January..December)
o %H hour (00..23)
o %I hour (01..12)
o %Y year (1970…)
舉例如:
$ date
Thu Jan 1 08:19:23 PST 2009
$ date --date="now"
Thu Jan 1 08:20:05 PST 2009
$ date --date="today"
Thu Jan 1 08:20:12 PST 2009
$ date --date='1970-01-01 00:00:01 UTC +5 hours' +%s
18001
$ date '+Current Date: %m/%d/%y%nCurrent Time:%H:%M:%S'
Current Date: 01/01/09
4:得到過去時間 和 將來的時間
過去時間:
$ date --date='3 seconds ago'
Thu Jan 1 08:27:00 PST 2009
$ date --date="1 day ago"
Wed Dec 31 08:27:13 PST 2008
$ date --date="1 days ago"
Wed Dec 31 08:27:18 PST 2008
$ date --date="1 month ago"
Mon Dec 1 08:27:23 PST 2008
$ date --date="1 year ago"
Tue Jan 1 08:27:28 PST 2008
$ date --date="yesterday"
Wed Dec 31 08:27:34 PST 2008
$ date --date="10 months 2 day ago"
Thu Feb 28 08:27:41 PST 2008
將來時間:
$ date
Thu Jan 1 08:30:07 PST 2009
$ date --date='3 seconds'
Thu Jan 1 08:30:12 PST 2009
$ date --date='4 hours'
Thu Jan 1 12:30:17 PST 2009
$ date --date='tomorrow'
Fri Jan 2 08:30:25 PST 2009
$ date --date="1 day"
Fri Jan 2 08:30:31 PST 2009
$ date --date="1 days"
Fri Jan 2 08:30:38 PST 2009
$ date --date="2 days"
Sat Jan 3 08:30:43 PST 2009
$ date --date='1 month'
Sun Feb 1 08:30:48 PST 2009
$ date --date='1 week'
Thu Jan 8 08:30:53 PST 2009
$ date --date="2 months"
Sun Mar 1 08:30:58 PST 2009
$ date --date="2 years"
Sat Jan 1 08:31:03 PST 2011
$ date --date="next day"
Fri Jan 2 08:31:10 PST 2009
$ date --date="-1 days ago"
Fri Jan 2 08:31:15 PST 2009
$ date --date="this Wednesday"
Wed Jan 7 00:00:00 PST 2009
1:查看ssh版本
ssh -V
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003 這個為 openSSh
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version)... 這個為ssh2
2:用username 登陸 hostname 上
ssh -l username hostname
3:察看用戶端 調試 資訊:
ssh -v -l username hostname
(加上 小寫 -v就可以看到了)
4:用 ~ and Control-Z 切換ssh 登陸
當用ssh 登陸到遠程伺服器後, 可以在sh 裡面輸入 ~ 和 ctr+z (當你先輸入 ~時,不能立即看到輸入的這個符號)
這樣你就把 遠程登陸的 session 切換成 後台執行 ,jobs命令可以查看,用 fg %1 再把它切換回來。
1:grep command
# grep search_word filename
-v 不顯示符合的行
-c 出現的次數
-r 在檔案夾裡面找
-i 忽略大小寫
-l 顯示合格 檔案名稱
2:find command
find path -name filename 以檔案名稱尋找
-type
-size (+100m:大於100m的)
-mtime (+60) 60天內未改動的 -2 2天內改動過的
-exec 找出來以後執行之後的命令
# find / -type f -name *.tar.gz -size +100M -exec ls -l {} /;
# find / -type f -name *.tar.gz -size +100M -exec rm -f {} /;
3:抑制標準輸出
> /dev/null
抑制 錯誤 輸出
2 >/dev/null
4:join 串連兩個檔案
5:改變檔案內容的大小寫 tr a-z A-Z < filename (小寫到達寫)
6:Xargs Command
Xargs 把前一個命令的輸出 當作後一個的輸入
# find /etc -name "*.conf" | xargs ls –l 列出在。。。下 的符合。。。的檔案
cat url-list.txt | xargs wget –c 一個檔案裡有你的url列表,你可以用這個一次下載下來
# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz 找出所有jpg檔案打包
7:Sort Command
以文本形式排序
sort filename
-r 倒序
$ sort -t: -k 2 names.txt -t(緊跟分隔字元) -k(第幾個域)
-u 排除重複項
8:Uniq Command
經常與sort一起排除重複的
sort namesd.txt | uniq
uniq -c 顯示出現的次數
uniq -d 只顯示重複了的
9:Cut Command
只顯示檔案的某一列
$ cut -d: -f 1,3 names.txt 以 : 分隔的檔案 顯示第一個 第三個 field
$ cut -c 1-8 names.txt 顯示檔案的每一行的前8個字元
cut -d: -f1 /etc/passwd Displays the unix login names for all the users in the system.
10:Stat Command
顯示某個檔案或檔案夾的屬性
stat /etc/my.cnf
-f 某個檔案系統的屬性
11:Diff Command
diff [options] file1 file2
12:ac Command
ac 統計使用者的串連的統計時間
-p 每個人的總時間
-d username 某個使用者的時間
1:zip command
文法: zip {.zip file-name} {file-names}
-r zip一個目錄
-{1..9} 1:fast 9:best default : 6
-P pwd 密碼 (會顯示 密碼)
-e pwd(密碼不會回顯)
-t 驗證一個zip檔案
2:unzip
-v 察看解壓詳細過程
-l 之查看其內容 而不解壓
3:tar command
文法:
Syntax: tar [options] [tar-archive-name] [other-file-names]
options:
c 建立一個tar檔案
v verbose mode,
f 制定壓縮的檔案名稱
t:察看tar檔案內容
x:解壓
z:使用在.gz檔案的情況下
gzip比bzip快 , 而bzip比gzip壓縮率大
j:使用在.bz2檔案的情況下
1:PS1 - Default Interaction Prompt
export PS1="/u@/h /w> " /u使用者名稱,/h 主機名稱 /w 當前路徑 , 如在home目錄下,則顯示~
/t 時間 , /@ 12小時形式的時間 $kernel_version kernel 版本號碼,
2:PS2 - Continuation Interactive Prompt
命令太長了,你要換一行輸入的話就要用這個 / ,寫在行尾,然後enter後預設提示為 >(這就是ps2)
export PS2="continue-> " 可以改變 為 continue->
3:PS3 - Prompt used by “select” inside shell script
4:PS4 - Used by “set -x” to prefix tracing output
在shell的debug模式下(set -x 進入debug),的提示
o $0 - indicates the name of script
o $LINENO - displays the current line number within the script
5:PROMPT_COMMAND
shell 在顯示ps1以後,就會執行 PROMPT_COMMAND.
6:改變ps1的提示顏色
$ export PS1="/e[0;34m/u@/h /w> /e[m "
/e[ 彩色提示 開始
x;ym 顏色值
/e[m 彩色提示 結束
顏色表如下:
Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
7:改變提示的背景顏色
/e[{code}m /e[m code:40-47
1:HISTTIMEFORMAT command:
在命令列裡面顯示 定義了HISTTIMEFORMAT 的話 , 在使用history命令時就會顯示制定格式的執行命令的時間
export HISTTIMEFORMAT=’%F %T ‘ %F 年月日 %T 時分秒
history n 顯示最近 n個命令
在命令列裡面 按 ctrl+R 會顯示 reverse-i-search 的提示,可以尋找相關的使用過的命令,找到以後可以編輯這個命令
在命令列下,輸入以下命令,都會執行上一次的命令:
!!
!-1
向上箭頭 然後 enter
按 ctrl+P 然後enter
!n 執行 history裡第n條記錄的命令
!prex 執行 以 prex為首碼 的最近一條命令
HISTSIZE = n
HISTFILESIZE =n限制 history的大小
~/.bash_history history儲存在這個檔案裡
HISTFILE=/root/.commandline_warrior 把history儲存在commandline_warrior 檔案裡
export HISTCONTROL=ignoredups 去掉history裡面連續重複的命令
export HISTCONTROL=erasedups 去掉history裡面所有重複的命令
export HISTCONTROL=ignorespace 使用者在命令 前 輸入一個空格,然後history裡面就看不到這個命令了
history -c 清楚之前的記錄
export HISTSIZE=0 限制history命令的使用
HISTIGNORE 忽略某些命令 (參數嚴格一致)
例如:export HISTIGNORE=”pwd:ls:ls –ltr:”忽略pwd , ls , ls -ltr