天天看點

linux常見指令的清單

這是一個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/