這是一個linux常見指令的清單。
所有的指令已在fedora和ubuntu下做了測試
指令
描述
•
apropos whatis
生成一個pdf格式的幫助檔案
which command
顯示指令的完整路徑名
time command
計算指令運作的時間
time cat
運作一個低優先級指令(這裡是info)
renice 19 -p $$
使腳本運作于低優先級。用于非互動任務。
目錄操作
cd -
回到前一目錄
cd
回到使用者目錄
(cd dir && command)
進入目錄dir,執行指令command然後回到目前目錄
pushd .
将目前目錄壓入棧,以後你可以使用popd回到此目錄
檔案搜尋
單字元檔案清單指令
ls -lrt
ls /usr/bin | pr -t9 -w$columns
在目前終端寬度上列印9列輸出
find -name '*.[ch]' | xargs grep -e 'expr'
find -type f -print0 | xargs -r0 grep -f 'example'
在目前目錄及其子目錄中的正常檔案中查找字元串'example'
find -maxdepth 1 -type f | xargs grep -f 'example'
在目前目錄下查找字元串'example'
對每一個找到的檔案執行多個指令(使用while循環)
find -type f ! -perm -444
尋找所有不可讀的檔案(對網站有用)
find -type d ! -perm -111
尋找不可通路的目錄(對網站有用)
locate -r 'file[^/]*\.txt'
使用locate 查找所有符合*file*.txt的檔案
look reference
在(有序)字典中快速查找
使字典中比對的正規表達式高亮
歸檔 and compression
gpg -c file
檔案加密
gpg file.gpg
檔案解密
tar -c dir/ | bzip2 > dir.tar.bz2
将目錄dir/壓縮打包
bzip2 -dc dir.tar.bz2 | tar -x
展開壓縮包 (對tar.gz檔案使用gzip而不是bzip2)
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
目錄dir/壓縮打包并放到遠端機器上
find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2
将目錄dir/及其子目錄下所有.txt檔案打包
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents
将目錄dir/及其子目錄下所有.txt按照目錄結構拷貝到dir_txt/
( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p )
拷貝目錄copy/到目錄/where/to/并保持檔案屬性
( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )
拷貝目錄copy/下的所有檔案到目錄/where/to/并保持檔案屬性
( tar -c /dir/to/copy ) | ssh -c user@remote 'cd /where/to/ && tar -x -p'
拷貝目錄copy/到遠端目錄/where/to/并保持檔案屬性
dd bs=1m if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'
将整個硬碟備份到遠端機器上
rsync (使用 --dry-run選項進行測試)
rsync -p rsync://rsync.server.com/path/to/file file
隻擷取diffs.當下載下傳有問題時可以作多次
rsync --bwlimit=1000 fromfile tofile
有速度限制的本地拷貝,對i/o有利
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'
鏡像網站(使用壓縮和加密)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/
同步目前目錄和遠端目錄
ssh (安全 shell)
ssh $user@$host command
在$host主機上以$user使用者運作指令(預設指令為shell)
ssh -f -y $user@$hostname xeyes
在名為$hostname的主機上以$user使用者運作gui指令
scp -p -r $user@$host: file dir/
拷貝到$host主機$user'使用者的目錄下
ssh -g -l 8080:localhost:80 root@$host
由本地主機的8080端口轉發到$host主機的80端口
ssh -r 1434:imap:143 root@$host
由主機的1434端口轉發到imap的143端口
wget (多用途下載下傳工具)
(cd cmdline && wget -nd -phekk http://www.pixelbeat.org/cmdline.html)
在目前目錄中下載下傳指定網頁及其相關的檔案使其可完全浏覽
wget -c http://www.example.com/large.file
繼續上次未完的下載下傳
wget -r -nd -np -l1 -a '*.jpg' http://www.example.com/
批量下載下傳檔案到目前目錄中
wget ftp://remote/file[1-9].iso/
下載下傳ftp站上的整個目錄
wget -q -o- http://www.pixelbeat.org/timeline.html | grep 'a href' | head
直接處理輸出
echo 'wget url' | at 01:00
在下午一點鐘下載下傳指定檔案到目前目錄
wget --limit-rate=20k url
wget -nv --spider --force-html -i bookmarks.html
檢查檔案中的連結是否存在
wget --mirror http://www.example.com/
更新網站的本地拷貝(可以友善地用于cron)
網絡(ifconfig, route, mii-tool, nslookup 指令皆已過時)
ethtool eth0
顯示網卡eth0的狀态
ethtool --change eth0 autoneg off speed 100 duplex full
手動設制網卡速度
iwconfig eth1
顯示無線網卡eth1的狀态
iwconfig eth1 rate 1mb/s fixed
手動設制無線網卡速度
iwlist scan
顯示無線網絡清單
ip link show
顯示interface清單
ip link set dev eth0 name wan
重命名eth0為wan
ip link set dev eth0 up
啟動interface eth0(或關閉)
ip addr show
顯示網卡的ip位址
ip addr add 1.2.3.4/24 brd + dev eth0
添加ip和掩碼(255.255.255.0)
ip route show
顯示路由清單
ip route add default via 1.2.3.254
設定預設網關1.2.3.254
tc qdisc add dev lo root handle 1:0 netem delay 20msec
增加20ms傳輸時間到loopback裝置(調試用)
tc qdisc del dev lo root
移除上面添加的傳輸時間
host pixelbeat.org
查尋主機的dns ip位址
hostname -i
查尋本地主機的ip位址(同等于host `hostname`)
whois pixelbeat.org
查尋某主機或莫ip位址的whois資訊
netstat -tupl
列出系統中的internet服務
netstat -tup
列出活躍的連接配接
windows networking (samba提供所有windows相關的網絡支援)
smbtree
尋找一個windows主機. 參見findsmb
nmblookup -a 1.2.3.4
尋找一個指定ip的windows (netbios)名
smbclient -l windows_box
顯示在windows主機或samba伺服器上的所有共享
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share
挂載一個windows共享
echo 'message' | smbclient -m windows_box
發送一個彈出資訊到windows主機(xp sp2預設關閉此功能)
文本操作 (sed使用标準輸入和标準輸出,如果想要編輯檔案,則需添加<oldfile >newfile)
sed 's/string1/string2/g'
使用string2替換string1
sed 's/\(.*\)1/\12/g'
将任何以1結尾的字元串替換為以2結尾的字元串
sed '/^ *#/d; /^ *$/d'
删除注釋和空白行
sed ':a; /\\$/n; s/\\\n//; ta'
連接配接結尾有\的行和其下一行
sed 's/[ \t]*$//'
删除每行後的空白
sed 's/\([\\`\\"$\\\\]\)/\\\1/g'
将所有轉義字元之前加上\
seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/"
向右排n(任意數)列
sed -n '1000p;1000q'
輸出第一千行
sed -n '10,20p;20q'
輸出第10-20行
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;t;q'
輸出html檔案的<title></title>字段中的 内容
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
排序ipv4位址
echo 'test' | tr '[:lower:]' '[:upper:]'
轉換成大寫
tr -dc '[:print:]' < /dev/urandom
過濾掉不能列印的字元
history | wc -l
計算指定單詞出現的次數
sort file1 file2 | uniq
兩個未排序檔案的并集
sort file1 file2 | uniq -d
兩個未排序檔案的交集
sort file1 file1 file2 | uniq -u
兩個未排序檔案的差 集
sort file1 file2 | uniq -u
兩個未排序檔案的對稱差集
join -t'\0' -a1 -a2 file1 file2
兩個有序檔案的并集
join -t'\0' file1 file2
兩個有序檔案的交集
join -t'\0' -v2 file1 file2
兩個有序檔案的差集
join -t'\0' -v1 -v2 file1 file2
兩個有序檔案的對稱差集
數學
echo '(1 + sqrt(5))/2' | bc -l
友善的電腦(計算 φ)
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc
更複雜地計算,這裡計算了最大的faste包率
echo 'pad=20; min=64; print (100e6)/((pad+min)*8)' | python
python處理數值的科學表示法
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist
顯示faste包率相對于包大小的圖形
echo 'obase=16; ibase=10; 64206' | bc
進制轉換(十進制到十六進制)
echo $((0x2dec))
進制轉換(十六進制到十進制)((shell數學擴充))
機關轉換(公尺到英尺)
units -t '500gb' 'gib'
機關轉換(si 到iec 字首)
units -t '1 googol'
定義查找
seq 100 | (tr '\n' +; echo 0) | bc
月曆
cal -3
顯示一月曆
cal 9 1752
顯示指定月,年的月曆
date -d fri
date --date='25 dec' +%a
今年的聖誕節是星期幾
date --date '1970-01-01 utc 2147483647 seconds'
将一相對于1970-01-01 00:00的秒數轉換成時間
tz=':america/los_angeles' date
顯示目前的美國西岸時間(使用tzselect尋找時區)
echo "mail -s 'get the train' [email protected] < /dev/null" | at 17:45
在指定的時間發送郵件
echo "display=$display xmessage cooker" | at "now + 30 minutes"
在給定的時間彈出對話框
locales
printf "%'d\n" 1234
根據locale輸出正确的數字分隔
block_size=\'1 ls -l
用ls指令作類适于locale()檔案分組
echo "i live in `locale territory`"
從locale資料庫中展開資訊
lang=en_ie.utf8 locale int_prefix
locale | cut -d= -f1 | xargs locale -kc | less
顯示在locale資料庫中的所有字段
recode (iconv, dos2unix, unix2dos 已經過時了)
recode -l | less
顯示所有有效的字元集及其别名
recode windows-1252.. file_to_change.txt
轉換windows下的ansi檔案到目前的字元集(自動進行回車換行符的轉換)
recode utf-8/crlf.. file_to_change.txt
轉換windows下的ansi檔案到目前的字元集
recode iso-8859-15..utf8 file_to_change.txt
轉換latin9(西歐)字元集檔案到utf8
recode ../b64 < file.txt > file.b64
base64編碼
recode /qp.. < file.txt > file.qp
quoted-printable格式解碼
recode ..html < file.txt > file.html
将文本檔案轉換成html
recode -lf windows-1252 | grep euro
echo -n 0x80 | recode latin-9/x1..dump
顯示字元在latin-9中的字元映射
echo -n 0x20ac | recode ucs-2/x2..latin-9/x
顯示latin-9編碼
echo -n 0x20ac | recode ucs-2/x2..utf-8/x
顯示utf-8編碼
CD光牒
gzip < /dev/cdrom > cdrom.iso.gz
儲存CD光牒拷貝
mkisofs -v label -r dir | gzip > cdrom.iso.gz
建立目錄dir的CD光牒鏡像
mount -o loop cdrom.iso /mnt/dir
将CD光牒鏡像挂載到 /mnt/dir (隻讀)
cdrecord -v dev=/dev/cdrom blank=fast
清空一張cdrw
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -
燒錄CD光牒鏡像 (使用 dev=atapi -scanbus 來确認該使用的 dev)
cdparanoia -b
在目前目錄下将CD光牒音軌轉錄成wav檔案
cdrecord -v dev=/dev/cdrom -audio *.wav
将目前目錄下的wav檔案燒成音樂CD光牒 (參見cdrdao)
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'
将wav檔案轉換成ogg格式
ls -lsr
按檔案大小降序顯示檔案
du -s * | sort -k1,1rn | head
df -h
顯示空餘的磁盤空間
df -i
顯示空餘的inode
fdisk -l
顯示磁盤分區大小和類型(在root下執行)
dd bs=1 seek=2tb if=/dev/null of=ext3.test
監視/調試
tail -f /var/log/messages
strace -c ls >/dev/null
總結/剖析指令進行的系統調用
strace -f -e open ls >/dev/null
顯示指令進行的系統調用
ltrace -f -e getenv ls >/dev/null
顯示指令調用的庫函數
lsof -p $$
顯示目前程序打開的檔案
lsof ~
顯示打開使用者目錄的程序
tcpdump not port 22
ps -e -o pid,args --forest
以樹狀結構顯示程序
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'
以cpu占用率為序顯示程序
ps -e -orss=,args= | sort -b -k1,1n | pr -tw$columns
ps -c firefox-bin -l -o pid,tid,pcpu,state
顯示指定程序的所有線程資訊
ps -p 1,2
顯示指定程序id的程序資訊
last reboot
顯示系統重新開機記錄
free -m
顯示(剩餘的)記憶體總量(-m以mb為機關顯示)
watch -n.1 'cat /proc/interrupts'
監測檔案/proc/interrupts的變化
uname -a
檢視核心/作業系統/cpu資訊
head -n1 /etc/issue
檢視作業系統版本
cat /proc/partitions
顯示所有在系統中注冊的分區
grep memtotal /proc/meminfo
顯示系統可見的記憶體總量
grep "model name" /proc/cpuinfo
顯示cpu資訊
lspci -tv
顯示pci資訊
lsusb -tv
顯示usb資訊
mount | column -t
顯示所有挂載的檔案系統并對齊輸出
#
dmidecode -q | less
顯示smbios/dmi 資訊
smartctl -a /dev/sda | grep power_on_hours
系統開機的總體時間
hdparm -i /dev/sda
顯示關于磁盤sda的資訊
hdparm -tt /dev/sda
檢測磁盤sda的讀取速度
badblocks -s /dev/sda
檢測磁盤sda上所有的壞扇區
<a target="_blank" href="http://www.pixelbeat.org/lkdb/readline.html">readline</a>
line editor used by bash, python, bc, gnuplot, ...
<a target="_blank" href="http://www.pixelbeat.org/lkdb/screen.html">screen</a>
多視窗的虛拟終端, ...
<a target="_blank" href="http://www.pixelbeat.org/lkdb/mc.html">mc</a>
強大的檔案管理器,可以浏覽rpm, tar, ftp, ssh, ...
<a target="_blank" href="http://www.pixelbeat.org/docs/web/access_log/analyzing.html">gnuplot</a>
互動式并可進行腳本程式設計的畫圖工具
links
網頁浏覽器
miscellaneous
友善的十六進制輸出。 (用法舉例: • hd /proc/self/cmdline | less)
顯示符号連結指向的真實路徑((用法舉例: • realpath ~/../$user)
set | grep $user
touch -c -t 0304050607 file
改變檔案的時間标簽 (yymmddhhmm)
python -m simplehttpserver
serve current directory tree at http://$hostname:8000/