轉載至:http://gywbd.github.io/posts/2014/8/50-linux-commands.htmljavascript
tar grep find ssh sed awk vim diff sort export args ls pwd cd gzip bzip2 unzip shutdown ftp crontab service ps free top df kill rm cp mv cat mount chmod chown passwd mkdir ifconfig uname whereis whatis locate man tail less su mysql yum rpm ping date wgetphp
建立一個新的tar文件css
$ tar cvf archive_name.tar dirname/
解壓tar文件html
$ tar xvf archive_name.tar
查看tar文件java
$ tar tvf archive_name.tar
在文件中查找字符串(不區分大小寫)mysql
$ grep -i "the" demo_file
輸出成功匹配的行,以及該行以後的三行linux
$ grep -A 3 -i "example" demo_text
在一個文件夾中遞歸查詢包含指定字符串的文件ios
$ grep -r "ramesh" *
更多示例:Get a Grip on the Grep! – 15 Practical Grep Command Examplesgit
查找指定文件名的文件(不區分大小寫)github
$ find -iname "MyProgram.c"
對找到的文件執行某個命令
$ find -iname "MyProgram.c" -exec md5sum {} \;
查找home目錄下的全部空文件
$ find ~ -empty
更多示例:Mommy, I found it! — 15 Practical Linux Find Command Examples
登陸到遠程主機
$ ssh -l jsmith remotehost.example.com
調試ssh客戶端
$ ssh -v -l jsmith remotehost.example.com
顯示ssh客戶端版本
$ ssh -V
更多示例:5 Basic Linux SSH Client Commands
當你將Dos系統中的文件複製到Unix/Linux後,這個文件每行都會以\r\n結尾,sed能夠輕易將其轉換爲Unix格式的文件,使用\n結尾的文件
$ sed 's/.$//' filename
反轉文件內容並輸出
$ sed -n '1!G; h; p' filename
爲非空行添加行號
$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'
更多示例:Advanced Sed Substitution Examples
刪除重複行
$ awk '!($0 in array) { array[$0]; print}' temp
打印/etc/passwd中全部包含一樣的uid和gid的行
$ awk -F ':' '$3=$4' /etc/passwd
打印文件中的指定部分的字段
$ awk '{print $2,$5;}' employee.txt
更多示例:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR
打開文件並跳到第10行
$ vim +10 filename.txt
打開文件跳到第一個匹配的行
$ vim +/search-term filename.txt
以只讀模式打開文件
$ vim -R /etc/passwd
更多示例:How To Record and Play in Vim Editor
比較的時候忽略空白符
$ diff -w name_list.txt name_list_new.txt
以升序對文件內容排序
$ sort names.txt
以降序對文件內容排序
$ sort -r names.txt
以第三個字段對/etc/passwd的內容排序
$ sort -t: -k 3n /etc/passwd | more
輸出跟字符串oracle匹配的環境變量
$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle" declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0" declare -x ORACLE_SID="med" declare -x ORACLE_TERM="xterm"
設置全局環境變量
$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0
將全部圖片文件拷貝到外部驅動器
$ ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
將系統中全部jpd文件壓縮打包
$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
下載文件中列出的全部url對應的頁面
$ cat url-list.txt | xargs wget –c
以易讀的方式顯示文件大小(顯示爲MB,GB...)
$ ls -lh -rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz
以最後修改時間升序列出文件
$ ls -ltr
在文件名後面顯示文件類型
$ ls -F
更多示例:Unix LS Command: 15 Practical Examples
輸出當前工做目錄
cd -
能夠在最近工做的兩個目錄間切換
使用shopt -s cdspell
能夠設置自動對cd命令進行拼寫檢查
更多示例:6 Awesome Linux cd command Hacks
建立一個*.gz的壓縮文件
$ gzip test.txt
解壓*.gz文件
$ gzip -d test.txt.gz
顯示壓縮的比率
$ gzip -l *.gz
compressed uncompressed ratio uncompressed_name
23709 97975 75.8% asp-patch-rpms.txt
建立*.bz2壓縮文件
$ bzip2 test.txt
解壓*.bz2文件
bzip2 -d test.txt.bz2
更多示例:BZ is Eazy! bzip2, bzgrep, bzcmp, bzdiff, bzcat, bzless, bzmore examples
解壓*.zip文件
$ unzip test.zip
查看*.zip文件的內容
$ unzip -l jasper.zip
Archive: jasper.zip
Length Date Time Name
-------- ---- ---- ----
40995 11-30-98 23:50 META-INF/MANIFEST.MF 32169 08-25-98 21:07 classes_ 15964 08-25-98 21:07 classes_names 10542 08-25-98 21:07 classes_ncomp
關閉系統並當即關機
$ shutdown -h now
10分鐘後關機
$ shutdown -h +10
重啓
$ shutdown -r now
重啓期間強制進行系統檢查
$ shutdown -Fr now
ftp命令和sftp命令的用法基本類似鏈接ftp服務器並下載多個文件
$ ftp IP/hostname ftp> mget *.html
顯示遠程主機上文件列表
ftp> mls *.html -
/ftptest/features.html /ftptest/index.html /ftptest/othertools.html /ftptest/samplereport.html /ftptest/usage.html
更多示例:FTP and SFTP Beginners Guide with 10 Examples
查看某個用戶的crontab入口
$ crontab -u john -l
設置一個每十分鐘執行一次的計劃任務
*/10 * * * * /home/ramesh/check-disk-space
更多示例:Linux Crontab: 15 Awesome Cron Job Examples
service命令用於運行System V init腳本,這些腳本通常位於/etc/init.d文件下,這個命令能夠直接運行這個文件夾裏面的腳本,而不用加上路徑
查看服務狀態
$ service ssh status
查看全部服務狀態
$ service --status-all
重啓服務
$ service ssh restart
ps命令用於顯示正在運行中的進程的信息,ps命令有不少選項,這裏只列出了幾個
查看當前正在運行的全部進程
$ ps -ef | more
以樹狀結構顯示當前正在運行的進程,H選項表示顯示進程的層次結構
$ ps -efH | more
這個命令用於顯示系統當前內存的使用狀況,包括已用內存、可用內存和交換內存的狀況
默認狀況下free會以字節爲單位輸出內存的使用量
$ free
total used free shared buffers cached Mem: 3566408 1580220 1986188 0 203988 902960 -/+ buffers/cache: 473272 3093136 Swap: 4000176 0 4000176
若是你想以其餘單位輸出內存的使用量,須要加一個選項,-g爲GB,-m爲MB,-k爲KB,-b爲字節
$ free -g
total used free shared buffers cached Mem: 3 1 1 0 0 0 -/+ buffers/cache: 0 2 Swap: 3 0 3
若是你想查看全部內存的彙總,請使用-t選項,使用這個選項會在輸出中加一個彙總行
ramesh@ramesh-laptop:~$ free -t total used free shared buffers cached Mem: 3566408 1592148 1974260 0 204260 912556 -/+ buffers/cache: 475332 3091076 Swap: 4000176 0 4000176 Total: 7566584 1592148 5974436
top命令會顯示當前系統中佔用資源最多的一些進程(默認以CPU佔用率排序)若是你想改變排序方式,能夠在結果列表中點擊O(大寫字母O)會顯示全部可用於排序的列,這個時候你就能夠選擇你想排序的列
Current Sort Field: P for window 1:Def
Select sort field via field letter, type any other key to return a: PID = Process Id v: nDRT = Dirty Pages count d: UID = User Id y: WCHAN = Sleeping in Function e: USER = User Name z: Flags = Task Flags ........
若是隻想顯示某個特定用戶的進程,可使用-u選項
$ top -u oracle
更多示例:Can You Top This? 15 Practical Linux Top Command Examples
顯示文件系統的磁盤使用狀況,默認狀況下df -k
將以字節爲單位輸出磁盤的使用量
$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 29530400 3233104 24797232 12% / /dev/sda2 120367992 50171596 64082060 44% /home
使用-h選項能夠以更符合閱讀習慣的方式顯示磁盤使用量
$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 232Gi 84Gi 148Gi 37% 21998562 38864868 36% / devfs 187Ki 187Ki 0Bi 100% 648 0 100% /dev map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home /dev/disk0s4 466Gi 45Gi 421Gi 10% 112774 440997174 0% /Volumes/BOOTCAMP //app@izenesoft.cn/public 2.7Ti 1.3Ti 1.4Ti 48% 0 18446744073709551615 0% /Volumes/public
使用-T選項顯示文件系統類型
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda1 ext4 29530400 3233120 24797216 12% / /dev/sda2 ext4 120367992 50171596 64082060 44% /home
kill用於終止一個進程。通常咱們會先用ps -ef
查找某個進程獲得它的進程號,而後再使用kill -9 進程號
終止該進程。你還可使用killall、pkill、xkill來終止進程
$ ps -ef | grep vim
ramesh 7243 7222 9 22:43 pts/2 00:00:00 vim $ kill -9 7243
更多示例:4 Ways to Kill a Process – kill, killall, pkill, xkill
刪除文件前先確認
$ rm -i filename.txt
在文件名中使用shell的元字符會很是有用。刪除文件前先打印文件名並進行確認
$ rm -i file*
遞歸刪除文件夾下全部文件,並刪除該文件夾
$ rm -r example
拷貝文件1到文件2,並保持文件的權限、屬主和時間戳
$ cp -p file1 file2
拷貝file1到file2,若是file2存在會提示是否覆蓋
$ cp -i file1 file2
將文件名file1重命名爲file2,若是file2存在則提示是否覆蓋
$ mv -i file1 file2
注意若是使用-f選項則不會進行提示
-v會輸出重命名的過程,當文件名中包含通配符時,這個選項會很是方便
$ mv -v file1 file2
你能夠一次查看多個文件的內容,下面的命令會先打印file1的內容,而後打印file2的內容
$ cat file1 file2
-n命令能夠在每行的前面加上行號
$ cat -n /etc/logrotate.conf
1 /var/log/btmp { 2 missingok 3 monthly 4 create 0660 root utmp 5 rotate 1 6 }
若是要掛載一個文件系統,須要先建立一個目錄,而後將這個文件系統掛載到這個目錄上
# mkdir /u01
# mount /dev/sdb1 /u01
也能夠把它添加到fstab中進行自動掛載,這樣任什麼時候候系統重啓的時候,文件系統都會被加載
/dev/sdb1 /u01 ext2 defaults 0 2
chmod用於改變文件和目錄的權限
給指定文件的屬主和屬組全部權限(包括讀、寫、執行)
$ chmod ug+rwx file.txt
刪除指定文件的屬組的全部權限
$ chmod g-rwx file.txt
修改目錄的權限,以及遞歸修改目錄下面全部文件和子目錄的權限
$ chmod -R ug+rwx file.txt
更多示例:7 Chmod Command Examples for Beginners
chown用於改變文件屬主和屬組
同時將某個文件的屬主改成oracle,屬組改成db
$ chown oracle:dba dbora.sh
使用-R選項對目錄和目錄下的文件進行遞歸修改
$ chown -R oracle:dba /home/oracle
passwd用於在命令行修改密碼,使用這個命令會要求你先輸入舊密碼,而後輸入新密碼
$ passwd
超級用戶能夠用這個命令修改其餘用戶的密碼,這個時候不須要輸入用戶的密碼
# passwd USERNAME
passwd還能夠刪除某個用戶的密碼,這個命令只有root用戶才能操做,刪除密碼後,這個用戶不須要輸入密碼就能夠登陸到系統
# passwd -d USERNAME
在home目錄下建立一個名爲temp的目錄
$ mkdir ~/temp
使用-p選項能夠建立一個路徑上全部不存在的目錄
$ mkdir -p dir1/dir2/dir3/dir4/
ifconfig用於查看和配置Linux系統的網絡接口
查看全部網絡接口及其狀態
$ ifconfig -a
使用up和down命令啓動或中止某個接口
$ ifconfig eth0 up $ ifconfig eth0 down
更多示例:Ifconfig: 7 Examples To Configure Network Interface
uname能夠顯示一些重要的系統信息,例如內核名稱、主機名、內核版本號、處理器類型之類的信息
$ uname -a
Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux
當你不知道某個命令的位置時可使用whereis命令,下面使用whereis查找ls的位置
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
當你想查找某個可執行程序的位置,但這個程序又不在whereis的默認目錄下,你可使用-B選項,並指定目錄做爲這個選項的參數。下面的命令在/tmp目錄下查找lsmk命令
$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk
wathis顯示某個命令的描述信息
$ whatis ls
ls (1) - list directory contents $ whatis ifconfig ifconfig (8) - configure a network interface
locate命名能夠顯示某個指定文件(或一組文件)的路徑,它會使用由updatedb建立的數據庫
下面的命令會顯示系統中全部包含crontab字符串的文件
$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz /usr/share/man/man5/anacrontab.5.gz /usr/share/man/man5/crontab.5.gz /usr/share/vim/vim72/syntax/crontab.vim
顯示某個命令的man頁面
$ man crontab
有些命令可能會有多個man頁面,每一個man頁面對應一種命令類型
$ man SECTION-NUMBER commandname
man頁面通常能夠分爲8種命令類型
例如,咱們執行whatis crontab
,你能夠看到crontab有兩個命令類型1和5,因此咱們能夠經過下面的命令查看命令類型5的man頁面
$ whatis crontab
crontab (1) - maintain crontab files for individual users (V3) crontab (5) - tables for driving cron $ man 5 crontab
tail命令默認顯示文件最後的10行文本
$ tail filename.txt
你可使用-n選項指定要顯示的行數
$ tail -n N filename.txt
你也可使用-f選項進行實時查看,這個命令執行後會等待,若是有新行添加到文件尾部,它會繼續輸出新的行,在查看日誌時這個選項會很是有用。你能夠經過CTRL-C終止命令的執行
$ tail -f log-file
更多示例:3 Methods To View tail -f output of Multiple Log Files in One Terminal
這個命名能夠在不加載整個文件的前提下顯示文件內容,在查看大型日誌文件的時候這個命令會很是有用
$ less huge-log-file.log
當你用less命令打開某個文件時,下面兩個按鍵會給你帶來不少幫助,他們用於向前和向後滾屏
CTRL+F – forward one window
CTRL+B – backward one window
更多示例:Unix Less Command: 10 Tips for Effective Navigation
su命令用於切換用戶帳號,超級用戶使用這個命令能夠切換到任何其餘用戶而不用輸入密碼
$ su - USERNAME
用另一個用戶名執行一個命令下面的示例中用戶john使用raj用戶名執行ls命令,執行完後返回john的帳號
[john@dev-server]$ su - raj -c 'ls' [john@dev-server]$
用指定用戶登陸,而且使用指定的shell程序,而不用默認的
$ su -s 'SHELLNAME' USERNAME
mysql多是Linux上使用最普遍的數據庫,即便你沒有在你的服務器上安裝mysql,你也可使用mysql客戶端鏈接到遠程的mysql服務器
鏈接一個遠程數據庫,須要輸入密碼
$ mysql -u root -p -h 192.168.1.2
鏈接本地數據庫
$ mysql -u root -p
你也能夠在命令行中輸入數據庫密碼,只須要在-p後面加上密碼做爲參數,能夠直接寫在p後面而不用加空格
使用yum安裝apache
$ yum install httpd
更新apache
$ yum update httpd
卸載/刪除apache
$ yum remove httpd
使用rpm安裝apache
# rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm
更新apache
# rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm
卸載/刪除apache
# rpm -ev httpd
更多示例:RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages
ping一個遠程主機,只發5個數據包
$ ping -c 5 gmail.com
更多示例:Ping Tutorial: 15 Effective Ping Command Examples
設置系統日期
# date -s "01/31/2010 23:59:53"
當你修改了系統時間,你須要同步硬件時間和系統時間
# hwclock –systohc
# hwclock --systohc –utc
使用wget從網上下載軟件、音樂、視頻
$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
下載文件並以指定的文件名保存文件
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
更多示例:The Ultimate Wget Download Guide With 15 Awesome Examples