一、學習前準備
幫助文檔
- Linux命令大全(★★★),可以在上面找到你要查找的linux命令
- Linux 命令大全 | 菜鳥教程
- Linux 教程 | 菜鳥教程
Tab 補全
Tab
補全是非常有用的一個功能,可以用來自動補全命令或文件名,省時準確。- 未輸入狀態下連按兩次
Tab
列出所有可用命令 - 已輸入部分命令名或文件名,按
Tab
進行自動補全,多用你就肯定會喜歡的了。
光標
up
方向鍵上(可以調出輸入歷史執行記錄,快速執行命令)down
方向鍵下(配合 up 選擇歷史執行記錄)Home
移動光標到本行開頭End
移動光標到本行結尾PgUp
向上翻頁PaDN
向下翻頁Ctrl + C
終止當前程序Ctrl + L
清屏 =clear
命令(記住這個快捷鍵,比clear
高效很多)
*man, info, help
man
命令:Linux下的幫助指令,通過man指令可以查看Linux中的指令幫助、配置文件幫助和編程幫助等信息。info
命令:Linux下info格式的幫助指令。就內容來說,info頁面比man page編寫得要更好、更容易理解,也更友好,但man page使用起來確實要更容易得多。help
命令:用於顯示shell內部命令的幫助信息。help命令只能顯示shell內部的命令幫助信息。而對於外部命令的幫助信息只能使用man或者info命令查看。
遠程連接工具
- Xshell 5 (免費)
- SecureCRT 6.6
二、玩轉Linux命令行之基礎篇
在這裏我將介紹10組最常用的基礎命令行,也是Linux入門必備的命令行,必須牢記於心,學習的過程中可以在Linux上熟練。這也是作爲一個計算機專業人士必須熟練操作的最低要求。
1. cd , pwd
> cd
cd
:cd命令用來切換工作目錄至dirname。 其中dirName表示法可爲絕對路徑或相對路徑。(cd = Change Directory)
cd命令示例:
# 進入用戶主目錄
[root@localhost ~]# cd ~
# 返回進入此目錄之前所在的目錄
[root@localhost ~]# cd -
# 返回上級目錄(若當前目錄爲“/“,則執行完後還在“/";".."爲上級目錄的意思);
[root@localhost ~]# cd ..
# 返回上兩級目錄
[root@localhost ~]# cd ../..
# 把上個命令的參數作爲cd參數使用。
[root@localhost ~]# cd !$
> pwd
pwd
:pwd命令以絕對路徑的方式顯示用戶當前工作目錄。(pwd = print working Directory)
pwd命令示例:
[root@localhost ~]# pwd
/root
總結:cd用來切換目錄,pwd用來打印工作目錄。這兩個是初學Linux的第一個命令行,也是任何操作的基礎。
2. mkdir , cp , mv , rm , touch
> mkdir
mkdir
:mkdir命令用來創建目錄。該命令創建由dirname命名的目錄。如果在目錄名的前面沒有加任何路徑名,則在當前目錄下創建由dirname指定的目錄;如果給出了一個已經存在的路徑,將會在該目錄下創建一個指定的目錄。在創建目錄時,應保證新建的目錄與它所在目錄下的文件沒有重名。 (mkdir = make directory)
mkdir命令示例:
# 在/home/frank目錄下創建文件夾"hellolinux"
[root@localhost ~]# mkdir /home/frank/hellolinux
[root@localhost /home/frank]# mkdir hellolinux
# 在目錄/usr/meng下建立子目錄test,並且只有文件主有讀、寫和執行權限,其他人無權訪問
[root@localhost ~]# mkdir -m 700 /usr/meng/test
> cp
cp
:cp命令用來將一個或多個源文件或者目錄複製到指定的目的文件或目錄。所有目標文件指定的目錄必須是己經存在的,cp命令不能創建目錄。如果沒有文件複製的權限,則系統會顯示出錯信息。(cp = CoPy)
cp命令示例:
# 將文件file複製到目錄/usr/men/tmp下,並改名爲file1
[root@localhost ~]# cp file /usr/men/tmp/file1
# 複製目錄aaa下所有到/bbb目錄下,這時如果/bbb目錄下有和aaa同名的文件,需要按Y來確認並且會略過aaa目錄下的子目錄。
[root@localhost ~]# cp aaa/* /bbb
> mv
mv
:mv命令用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中,將一組文件移至一個目標目錄中。(mv = MoVe)
mv命令示例:
# 重命名,將~目錄下的文件名frank.html修改爲abby.html
[root@localhost ~]# mv frank.html abby.html
# 將目錄/usr/men中的所有文件移到當前目錄(用.表示)中
[root@localhost ~]# mv /usr/men/* .
> touch
touch
:touch命令有兩個功能:一是用於把已存在文件的時間標籤更新爲系統當前的時間(默認方式),它們的數據將原封不動地保留下來;二是用來創建新的空文件。(touch = touch 已經是全稱了)
touch命令示例:
# 在當前目錄下建立一個空文件ex2,然後,利用ls -l命令可以發現文件ex2的大小爲0,表示它是空文件。
[root@localhost ~]# touch ex2
> rm
rm
:rm命令可以刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對於鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變。(rm = ReMove)
注意:使用rm命令要格外小心。因爲一旦刪除了一個文件,就無法再恢復它。所以,在刪除文件之前,最好再看一下文件的內容,確定是否真要刪除。rm命令可以用-i選項,這個選項在使用文件擴展名字符刪除多個文件時特別有用。使用這個選項,系統會要求你逐一確定是否要刪除。這時,必須輸入y並按Enter鍵,才能刪除文件。如果僅按Enter鍵或其他字符,文件不會被刪除。
千萬不要隨便嘗試rm -rf /
這個命令行,否則系統會GG了。知乎:不小心敲了 rm -rf / 後反應是怎樣的?
touch命令示例:
# 刪除當前目錄下除隱含文件外的所有文件和子目錄
[root@localhost ~]# rm -r *
# 刪除當前目錄下,後綴爲.cmd的所有文件
[root@localhost ~]# rm *.cmd
3. ls , ll
> ls
ls
:ls命令用來顯示目標列表,在Linux中是使用率較高的命令。ls命令的輸出信息可以進行彩色加亮顯示,以分區不同類型的文件。(ls = list)
ls命令示例:
# 顯示當前目錄下非影藏文件與目錄
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog satools
# 顯示當前目錄下包括影藏文件在內的所有文件列表(這裏要注意:.開頭的文件就是隱藏文件)
[root@localhost ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc install.log .mysql_history satools .tcshrc .vimrc
.. .bash_history .bash_profile .cshrc install.log.syslog .rnd .ssh .viminfo
# 輸出長格式列表
[root@localhost ~]# ls -1
anaconda-ks.cfg
install.log
install.log.syslog
satools
# 查看文件大小更適合閱讀的方式,可以加上-h(h = human)人類更適合閱讀的方式。
[root@localhost ~]# ls -lh
-rw-------. 1 root root 1.1K 9月 7 2015 anaconda-ks.cfg
-rw-r--r-- 1 root root 408K 9月 9 2015 banner.zip
-rw-r--r-- 1 root root 15 1月 15 15:54 C
-rw-r--r-- 1 root root 1.7G 10月 26 2015 db_.sql
-rw-r--r-- 1 root root 33M 10月 26 2015 db_.tar.gz
> ll
ll
:ll並不是linux下一個基本的命令,它實際上是ls -l的一個別名。 我們可以通過修改~/.bashrc
添加任何其他的命令別名。
打開 ~/.bashrc
找到 #alias ll=’ls -l’,去掉前面的#就可以了。(關閉原來的終端才能使命令生效)
ll
安裝點擊這裏查看詳情。用法和ls
一樣,這裏就不重複了。
4. vim , vi , nano
這一組的命令,我們介紹了文件編輯工具。這裏介紹三種編輯工具,各有所長,根據自己的喜好來選擇。我比較傾向於組合使用,發揮在Linux系統上文件編輯的最高效率。
> vim / vi
它們都是多模式編輯器,不同的是vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在裏面。所以在這裏只要學習vim的基本操作就ok了,本節命令更適合實踐演練和操作,故只推薦一個慕課(點擊這裏),和學習的參考文檔(點擊這裏)。
> nano
nano
:nano是一個字符終端的文本編輯器,有點像DOS下的editor程序。它比vi/vim要簡單得多,比較適合Linux初學者使用。某些Linux發行版的默認編輯器就是nano。
如果你沒有安裝nano編輯器的話,可以使用yum進行安裝:yum -y install nano
。
篇幅有限,對於nano編輯器感興趣的請點擊這裏查看操作說明。
總結:想要像Geek一樣在Linux上開發的話,必須對編輯工具做到行雲流水,一定要花點時間記住所有的快捷鍵,看起來專業點(可以裝逼)。
5. find , locate/slocate
> find
find
:find命令用來在指定目錄下查找文件。
find命令示例:
# 在/home目錄下查找以.txt結尾的文件名
[root@localhost ~]# find /home -name "*.txt"
# 基於正則表達式匹配文件路徑
[root@localhost ~]# find . -regex ".*\(\.txt\|\.pdf\)$"
> locate/slocate
locate/slocate
:locate命令和slocate命令都用來查找文件或目錄。
locate/slocate命令示例:
# 搜索etc目錄下所有以sh開頭的文件
[root@localhost ~]# locate /etc/sh
# 搜索用戶主目錄下,所有以m開頭的文件
[root@localhost ~]# locate ~/m
# 搜索用戶主目錄下,所有以m開頭的文件,並且忽略大小寫
[root@localhost ~]# locate -i ~/m
6. wget
wget
:wget命令用來從指定的URL下載文件。wget非常穩定,它在帶寬很窄的情況下和不穩定網絡中有很強的適應性,如果是由於網絡的原因下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。如果是服務器打斷下載過程,它會再次聯到服務器上從停止的地方繼續下載。這對從那些限定了鏈接時間的服務器上下載大文件非常有用。
wget命令示例:
# 使用wget下載單個文件
[root@localhost ~]# wget http://www.linuxde.net/testfile.zip
# 使用wget後臺下載
[root@localhost ~]# wget -b http://www.linuxde.net/testfile.zip
# 當你打算進行定時下載,你應該在預定時間測試下載鏈接是否有效。我們可以增加--spider參數進行檢查。
[root@localhost ~]# wget --spider URL
# 下載多個文件(filelist.txt保存了url信息,每行一個URL鏈接)
[root@localhost ~]# wget -i filelist.txt
7. chmod 修改權限
chmod
:chmod命令用來變更文件或目錄的權限。在UNIX系統家族裏,文件或目錄權限的控制分別以**讀取、寫入、執行**3種一般權限來區分,另有3種特殊權限可供運用。用戶可以使用chmod指令去變更文件與目錄的權限,設置方式採用文字或數字代號皆可。符號連接的權限無法變更,如果用戶對符號連接修改權限,其改變會作用在被連接的原始文件。
- 權限範圍的表示法如下:
u
:User,即文件或目錄的擁有者;g
:Group,即文件或目錄的所屬羣組;o
:Other,除了文件或目錄擁有者或所屬羣組之外,其他用戶皆屬於這個範圍;a
:All,即全部的用戶,包含擁有者,所屬羣組以及其他用戶;r
:讀取權限,數字代號爲“4”;w
:寫入權限,數字代號爲“2”;x
:執行或切換權限,數字代號爲“1”;-
:不具任何權限,數字代號爲“0”;s
:特殊功能說明:變更文件或目錄的權限。
linux文件的用戶權限的分析圖
- Type
: 很多種 (最常見的是 - 爲文件, d 爲文件夾, 其他的還有l, n … 這種東西, 真正自己遇到了, 網上再搜就好, 一次性說太多記不住的).
- User
: 後面跟着的三個空是使用 User 的身份能對這個做什麼處理 (r 能讀; w 能寫; x 能執行; - 不能完成某個操作).
- Group
: 一個 Group 裏可能有一個或多個 user, 這些權限的樣式和 User 一樣.
- Others
: 除了 User 和 Group 以外人的權限
chmod命令示例:
# 通常的修改形式是
[root@localhost ~]# chmod [誰][怎麼修改] [哪個文件]
# 舉個最簡單的例子, 現在的 t1.py 是 ----rw-r--, 如果我們想讓你(user)有讀的能力. 下面這樣改就行了.
[root@localhost ~]# chmod u+r t1.py
[root@localhost ~]# ls -l
-r--rw-r-- 1 frank frank 34 Oct 12 09:51 t1.py
這裏的 u+r 很形象, User + read, 給 t1.py 這個修改.
所以我們的修改形式就能總結出下面這樣.
[誰]
- u: 對於 User 修改
- g: 對於 Group 修改
- o: 對於 Others 修改
- a: (all) 對於所有人修改
[怎麼修改]
- +, -, =: 作用的形式, 加上, 減掉, 等於某些權限
- r, w, x 或者多個權限一起, 比如 rx
[哪個文件]
- 施加操作的文件, 可以爲多個
用數字表示rwx的權限
其中a,b,c各爲一個數字,a表示User,b表示Group,c表示Other的權限。
r=4,w=2,x=1
- 若要rwx(可讀、可寫、可執行)屬性,則4+2+1=7
- 若要rw-(可讀、可寫、不可執行)屬性,則4+2=6
- 若要r-w(可讀、不可寫、可執行)屬性,則4+1=5
示例:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同
若用chmod 4755 filename可使此程式具有root的權限
8. sudo
sudo
:sudo命令用來以其他身份來執行命令,預設的身份爲root。在/etc/sudoers中設置了可執行sudo指令的用戶。若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。
9. ping , telnet , nc/netcat
這一組的命令主要用於測試網絡連接狀態,在很多配置的過程中有很重要的用途。
> ping
ping
:ping命令用來測試主機之間網絡的連通性。執行ping指令會使用ICMP傳輸協議,發出要求迴應的信息,若遠端主機的網絡功能沒有問題,就會迴應該信息,因而得知該主機運作正常。
ping命令示例:
[root@localhost ~]# ping www.linuxde.net
PING host.1.linuxde.net (100.42.212.8) 56(84) bytes of data.
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms
...按Ctrl+C結束
> telnet
telnet
:telnet命令用於登錄遠程主機,對遠程主機進行管理。telnet因爲採用明文傳送報文,安全性不好,很多Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有很多別的系統可能採用了telnet方式來提供遠程登錄,因此弄清楚telnet客戶端的使用方式仍是很有必要的。
相比ping
命令來說,telnet還可以測試某個IP的端口是否能夠正常連通
telnet命令示例:
# 測試IP:60.191.124.150:8081 是否能夠連接的通
[root@localhost ~]# telnet 60.191.124.150 8081
# 另外我們也可以用wget進行模擬下載來測試是否能夠連通
[root@localhost ~]# wget 60.191.124.150:8081
> nc/netcat
nc
:nc命令是netcat命令的簡稱,都是用來設置路由器。安裝:yum install nc
# nc測試端口連接
[root@localhost ~]# nc -u -z -w 1 60.191.124.150 8081
10. ifconfig , netstat
ifconfig
:查看網絡情況,netstat
:顯示網絡狀態信息
>ifconfig
ifconfig
:ifconfig命令被用於配置和顯示Linux內核中網絡接口的網絡參數。用ifconfig命令配置的網卡信息,在網卡重啓後機器重啓後,配置就不存在。要想將上述的配置信息永遠的存的電腦裏,那就要修改網卡的配置文件了。
ifconfig示例:
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51
inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0
TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:56103 errors:0 dropped:0 overruns:0 frame:0
TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB)
> netstat
netstat
:netstat命令用來打印Linux中網絡系統的狀態信息,可讓你得知整個Linux系統的網絡情況。更多使用方法
netstat命令示例:
# 在netstat輸出中顯示 PID 和進程名稱
[root@localhost ~]# netstat -pt
# 列出所有端口 (包括監聽和未監聽的)
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
...
第三部分:“玩轉Linux命令行之入門篇”的高級命令行正在編輯中,敬請期待
聯繫作者
- CSDN博客:http://blog.csdn.net/u012104219
- 知乎專欄:https://zhuanlan.zhihu.com/frankfeekr
- Github:https://github.com/frank-lam
- Email:[email protected]
如果你覺得不錯的話,不妨打賞一下,這樣我就有更大的動力去完善它,優化它。