我們平時所說的 Shell 可以理解為 Linux 系統(tǒng)提供給用戶的使用界面。Shell 為用戶提供了輸入命令和參數并可得到命令執(zhí)行結果的環(huán)境。當一個用戶登錄 Linux 之后,系統(tǒng)初始化程序 init 就根據 /etc/passwd 文件中的設定,為每個用戶運行一個被稱為 Shell(外殼)的程序。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供瓊海企業(yè)網站建設,專注與網站設計制作、成都網站制作、H5響應式網站、小程序制作等業(yè)務。10年已為瓊海眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
確切地說,Shell 是一個命令行解釋器,它為用戶提供了一個向 Linux 內核發(fā)送請求以便運行程序的界面系統(tǒng)級程序,用戶可以用 Shell 來啟動、掛起、停止甚至編寫一些程序。
Shell 處在內核與外層應用程序之間,起著協(xié)調用戶與系統(tǒng)的一致性、在用戶與系統(tǒng)之間進行交互的作用。圖 1 是 Linux 系統(tǒng)層次結構圖,Shell 接收用戶輸入的命令,并把用戶的命令從類似 abed 的 ASCII 碼解釋為類似 0101 的機器語言,然后把命令提交到系統(tǒng)內核處理;當內核處理完畢之后,把處理結果再通過 Shell 返回給用戶。
換句話說:
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統(tǒng)內核的服務。
Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形界面 Shell。
Shell 與其他 Linux 命令一樣,都是實用程序,但它們之間還是有區(qū)別的。一旦用戶注冊到系統(tǒng)后,Shell 就被系統(tǒng)裝入內存并一直運行到用戶退出系統(tǒng)為止;而一般命令僅當被調用時,才由系統(tǒng)裝入內存執(zhí)行。
與一般命令相比,Shell 除了是一個命令行解釋器,同時還是一門功能強大的編程語言,易編寫,易調試,靈活性較強。作為一種命令級語言,Shell 是解釋性的,組合功能很強,與操作系統(tǒng)有密切的關系,可以在 Shell 腳本中直接使用系統(tǒng)命令。大多數 Linux 系統(tǒng)的啟動相關文件(一般在 /etc/rc.d 目錄下)都是使用 Shell 腳本編寫的。
同傳統(tǒng)的編程語言一樣,Shell 提供了很多特性,這些特性可以使 Shell 腳本編程更為有用,如數據變量、參數傳遞、判斷、流程控制、數據輸入和輸出、子程序及中斷處理等。
說了這么多,其實我們在 Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我們的圖形界面是 Shell 嗎?其實從廣義講,圖形界面當然也是 Shell,因為它同樣用來接收用戶的操作,并傳遞到內核進行處理。不過,這里的 Shell 主要指的是 Bash。
Shell 腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。
業(yè)界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。
由于習慣的原因,簡潔起見,本文出現(xiàn)的 "shell編程" 都是指 shell 腳本編程,不是指開發(fā) shell 自身。
Shell的分類
目前 Shell 的版本有很多種,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它們各有特點,下面簡要介紹一下。
最重要的 Shell 是 Bourne Shell,這個命名是為了紀念此 Shell 的發(fā)明者 Steven Bourne。從 1979 年起,UNIX 就開始使用 Boume Shell。Bourne Shell 的主文件名為 sh,開發(fā)人員便以 sh 作為 Bourne Shell 的主要識別名稱。
雖然 Linux 與 UNIX 一樣,可以支持多種 Shell,但 Boume Shell 的重要地位至今仍然沒有改變,許多 UNIX 系統(tǒng)中仍然使用 sh 作為重要的管理工具。它的工作從開機到關機,幾乎無所不包。在 Linux 中,用戶 Shell 主要是 Bash,但在啟動腳本、編輯等很多工作中仍然使用 Bourne Shell。
C Shell 是廣為流行的 Shell 變種。C Shell 主要在 BSD 版的 UNIX 系統(tǒng)中使用,發(fā)明者是柏克萊大學的 Bill Joy。C Shell 因為其語法和 C 語言類似而得名,這也使得 UNIX 的系統(tǒng)工程師在學習 C Shell 時感到相當方便。
Bourne Shell 和 C Shell 形成了 Shell 的兩大主流派別,后來的變種大都吸取這兩種 Shell 的特點,如 Korn、 tcsh 及 Bash。
Bash Shell 是 GNU 計劃的重要工具之一,也是 GNU 系統(tǒng)中標準的 Shell。Bash 與 sh 兼容,所以許多早期開發(fā)出來的 Bourne Shell 程序都可以繼續(xù)在 Bash 中運行?,F(xiàn)在使用的 Linux 就使用 Bash 作為用戶的基本 Shell。
Bash 于 1988 年發(fā)布,并在 1995-1996年推出Bash 2.0。在這之前,廣為使用的版本是1.14,Bash 2.0增加了許多新的功能,以及具備更好的兼容性。表 2 中詳細列出了各版本的具體情況。
注意,Shell 的兩種主要語法類型有 Bourne 和 C,這兩種語法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的語法)。
本章講述的腳本編程就是在 Bash 環(huán)境中進行的。不過,在 Linux 中除了可以支持 Bash,還可以支持很多其他的 Shell。我們可以通過 /etc/shells 文件來査詢 Linux 支持的 Shell。命令如下:
在 Linux 中,這些 Shell 是可以任意切換的,命令如下:
用戶信息文件 /etc/passwd 的最后一列就是這個用戶的登錄 Shell。命令如下:
大家可以看到,root 用戶和其他可以登錄系統(tǒng)的普通用戶的登錄 Shell 都是 /bin/bash,也就是 Linux 的標準 Shell,所以這些用戶登錄之后可以執(zhí)行權限允許范圍內的所有命令。不過,所有的系統(tǒng)用戶(偽用戶)因為登錄 Shell 是 /sbin/ndogin,所以不能登錄系統(tǒng)。
筆記:
sh/bash/csh/Tcsh/ksh/pdksh等shell的區(qū)別
每個Linux使用者在安裝Linux時都會遇到這樣的困境:在為系統(tǒng)分區(qū)時,如何精確評估和分配各個硬盤分區(qū)的容量,因為系統(tǒng)管理員不但要考慮到當前某個分區(qū)需要的容量,還要預見該分區(qū)以后可能需要的容量的最大值。如果估計不準確,當遇到某個分區(qū)不夠用時管理員可能甚至要備份整個系統(tǒng)、清除硬盤、重新對硬盤分區(qū),然后恢復數據到新分區(qū)
邏輯卷管理器LVM(Logicl Volume Manager),通過使用邏輯卷管理器對硬盤存儲設備進行管理,可以實現(xiàn)硬盤空間的動態(tài)劃分和調整,而且可以將零碎的空間進行整合
? 物理卷(PV-Physical Volume)
物理卷在邏輯卷管理中處于最底層,它可以是實際物理硬盤上的分區(qū),也可以是整個物理硬盤
? 卷組(VG-Volumne Group)
卷組建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之后可動態(tài)添加物理卷到卷組中。一個邏輯卷管理系統(tǒng)工程中可以只有一個卷組,也可以擁有多個卷組
? 邏輯卷(LV-Logical Volume)
邏輯卷建立在卷組之上,卷中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態(tài)地擴展和縮小空間。系統(tǒng)中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同的多個卷組
邏輯卷管理器和是主分區(qū)還是邏輯分區(qū)沒有關系
vgdisplay 里的PE Size是指邏輯卷的最小單位。假設PE Size是4M;比如我向里寫東西。我一個文件可能只占用1B的容量,但是我先占上4M,其他的也是,不足4M我也先占上4M。等到每個塊都用了,但是每個塊都有剩余位置的時候,會把每個區(qū)的剩余位置都拼湊一下,以供使用。但是只要還有沒被占用的塊,都不會使用用過的塊。邏輯卷大小為這個PE Size的整數倍
處在它所在的文件夾的時候是無法卸載的
我現(xiàn)在想創(chuàng)建兩個卷組,vg1和vg2。sdc1和sdc2給vg1,sdc3和sdc4給vg2
修改卷組屬性,用來設置卷組是否處于活動狀態(tài),活躍狀態(tài)的時候卷組無法被刪除,非活動狀態(tài)的卷組才能被刪除掉。VG Status:resizable是表示可被調整大小的狀態(tài)。lvremove時有可能因為邏輯卷里東西過多導致刪除邏輯卷的時候假刪除,即邏輯卷沒了,但是里面東西還在,這時卷組覺得它里面還有東西,就會處于活躍狀態(tài),這時需要↓
接下來resize1要用來做塊(邏輯卷)的放大,resize2要用來做塊的縮小。設備放大時不論是掛載狀態(tài)下或非掛載狀態(tài)下都可以做放大,即在線放大。但是縮小的話設備要是非掛載的狀態(tài),即離線縮小
df -lh
發(fā)現(xiàn)size大小變小了。之前給的resize1是800M,resize2是784M,這里的大小表示文件系統(tǒng)(filesystem)大?。催@個設備能存多少東西),剩下的容量mkfs,掛載的時候都會損耗一定的容量大小。文件系統(tǒng)大小不會隨著塊的變大或縮小而改變,需要手動才能改變文件系統(tǒng)大小。
? 放大要先放大塊的大小,再放大文件系統(tǒng)的大小
lvresize -L +200M /dev/vg3/resize1 放大邏輯卷
如果不帶+,會出現(xiàn)warning,+時是在原有基礎之上加200M,不加+的話就是將現(xiàn)有邏輯卷的大小調整成200M。如果比之前設置的邏輯卷小的話就證明是要將其縮小,會造成數據丟失
resize2fs /dev/vg3/resize1 調整文件系統(tǒng)大小,但是不會管你到底是放大還是縮小,就是將文件系統(tǒng)調整到它可以變大的最大程度
df -lh 看設備容量變大了
? 縮小的時候要先將文件系統(tǒng)縮小,再縮小邏輯卷的大小
umount /mnt/rs2/
resize2fs /dev/vg3/resize2 700M
出現(xiàn)提示 [請先輸入e2fsck -f /dev/vg3/resize2 命令],將處于多個塊當中的內容整理到一起,以便進行縮小。但是也不能百分百保證數據不丟失
e2fsck -f /dev/vg3/resize2
resize2fs /dev/vg3/resize2 700M
lvresize -L 700M /dev/vg3/resize2
mount /dev/vg3/resize2 /mnt/rs2/ 重新掛載回來
df -lh 看系統(tǒng)里設備和文件系統(tǒng)掛載的使用情況
發(fā)現(xiàn)size變小了,縮小成功
1選擇
1.1一個文件的名字為rr.Z,可以用來解壓縮的命令時()
tar
gzip
compress
uncompress
1.2可以結束進程命令()
kill
ctrl+c
shutdown
halt
1.3 Linux下對文件進行歸檔的命令為:(多選)
dd
tar
zip
unzip
1.4 Linux查當前目錄下30天以前的文件并移動到/dev/null下的命令:(多選)
find.-mtime 30-type f xargs mv{}/dev/null;
find.-mtime+30-type xargs mv{}/dev/null;
find.-mtime+30-type f-exec mv{}/dev/null;
find.-mtime+30-type f-exec rm–rf{};
1.5 dstat與下面哪個命令類似
vmstat
sar
iotop
abc
1.6 rpm安裝軟件的參數
rpm-ivh
rpm-Ivh
rpm-Uvh
rpm-Iuvh
1.7 yum升級軟件包選項
rpm-uvh
rpm-Uvh
1.8查看網絡流量命令是?
iftop
nsload
ifstatd
以上命令全可以
1.9停止進程的命令,除了kill還有誰?
pkill
killa
allkill
以上命令都不正確
1.10服務器之間傳文件的命令有?
wget
scp
ftp
以上命令都可以
1.11對文件進行歸檔的命令為
dd
cpio
gzip
tar
1.12在rpm命令中,安裝新的rpm包軟件使用的參數是()
-i
-v
-h
-e
1.13du命令中,使用友好的方式顯示信息的參數是()
-h
-f
-a
-t
1.14將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此文件保存到/home目錄下,實現(xiàn)如此任務的tar命令格式___
tar zxvf/home/stud1/wang.tar.gz/home/wang
tar xcvf/home/stud1/wang/home/wang
tar zcv/home/stud1/wang/home/wang
tar zcvf/home/stud1/wang/home/wang.tar.gz
1.15終止一個前臺進程可能用到的命令和操作()A:kill
B:CTRL+C
C:shutdown
D:halt
1.16關閉Linux系統(tǒng)(不重新啟動)可使用命令()
A:Ctrl+Alt+Del
B:halt
C:shutdown-r now
D:reboot
1.17下列提法中,不屬于ifconfig命令作用范圍的是__
A:配置本地環(huán)回地址
B:配置網卡的IP地址
C:激活網絡適配器
D:加載網卡到內核中
1.18有關歸檔和壓縮命令,下面描述正確的是()
A:用uncompress命令解壓縮由compress命令生成地后綴為.zip的壓縮文件
B:upzip命令和gzip命令可以解壓相同類型文件
C:tar歸檔其壓縮的文件可以有gzip命令解壓縮
D:tar命令歸檔后的文件也是一種壓縮文件
1.19終止一共前臺進程可能用到的命令和操作
kill
ctrl+c
shut down
halt
1.22為了將當前目錄下的歸檔文檔myftp,tar解壓縮到/tmp目錄下,用戶可以使用命令
tar xvzf my
tar xvzf my
tar vzf my
tar xvzf my
1.23下面有關linux查看系統(tǒng)負載的命令,說法錯誤的是?
uptime命令主要用于獲取主機運行時間和查詢linux系統(tǒng)負載等信息
vmstat命令可以查看cpu負載
sar命令可以查看網絡接口信息
free命令可以查看磁盤負載情況
1.24以下哪些方式/命令不可以查看某ip是否可達?
telnet
ping
tracert
top
1.25 tar命令用于解壓的參數是?-v-x-c-f
1.26下面哪個命令不是用來查看網絡故障?
telnet
ping
init
netstat
1.28為了知道誰在正注冊到你的機器上,可以用命令:___
Who users finger ping
1.29查看本網段其他計算機的MAC地址,可先ping對方主機,然后;
arp-g
arp-n
arp-a
arp-d
1.3014日下午2點date+%y%m%d%H%M輸出的時間是什么
201711141212
1711141212
2017111412
201711021212
1.31以下哪個命令可以得出1487進程的線程運行情況()
top-Hp 1487
top-Pp 1487
ps-mp 1487
sat-p 1487
1.32從/home/oracle下搜索一個日志文件alert.log,以下哪種方式可達到目的()
find/home./oracle-name alert.log
locate alert.log
find./-mtime 7 alert.log
find/home/oracle-exec alert.log
1.34以下哪些命令可以用來測試網絡中特定主機的80端口是否可以訪問()
Ping telnet netstat lsof
2填空
2.1測試網絡中主機的連通性用什么命令
2.2如何查看numa是否關閉_**_
2.3將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此文件保存到/home目錄下,實現(xiàn)如此任務的tar命令格式_**
2.4某個進程使用端口7001,如何快速找到該進程的PID
2.5結束后臺進程的命令是**_**
2.6將/home/studl/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此存到/home目錄下,實現(xiàn)此任務的tar命令格式******__******
2.7 ping100個包的命令——
2.8 linux下,解壓縮bz2格式文件的命令是**_**
2.9 linux下,查看網絡連接狀態(tài)的命令是**___**
2.10Linux查看文件系統(tǒng)的命令為__,顯示目錄或文件占用磁盤的命令為___
2.11通常我們測試網絡連通性使用的ping命令,它是通過____協(xié)議進行工作的
2.12簡述下列命令的各自作用
nslookup
dig
top
traceroute
2.13將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此問價保存到/home目錄下,實現(xiàn)此任務的tar命令格****_****
2.14Linux系統(tǒng)查看進程數的命令___
2.15Linux系統(tǒng)查看系統(tǒng)內存的命令:____,**__**
2.16Linux系統(tǒng)查看cpu使用率的命令:____,**__**
2.17Linux系統(tǒng)查看硬盤空間使用率的命令:___
2.18Linux系統(tǒng)將某一文件下的所有.log文件進行打包壓縮,命令為___
2.19Linux常用的性能監(jiān)控命令是:_、_、_、_、_、_等
2.20假設output程序可能輸出標準輸出和標準錯誤,請寫出一條命令把這兩者都忽略__
2.21 rpm軟件包安裝命令**_**
3簡答
3.1查看硬盤結構顯示的命令?查看文檔命令?編輯文檔命令?
3.2配置網絡環(huán)境的命令,手工修改IP,主機名,DNS和網關
3.3有壓縮包a.tar.gz,如何解壓該包?如何不解壓該包,如何查看該包的內容?
3.4某進程abcd在系統(tǒng)中起了很多,數量難以統(tǒng)計,造成系統(tǒng)負荷較高,如何一條命令確保將此進程全部殺掉
3.5某日志路徑是/data/logs/a.txt,如何跟蹤該日志,以查看當時的運行狀態(tài)?
3.6 dmesg命令顯示的是哪方面信息
3.7尋找名稱為mytest.log的文件
3.8寫出du-sh與df-h的區(qū)別
3.9查看當前l(fā)inux服務器是否監(jiān)聽80端口,如果監(jiān)聽,請找出其進程ID,并結束該進程。
3.10使用curl或者wget獲取http服務的header信息。
3.11寫出查看linux系統(tǒng)性能的命令,如cpu、內存、流量、io等
3.12解釋下列命令的意思
dd if=/dev/random of=/dev/sda
3.13如何查看占用端口8080的進程
3.14查著占用內存最多的進程
3.15壓縮和解壓縮目錄/opt/gjsy/所有文件命令
3.16Linxu系統(tǒng)下如何查看8080端口上運行的程序狀態(tài)
3.17ps aux中的VSZ代表什么意思,RSS代表什么意思?
3.18PING是使用TCP/IP協(xié)議中的**_**協(xié)議
3.19寫出網絡故障排查常用的命令**__**
3.20寫出你常用的網絡抓包工具,軟件名稱**__**
3.21將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此文件保存到/home目錄下,實現(xiàn)此任務的tar命令格式___
3.22解釋該命令的含義:nohup zcat test.gz|grep"x6game"~/log.txt
2/dev/null
3.23查看系統(tǒng)硬件負載工具或命令有哪些
3.24使用lsof命令查看占用80端口的進程
3.25如何使用CURL測試POST接口
3.26怎樣在目錄/home/user/training/下找到擴展名為txt的文件
3.27最常用的網絡測試命令有什么?
3.28ping的測試結果中都包含哪些部分?
3.29如何找出占用22端口的進程及進程號?
3.30如何刪除當前目錄(包含字目錄)下所有30天以前創(chuàng)建的文件名后綴為.log的文件
3.31以下一些Linux命令的作用分別是什么?
init 0
chkconfig--level 3 sendmail on
tar-czvf test.tar.gz./
chown-R
ln-s/data/log//var/log/sina_log
umount-f/data0
rpm-ivh baihui.rpm
rpm-qf/bin/ls
3.32LINUX常用命令pwd、top、df、ifconfig、cat分別代表什么含義?
3.33linux常用命令:關機、重啟、編輯某文檔文件、刪除某文件、更改操作系統(tǒng)密碼命令分別是什么?
3.34請使用命令:刪除/backup目錄下10天前的普通文件
3.35如何查看服務器當前連接ip的列表
3.36寫出liunx系統(tǒng)中diff、chmod、grep、kill、tar五個常用命令的功能
3.37簡述tar-cjvf/tmp/test.tar.gz/root命令中錯誤及錯誤原因
3.38Linux系統(tǒng)從A服務器測試B服務器一個tcp端口是否聯(lián)通使用___
3.39寫一個腳本查找最后創(chuàng)建時間使3天前,后綴是*.log的文件并刪除
3.40linux如何根據進程ID查找啟動程序的路徑
3.41查看占用swap的進程id
3.42列出linux常見打包工具并寫相應解壓縮參數(至少三種)
3.43Linux中鎖定一個文件用什么命令?他和md5sum有什么區(qū)別?
3.44如何在系統(tǒng)中查找所有所屬用戶為user1的文件
3.45查看某個文件或者文件夾占用磁盤空間大小的命令
3.46如何查看遠程linux系統(tǒng)運行了多少時間?我的服務器內存,cpu,硬盤都是多少,系統(tǒng)版本,linux會優(yōu)先將數據緩存到內存中,我的機器真實內存消耗實際上是多少
3.47查看服務器當前開啟了哪些端口?如何查看某服務器是否存在IO壓力
3.48如何查看某個文件system.log被哪些進程占用
擴展
1.21在退出unix系統(tǒng)賬戶之后還需要繼續(xù)運行某個進程,那么可用()
awk sed crontab nohup screen
1.20使用trace命令的目的是()
可用的,十分成功的測試手段
非?;镜臏y試手段
把IP地址和DNS加入路由表中
在源到目標傳輸的過程中查找失散點
1.27哪個變量用來指定一個遠程x應用程序將輸出放到哪個x server上
TERM
DISPLAY
ECHO
OUTPUT
1.33P系列服務器被用做文件服務器,所有的用戶文件存都放在一非rootvg的文件系統(tǒng)上,用什么方法可以快速備份和恢復這些數據和文件系統(tǒng)的定義()
tar
cpio
savefs
savevg
Linux常用指令
(1)指令名稱:pwd
pwd命令也是最常用最基本的命令之一,用于顯示用戶當前所在的目錄。
(2)指令名稱:cd
cd命令不僅顯示當前狀態(tài),還改變當前狀態(tài),它的用法跟dos下的cd命令基本一致。
cd ..可進入上一層目錄
cd -可進入上一個進入的目錄
cd ~可進入用戶的home目錄
(3)指令名稱:cp
使用方式:
cp [options] source dest
cp [options] source... directory
說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。
參數 說明
-a 盡可能將檔案狀態(tài)、權限等資料都照原狀予以復制。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在復制前先予以刪除再行復制。
范例:
將檔案 aaa 復制(已存在),并命名為 bbb :
cp aaa bbb
將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished
(4)名稱:mv
使用方式:mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。
范例:
將檔案 aaa 更名為 bbb :
mv aaa bbb
將所有的C語言程序移至 Finished 子目錄中 :
mv -i *.c /Finished
(5)指令名稱 : chmod
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
說明 : Linux/Unix 的檔案存取權限分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。
mode : 權限設定字串,格式如下 : [ugoa...][+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執(zhí)行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執(zhí)行。
參數 說明
-c 若該檔案權限確實已經更改,才顯示其更改動作
-f 若該檔案權限無法被更改也不要顯示錯誤訊息
-v 顯示權限變更的詳細資料
-R 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更)
范例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt
將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt
將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定為只有該檔案擁有者可以執(zhí)行 :
chmod u+x ex1.py
將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *
此外chmod也可以用數字來表示權限如 chmod 777 file
語法為:chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的權限。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。
范例:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同
若用chmod 4755 filename可使此程式具有root的權限
(6)指令名稱 : ls
使用方式 : ls [-alrtAFR] [name...]
說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。
參數 說明
-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態(tài)、權限、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先后次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱后加一符號;例如可執(zhí)行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出
范例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈后面 :
ls -ltr s*
將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin
列出目前工作目錄下所有檔案及目錄;目錄于名稱后加 "/", 可執(zhí)行檔于名稱后加 "*" :
ls -AF
(7)指令名稱:rm
使用方式:rm [options] name...
說明:刪除檔案及目錄。
參數 說明
-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
范例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c
將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished
(8)指令名稱:rmdir
使用方式: rmdir [-p] dirName
說明: 刪除空的目錄。
參數: -p 是當子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。
范例:
將工作目錄下,名為 AAA 的子目錄刪除 :
rmdir AAA
在工作目錄下的 BBB 目錄中,刪除名為 Test 的子目錄。若 Test 刪除后,BBB 目錄成為空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test
(9)指令名稱:touch
使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[CC]YY][.ss]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]
說明:
touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。
參數 說明
a 改變檔案的讀取時間記錄
m 改變檔案的修改時間記錄
c 假如目的檔案不存在,不會建立新的檔案。
f 不使用,是為了與其他 unix 系統(tǒng)的相容性而保留
r 使用參考檔的時間記錄,與 --file 的效果一樣
d 設定時間與日期,可以使用各種不同的格式
t 設定檔案的時間記錄,格式與 date 指令相同
范例:
最簡單的使用方式,將檔案的時候記錄改為現(xiàn)在的時間。若檔案不存在,系統(tǒng)會建立一個新的檔案。
touch file
touch file1 file2
將 file 的時間記錄改為 5 月 6 日 18 點 3 分,公元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。
touch -c -t 05061803 file
touch -c -t 050618032000 file
將 file 的時間記錄改變成與 referencefile 一樣。
touch -r referencefile file
將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
(10)指令名稱:gzip
說明:gzip命令用于壓縮文件。
參數 : -d 將壓縮文件解壓
范例:
如果要將ye.txt文件壓縮,可用如下命令:
gzip ye.txt
這樣就可以壓縮文件并在文件名后面加上gz擴展名,變成文件ye.txt.gz。
解壓縮文件可用gzip -d命令實現(xiàn):
gzip -d ye.txt.gz
這樣就可以解壓縮文件并刪除gz擴展名。
(11)指令名稱:tar
說明:tar可以為文件和目錄創(chuàng)建檔案。利用tar,用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在,用戶可以在任何設備上創(chuàng)建檔案,如軟盤。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或將幾個文件組合成為一個文件以便于網絡傳輸是非常有用的。
參數 說明
c 創(chuàng)建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。
r 把要存檔的文件追加到檔案文件的未尾。例如用戶已經作好備份文件,又發(fā)現(xiàn)還有一個目錄或是一些文件忘記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中。
t 列出檔案文件的內容,查看已經備份了哪些文件。
u 更新文件。就是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后。
x 從檔案文件中釋放文件。
f 使用檔案文件或設備,這個選項通常是必選的。
m 在還原文件時,把所有文件的修改時間設定為現(xiàn)在。
v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。
z 用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮。
k 保存已經存在的文件。例如我們把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋。
范例:
可用如下方法建立tar檔案:
tar cvf
例如,如果要將當前目錄中所有文件存檔到y(tǒng)e.tar中,可用如下命令:
tar cvf ye.tar *.*
要瀏覽檔案內容,將c選項變成t。如果要瀏覽ye.tar檔案中的內容,可用如下命令:
tar tvf ye.tar
要取出檔案內的內容,將c選項變成x。如果要將ye.tar檔案中的內容取到當前目錄中,可用如下命令:
tar xvf ye.tar
新版的tar可以直接訪問和建立gzip壓縮的tar檔案,只要在tar命令中加上z 選項就可以了。例如:
生成壓縮檔案ye.tar.gz :
tar czvf ye.tar *.txt
顯示壓縮檔案ye.tar.gz的內容:
tar tzvf ye.tar *.txt
取出壓縮檔案ye.tar.gz的內容:
tar xzvf ye.tar *.txt
(12)指令名稱:mail
使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
說明:
mail 不僅只是一個指令, mail 還是一個電子郵件程序。
參數:
s 郵件標題
c 郵件地址 (2個地址以上用,一個地址不用加此參數)
范例:
①將信件送給一個或以上的電子郵件地址,由于沒有加入其他的選項,使用者必須輸入標題與信件的內容等。
mail user01@mcs.njnu.edu.cn
系統(tǒng)會提示輸入“subject”
②將 mail.txt 的內容寄給yzhu@mcs.hpc.njnu.edu.cn ,同時抄送給root@mcs.hpc.njnu.edu.cn
mail -s “標題” -c yzhu@mcs.hpc.njnu.edu.cn root@mcs.hpc.njnu.edu.cn mail.txt
接收到的郵件都保存在目錄 /var/spool/mail/用戶名
(13)指令名稱 : wall
使用方式 :
wall [ message ]
使用說明:
wall 會將訊息傳給每一個 mesg 設定為 yes 的上線使用者。
例子 :
傳訊息"hi" 給每一個使用者 :
wall hi