shell初步
在Linux系統中,一切都是文件。在Linux系統中,一切都是文件。與Windows和Mac OS不同,Linux對於文件名是區分大小寫的。當爲文件和目錄命名時,每種操作系統都會有一些禁止使用的字
符。例如,在Mac OS中不允許使用冒號(:);而Windows中則不能使
用反斜槓字符(\)。Linux中也有一些禁止使用的字符。
1.基礎命令
1.1、列出文件和文件夾(ls)
ls:列出目錄中的文件和子目錄。
- 使用通配符列出文件夾的內容
# 查詢出後綴名爲.tgz的文件
[root@VM_140_90_centos ~]# ls *.tgz
Python-3.6.4.tgz
- ls -R: 查看子文件夾中的文件列表(R參數)
- ls -l (ll):以單獨一列顯示內容
- ls -m:一種顯示格式選擇就是 -m 選項(或 –format=commas )
- ls -a:查看隱藏的文件和文件夾
- ls -F:顯示文件的類型
- ls -color:用不同的顏色顯示內容
- ls -r:以相反的順序顯示列表內容
- ls -X:按文件的擴展名排序
- ls -t:按日期和時間排序
- ls -S:按文件大小進行排序
- ls -h:用 K、M 和 G 顯示文件大小
1.2、顯示當前目錄的路徑(pwd)
pwd 命令顯示當前目錄(或工作目錄)的完整的絕對路徑。
1.3、切換目錄(cd)
- cd ~:切換到 home 目錄
- cd -:切換到以前的目錄
1.4、將文件時間修改爲當前時間(touch)
只有獲得修改文件的權限,纔可以對文件使用 touch 命令,修
改它的時間。否則, touch 命令會運行失敗。
- 將文件時間修改爲想要的任意時間
$ ls -l
-rw-r--r-- 239 2005-10-19 14:00 wireless.log
$ touch -t 197002160701 wireless.log
$ ls -l
-rw-r--r-- 239 1970-02-16 07:01 wireless.log
$ touch -t 9212310000 wireless.log
$ls -l
-rw-r--r-- 239 1992-12-31 00:00 wireless.log
1.5、創建新的空文件(touch)
它將使用你指定的文件名來生成一個空文件。
1.6、創建新目錄(mkdir)
touch 命令能夠創建空文件,但是如何創建新文件夾呢?使用mkdir 命令就能解決這個問題。
- mkdir -p:遞歸創建子目錄
- 看看 mkdir 到底做了什麼
[root@VM_140_90_centos public]# mkdir aaa -v
mkdir: created directory `aaa'
1.7、複製文件(cp oldPath newPath)
複製文件是計算機用戶經常做的工作之一,更不用說OS了。Linuxshell使用的各命令中,最棒的命令之一就是 cp ,它用於複製文件和目錄。使用 cp 命令最簡單的方法就是輸入命令,後面再輸入你想複製的文件,然後是被複制文件的新名稱。可以把該命令的結構看作是“ cp正在從哪複製的文件 正在複製到哪的文”。這種關係的另一種常見表達方式是“ cp 源文件目標文件”。- 使用通配符複製文件
- cp *:使用通配符複製文件,複製所有文件
- cp -v:複製文件時顯示執行過程
- cp -i:防止複製時覆蓋重要的文件
- cp -R:複製目錄
- cp -a:複製文件到其他目錄以作爲完整的備份
1.8、mv命令用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。
如果目標文件是到某一目錄文件的路徑,源文件會被移到此目錄下,且文件名不變。
如果目標文件不是目錄文件,則源文件名(只能有一個)會變爲此目標文件名,並覆蓋己存在的同名文件。如果源文件和目標文件在同一個目錄下,mv的作用就是改文件名。當目標文件是目錄文件時,源文件或目錄參數可以有多個,則所有的源文件都會被移至目標文件中。所有移到該目錄下的文件都將保留以前的文件名。
語法
mv(選項)(參數)
選項
–backup=<備份模式>:若需覆蓋文件,則覆蓋前先行備份;
-b:當文件存在時,覆蓋前,爲其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重複,則直接覆蓋現有的文件或目錄;
-i:交互式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入”y”,表示將覆蓋目標文件;輸入”n”,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。
–strip-trailing-slashes:刪除源文件中的斜槓“/”;
-S<後綴>:爲備份文件指定後綴,而不使用默認的後綴;
–target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。參數
- 源文件:源文件列表。
- 目標文件:如果“目標文件”是文件名則在移動文件的同時,將其改名爲“目標文件”;如果“目標文件”是目錄名則將源文件移動到“目標文件”下。
實例
將文件ex3改名爲new1
mv ex3 new1
1.9、rm命令
rm命令可以刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對於鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變。
語法
rm (選項)(參數)
選項
-d:直接把欲刪除的目錄的硬連接數據刪除成0,刪除該目錄;
-f:強制刪除文件或目錄;
-i:刪除已有文件或目錄之前先詢問用戶;
-r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一併處理;
–preserve-root:不對根目錄進行遞歸操作;
-v:顯示指令的詳細執行過程。參數
文件:指定被刪除的文件列表,如果參數中含有目錄,則必須加上-r或者-R選項。
實例
rm -i test example
Remove test ?n(不刪除文件test)
Remove example ?y(刪除文件example)
1.10、man命令
man命令是Linux下的幫助指令,通過man指令可以查看Linux中的指令幫助、配置文件幫助和編程幫助等信息。
語法
man(選項)(參數)
選項
-a:在所有的man幫助手冊中搜索;
-f:等價於whatis指令,顯示給定關鍵字的簡短描述信息;
-P:指定內容時使用分頁程序;
-M:指定man手冊搜索的路徑。參數
- 數字:指定從哪本man手冊中搜索幫助;
- 關鍵字:指定要搜索幫助的關鍵字。
1.11、runlevel命令
runlevel命令用於打印當前Linux系統的運行等級。
- 在大多數的linux發行版本中,通常有8個runlevel:
0 停機
1 單用戶模式
2 多用戶,沒有 NFS
3 完全多用戶模式
4 沒有用到
5 圖形界面
6 重新啓動
1.12、chown命令
chown命令改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。
語法
chown(選項)(參數)
選項
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或–quite或——silent:不顯示錯誤信息;
-h或–no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件;
-R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-v或——version:顯示指令執行過程;
–dereference:效果和“-h”參數相同;
–help:在線幫助;
–reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬羣組全部設成和參考文件或目錄的擁有者與所屬羣組相同;
–version:顯示版本信息。參數
用戶:組:指定所有者和所屬工作組。當省略“:組”,僅改變文件所有者;
文件:指定要改變所有者和工作組的文件列表。支持多個文件和目標,支持shell通配符。實例
將目錄/usr/meng及其下面的所有文件、子目錄的文件主改成 liu:
chown -R liu /usr/meng
1.13、chmod命令
chmod命令用來變更文件或目錄的權限。
權限範圍的表示法如下:
u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬羣組;
o Other,除了文件或目錄擁有者或所屬羣組之外,其他用戶皆屬於這個範圍;
a All,即全部的用戶,包含擁有者,所屬羣組以及其他用戶;
r 讀取權限,數字代號爲“4”;
w 寫入權限,數字代號爲“2”;
x 執行或切換權限,數字代號爲“1”;
-不具任何權限,數字代號爲“0”;
s 特殊功能說明:變更文件或目錄的權限。語法
chmod(選項)(參數)
選項
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或–quiet或——silent:不顯示錯誤信息;
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一併處理;
-v或——verbose:顯示指令執行過程;
–reference=<參考文件或目錄>:把指定文件或目錄的所屬羣組全部設成和參考文件或目錄的所屬羣組相同;
<權限範圍>+<權限設置>:開啓權限範圍的文件或目錄的該選項權限設置;
<權限範圍>-<權限設置>:關閉權限範圍的文件或目錄的該選項權限設置;
<權限範圍>=<權限設置>:指定權限範圍的文件或目錄的該選項權限設置;參數
權限模式:指定文件的權限模式;
文件:要改變權限的文件。實例
chown user:market f01 //把文件f01給uesr,添加到market組
2、關機重啓註銷命令
2.1、shutdown 命令
shutdown命令用來系統關機命令。shutdown指令可以關閉所有程序,並依用戶的需要,進行重新開機或關機的動作。
語法
shutdown(選項)(參數)
選項
-c:當執行“shutdown -h 11:50”指令時,只要按+鍵就可以中斷關機的指令;
-f:重新啓動時不執行fsck;
-F:重新啓動時執行fsck;
-h:將系統關機;
-k:只是送出信息給所有用戶,但不會實際關機;
-n:不調用init程序進行關機,而由shutdown自己進行;
-r:shutdown之後重新啓動;
-t<秒數>:送出警告信息和刪除信息之間要延遲多少秒。參數
- [時間]:設置多久時間後執行shutdown指令;
- [警告信息]:要傳送給所有登入用戶的信息。
實例
- 立即關機: shutdown -h now
- 指定5分鐘後關機,同時送出警告信息給登入用戶:shutdown +5 “System will shutdown after 5 minutes”
2.2、halt命令
halt命令用來關閉正在運行的Linux操作系統。halt命令會先檢測系統的runlevel,若runlevel爲0或6,則關閉系統,否則即調用shutdown來關閉系統。
語法
halt(選項)
選項
-d:不要在wtmp中記錄;
-f:不論目前的runlevel爲何,不調用shutdown即強制關閉系統;
-i:在halt之前,關閉全部的網絡界面;
-n:halt前,不用先執行sync;
-p:halt之後,執行poweroff;
-w:僅在wtmp中記錄,而不實際結束系統。實例
halt -p //關閉系統後關閉電源。
halt -d //關閉系統,但不留下紀錄。
2.3、 PowerOff命令
poweroff命令用來關閉計算機操作系統並且切斷系統電源。
語法
poweroff(選項)
選項
-n:關閉操作系統時不執行sync操作;
-w:不真正關閉操作系統,僅在日誌文件“/var/log/wtmp”中;
-d:關閉操作系統時,不將操作寫入日誌文件“/var/log/wtmp”中添加相應的記錄;
-f:強制關閉操作系統;
-i:關閉操作系統之前關閉所有的網絡接口;
-h:關閉操作系統之前將系統中所有的硬件設置爲備用模式。實例
如果確認系統中已經沒有用戶存在且所有數據都已保存,需要立即關閉系統,可以使用poweroff命令。
使用poweroff立即關閉系統:poweroff
2.4、reboot命令
reboot命令用來重新啓動正在運行的Linux操作系統。
語法
reboot(選項)
選項
-d:重新開機時不把數據寫入記錄文件/var/tmp/wtmp。本參數具有“-n”參數效果;
-f:強制重新開機,不調用shutdown指令的功能;
-i:在重開機之前,先關閉所有網絡界面;
-n:重開機之前不檢查是否有未結束的程序;
-w:僅做測試,並不真正將系統重新開機,只會把重開機的數據寫入/var/log目錄下的wtmp記錄文件。實例
reboot //重開機。
reboot -w //做個重開機的模擬(只有紀錄並不會真的重開機)。
3、解壓和打包
3.1、tar命令
tar命令可以爲linux的文件和目錄創建檔案。利用tar,可以爲某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創建檔案,現在,用戶可以在任何設備上創建檔案。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對於備份文件或將幾個文件組合成爲一個文件以便於網絡傳輸是非常有用的。
語法
tar(選項)(參數)
選項
-A或–catenate:新增文件到以存在的備份文件;
-B:設置區塊大小;
-c或–create:建立新的備份文件;
-C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
-d:記錄文件的差別;
-x或–extract或–get:從備份文件中還原文件;
-t或–list:列出備份文件的內容;
-z或–gzip或–ungzip:通過gzip指令處理備份文件;
-Z或–compress或–uncompress:通過compress指令處理備份文件;
-f<備份文件>或–file=<備份文件>:指定備份文件;
-v或–verbose:顯示指令執行過程;
-r:添加文件到已經壓縮的文件;
-u:添加改變了和現有的文件到已經存在的壓縮文件;
-j:支持bzip2解壓文件;
-v:顯示操作過程;
-l:文件系統邊界設置;
-k:保留原有文件不覆蓋;
-m:保留文件不被覆蓋;
-w:確認壓縮文件的正確性;
-p或–same-permissions:用原來的文件權限還原文件;
-P或–absolute-names:文件名使用絕對名稱,不移除文件名稱前的“/”號;
-N <日期格式> 或 –newer=<日期時間>:只將較指定日期更新的文件保存到備份文件裏;
–exclude=<範本樣式>:排除符合範本樣式的文件。參數
文件或目錄:指定要打包的文件或目錄列表。
實例
將文件全部打包成tar包
tar -cvf log.tar log2012.log 僅打包,不壓縮!
tar -zcvf log.tar.gz log2012.log 打包後,以 gzip 壓縮
tar -jcvf log.tar.bz2 log2012.log 打包後,以 bzip2 壓縮查閱上述tar包內有哪些文件:
tar -ztvf log.tar.gz
注:由於我們使用 gzip 壓縮的log.tar.gz,所以要查閱log.tar.gz包內的文件時,就得要加上z這個選項了。
將tar包解壓縮:
tar -zxvf /opt/soft/test/log.tar.gz
只將tar內的部分文件解壓出來:
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
文件備份下來,並且保存其權限:
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
在文件夾當中,比某個日期新的文件才備份:
tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
備份文件夾內容是排除部分文件:
tar -N “2012/11/13” -zcvf log17.tar.gz test
其實最簡單的使用 tar 就只要記憶底下的方式即可:
壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱
查 詢:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
注:首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。
3.2、gzip命令
gzip命令用來壓縮文件。gzip是個使用廣泛的壓縮程序,文件經它壓縮過後,其名稱後面會多處“.gz”擴展名。
語法
gzip(選項)(參數)
選項
-a或——ascii:使用ASCII文字模式;
-d或–decompress或—-uncompress:解開壓縮文件;
-f或——force:強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否爲符號連接;
-h或——help:在線幫助;
-l或——list:列出壓縮文件的相關信息;
-L或——license:顯示版本與版權信息;
-n或–no-name:壓縮文件時,不保存原來的文件名稱及時間戳記;
-N或——name:壓縮文件時,保存原來的文件名稱及時間戳記;
-q或——quiet:不顯示警告信息;
-r或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-S或<壓縮字尾字符串>或—-suffix<壓縮字尾字符串>:更改壓縮字尾字符串;
-t或——test:測試壓縮文件是否正確無誤;
-v或——verbose:顯示指令執行過程;
-V或——version:顯示版本信息;
-<壓縮效率>:壓縮效率是一個介於1~9的數值,預設值爲“6”,指定愈大的數值,壓縮效率就會愈高;
–best:此參數的效果和指定“-9”參數相同;
–fast:此參數的效果和指定“-1”參數相同。參數
文件列表:指定要壓縮的文件列表。
實例
把test6目錄下的每個文件壓縮成.gz文件
gzip *
把上例中每個壓縮的文件解壓,並列出詳細的信息:
gzip -dv *
詳細顯示例1中每個壓縮的文件的信息,並不解壓:
gzip -l *
壓縮一個tar備份文件,此時壓縮文件的擴展名爲.tar.gz:
gzip -r log.tar
遞歸的壓縮目錄:
gzip -rv test6
注: 這樣,所有test下面的文件都變成了.gz,目錄依然存在只是目錄裏面的文件相應變成了.gz.這就是壓縮,和打包不同。因爲是對目錄操作,所以需要加上-r選項,這樣也可以對子目錄進行遞歸了。
遞歸地解壓目錄
gzip -dr test6
更新中…
本博客全部是根據個人經驗和參考http://man.linuxde.net/編寫而成