絕對路徑:路徑的寫法必定由根目錄/寫起node
相對路徑:路徑的寫法不是由\寫起,指相對於目前工做目錄的路徑正則表達式
對於文件名的正確性來講,絕對路徑的正確度要好。若是是在寫程序(shell scripts)來管理系統的條件下,務必使用絕對路徑的寫法。若是使用相對路徑在程序中,則可能因爲執行的工做環境不一樣,致使一些問題的發生。shell
一些特殊目錄符號以下:數據庫
. 表明此層目錄安全
.. 表明上一層目錄bash
- 表明前一個工做目錄數據結構
~ 表明「目前用戶身份」所在的主文件夾less
~account 表明account這個用戶的主文件夾socket
一些經常使用的目錄處理命令以下:編輯器
cd 切換目錄
pwd 顯式當前目錄
mkdir 新建一個新的目錄
rmdir 刪除一個空的目錄
cd(切換目錄)
cd [相對路徑或絕對路徑]
cd是Change Directory的縮寫,是用來切換工做目錄的命令。用戶剛登陸時,會進入本身的主文件夾(~),若是僅輸入cd時,表明的就是「cd ~」的意思。
Linux的默認命令行模式(bash shell)具備文件補齊功能,能夠利用[Tab]按鍵快速完整地輸入目錄,能夠避免按錯鍵盤輸入錯字。
pwd(顯示目前所在的目錄)
pwd [-P]
-P:顯示出當前的路徑,而非使用鏈接(link)路徑
pwd是Print Working Directory的縮寫,也就是顯示目前所在目錄的命令。對於link文件,-P參數可讓咱們取得正確的目錄名稱,而不是以鏈接文件的路徑來顯示的。
mkdir(新建新目錄)
mkdir [-mp] 目錄名稱
-m:配置文件案權限,直接設置,不須要看默認權限(umask)
-p:幫助直接將所需的目錄(包含上層目錄)遞歸建立起來
rmdir(刪除空的目錄)
rmdir [-p] 目錄名稱
-p:連同上層空的目錄一塊兒刪除
當咱們執行一個命令的時候,系統會依照PATH的設置去每一個PATH定義的目錄下查詢文件名爲此命令的可執行文件,若是在PATH定義的目錄中含有多個文件名爲此命令的可執行文件,那麼先查詢到的同名命令先被執行。
PATH(必定是大寫)這個變量的內容是由一堆目錄所組成的,每一個目錄中間用冒號(:)來隔開,每一個目錄是有「順序」之分的。能夠經過「echo $PATH」來查看當前系統中包含的PATH列表。通常用戶的PATH中,並不包含任何sbin目錄存在。若是想讓某個目錄加入PATH環境變量,能夠執行「$PATH=」$PATH」:/dir」。
① 不一樣用戶身份默認的PATH不一樣,默認可以隨意執行的命令也不相同;
② PATH是能夠修改的,因此通常用戶仍是能夠經過修改PATH來執行某些位於/sbin或/usr/sbin下的命令來查詢的;
③ 使用絕對路徑或相對路徑直接指定某個命令的文件名執行,會比查詢PATH來得準確;
④ 命令應該要放置到正確的目錄下,執行纔會比較方便;
⑤ 本目錄(.)最好不要放到PATH當中。
ls [-aAdfFhilnrRSt] 目錄名稱
ls [--color={never, auto, always}] 目錄名稱
ls [--full-time] 目錄名稱
參數:
-a:所有的文件,連同隱藏文件一塊兒列出來
-A:列出全部的文件(連同隱藏文件,但不包括.與..這兩個目錄)
-d:僅列出目錄自己,而不是列出目錄內的數據文件
-f:直接列出結果,而不進行排序(ls默認會以文件名排序)
-F:根據文件、目錄等信息給予附加數據結構,例如*表明可執行文件、/表明目錄、=表明socket文件、|表明FIFO文件
-h:將文件容量以人類較易讀的方式(例如GB,KB等)列出來
-i:列出inode號碼
-l:列出長數據串,包含文件的屬性與權限等數據
-n:列出UID與GID,而非用戶與用戶組的名稱
-r:將排序結果反向輸出,例如文件名有小到大,反向則爲由大到小
-R:連同子目錄內容一塊兒列出來,等於該目錄下的全部文件都會顯示出來
-S:以文件容量大小排序,而不是用文件名排序
-t:依時間排序,而不是文件名
--color=never:不要根據文件特性給予顏色顯示
--color=auto:讓系統自行依據設置來判斷是否給予顏色
--color=always:顯示顏色
--full-time:以完整時間模式(年月日時分)輸出
--time={atime, ctime}:輸出訪問時間或改變權限屬性時間(ctime)而非內容更改時間
cp(複製文件或目錄)
cp [-adfilprsu] source destination
cp [options] source1 source2 source3 … directory
參數:
-a:至關於-pdr的意思
-d:若源文件爲鏈接文件的屬性(link file),則複製鏈接文件屬性而非文件自己
-f:爲強制(force)的意思,若目標文件已經存在且沒法開啓,則刪除後再嘗試一次
-i:若目標文件(destination)已經存在時,在覆蓋時會先詢問操做的進行
-l:進行硬鏈接(hard link)的鏈接文件建立,而非複製文件自己
-p:連同文件的屬性一塊兒複製過去,而非使用默認屬性
-r:遞歸持續複製,用於目錄的複製行爲;
-s:複製成爲符號連接文件(symbolic link),即「快捷方式」文件
-u:若destination比source舊才更新destination
若是源文件有兩個以上,則最後一個目的文件必定要是目錄才行。
在默認的條件中,cp的源文件與目的文件的權限是不一樣的,目的文件的全部者一般會是命令操做者自己。所以當咱們在進行備份的時候,某些須要特別注意的特殊權限文件,例如密碼文件以及一些配置文件,就不能直接以cp來複制,而必需要加上-a或者是-p等能夠完整複製文件權限的參數才行。
對於無修改文件全部者與用戶組的普通用戶來講,雖然可以複製源文件的相關權限與時間等屬性,可是與全部者、用戶組相關的,本來普通用戶沒法進行的操做,即便加上-a參數,也是沒法達成完整複製權限的。
rm(移除文件或目錄)
rm [-fir] 文件或目錄
參數:
-f:force,忽略不存在的文件,不會出現警告信息
-i:互動模式,在刪除前會詢問用戶是否操做
-r:遞歸刪除(很是危險的參數!!!)
mv(移動文件與目錄,或改名)
mv [-fiu] source destination
mv [options] source1 source2 source3 … directory
若是有多個源文件或目錄,則最後一個目標文件必定要是目錄
basename /etc/sysconfig/network ==> network 取得文件名
dirname /etc/sysconfig/network ==> /etc/sysconfig 取得目錄名
若是要查閱一個文件的內容時,能夠用到如下命令:
cat:由第一行開始顯示文件內容
tac:從最後一行開始顯示
nl:顯示的時候,順便輸出行號
more:一頁一頁地顯示文件內容
less:與more相似,可是比more更好的是,它能夠往前翻頁
head:只看頭幾行
tail:只看結尾幾行
od:以二進制的方式讀取文件內容
直接查看文件內容能夠用cat、tac、nl這幾個命令。
cat(concatenate)
格式:cat [-AbEnTv] 文件
參數:
-A:至關於-vET的整合參數,可列出如下特殊字符,而不是空白而已;
-b:列出行號,僅針對非空白作行號顯示,空白行不標行號;
-E:將結尾的斷行字符$顯示出來(斷行字符在Windows、Linux中不太相同,Windows中的斷行字符是^MS);
-n:打印出行號,連同空白行也會有行號,與-b的參數不一樣;
-T:將[Tab]按鍵以^I顯示出來;
-v:列出一些看不出來的特殊字符。
tac(反向列示)
格式:tac 文件
tac恰好是將cat反寫過來,因此它的功效就跟cat相反。
nl(添加行號打印)
格式:nl [-bnw] 文件
參數:
-b:指定行號指定的方式,主要有兩種:
-b a:表示不管是否爲空行,也一樣列出行號(相似cat -n);
-b t:若是有空行,空的那一行不要列出行號(默認值);
-n:列出行號表示的方法,主要有三種:
-n nl:行號在屏幕的最左方顯示;
-n rn:行號在本身字段的最右方顯示,且不加0;
-n rz:行號在本身字段的最右方顯示,且加0;
-w:行號字段佔用的位數。
nl能夠將輸出的文件內容自動加上行號,其默認的結果與cat –n有點不太同樣,nl能夠將行號作比較多的顯示設計,包括位數與是否自動補0等的功能。
more(一頁一頁翻動)
在more這個程序運行的過程中,有以下按鍵能夠選擇:
空格鍵(Space):表明向下翻一頁;
Enter:表明向下滾動一行;
/字符串:表明在這個顯示的內容當中,向下查詢「字符串」這個關鍵字;
:f:馬上顯示出文件名以及目前顯示的行數;
q:表明馬上離開more,再也不顯示該文件內容;
b或[ctrl]-b:表明往回翻頁,不過這操做只對文件有用,對管道無用。
less(一頁一頁翻動)
less的用法比起more又更有彈性,在使用more的時候,咱們並無辦法向前面翻,只能日後面看,但若使用了less時,就可使用上下等按鍵的功能來往前日後翻看文件。能夠輸入的命令有:
空格鍵(Space):向下翻動一頁;
[PageDown]:向下翻動一頁;
[PageUp]:向上翻動一頁;
/字符串:向下查詢「字符串」的功能;
?字符串:向上查詢「字符串」的功能;
n:重複前一個查詢(與/或?有關);
N:反向重複前一個查詢(與/或?有關);
q:離開less這個程序。
head與tail都是以「行」爲單位進行數據選取的。
head(取出前面幾行)
格式:head [-n number] 文件
參數:
-n:後面接數字,表明顯示幾行的意思
若number爲-a,表明列出前面的全部行數,但不包括後面的a行。
tail(取出後面幾行)
格式:tail [-n number] 文件
參數:
-n:後面接數字,表明顯示幾行的意思
-f:表示持續檢測後面所接的文件名,要等到按下[ctrl]-c纔會結束tail的檢測
若number爲+a,表明該文件從a行之後都會被列出來,包括第a行。
格式:od [-t TYPE] 文件
參數:
-t:後面能夠接各類「類型」的輸出,例如:
a:利用默認的字符來輸出;
c:使用ASCII字符來輸出;
d[size]:利用十進制(decimal)來輸出數據,每一個整數佔用size bytes;
f[size]:利用浮點數(floating)來輸出數據,每一個數佔用size bytes;
o[size]:利用八進制(octal)來輸出數據,每一個整數佔用size bytes;
o[size]:利用十六進制(hexadecimal)來輸出數據,每一個整數佔用size bytes。
每一個文件在Linux下面都會記錄許多的時間參數,有三個主要的變更時間,其意義分別爲:
modification time(mtime):當該文件的「內容數據」更改時,就會更新這個時間。
status time(ctime):當該文件的「狀態」改變時,就會更新這個時間。
access time(atime):當「該文件的內容被取用」時,就會更新這個讀取時間。
在默認的狀況下,ls顯示出來的是該文件的mtime,也就是這個文件的內容上次被更改的時間。
有時系統時間會出現錯誤的狀況,若是要修改錯誤時間,可使用touch命令。
格式:touch [-acdmt] 文件
參數:
-a:僅修改訪問時間;
-c:僅修改文件的時間,若該文件不存在則不建立新文件;
-d:後面能夠接欲修改的日期而不用目前的時間,也可使用--date=」日期或時間」;
-m:僅修改mtime;
-t:後面能夠接欲修改的日期而不用目前的時間,格式爲[YYMMDDhhmm]。
touch命令最經常使用的狀況是建立一個空的文件、將某個文件日期改成目前時間(mtime與atime)。
umask就是指定目前用戶在新建文件或目錄時候的權限默認值。
查看的方式有兩種,一種能夠直接輸入umask,就能夠看到數字形態的權限設置分數,一種是加入-S(Symbolic)這個參數,就會以符號類型的方式顯示出權限了。umask第一組是特殊權限用的。
默認狀況下,若用戶建立「文件」,則默認沒有可執行(x)權限,即只有rw這兩個選項,即爲-rw-rw-rw-(666);若用戶建立「目錄」,則因爲x與是否能夠進入此目錄有關,所以默認爲全部權限均開放,即爲drwxrwxrwx(777)。
umask的分數指的是「該默認值須要減掉的權限」。例如0022,表示user沒有拿掉任何權限,group與others的權限被拿掉了2(也就是w這個權限)。那麼當用戶新建文件時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--;新建目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x。
在默認的狀況中,root的umask會拿掉比較多的屬性,root的umask默認是022,這是基於安全的考慮,至於通常身份用戶,一般他們的umask默認是002,即保留同用戶組的寫入權利。
chattr(設置文件的隱藏屬性)
格式:chattr [+-=] [ASacdistu] 文件或目錄名稱
參數:
+:增長一個特殊參數,其餘本來存在參數則不動。
-:刪除一個特殊參數,其餘本來存在參數則不動。
=:僅有後面接的參數。
A:當設置了A屬性時,若訪問文件/目錄時,訪問時間atime將不會被修改,可避免I/O較慢的機器過分訪問磁盤。
S:加上S屬性時,當進行任何文件的修改,該改動會「同步」寫入磁盤中。
a:當設置a以後,文件只能增長數據,而不能刪除也不能修改數據,只有root才能設置這個屬性。
c:設置c屬性後,將會自動將此文件壓縮,在讀取的時候將會自動解壓縮,可是在存儲的時候,將會先進行壓縮後再存儲。
d:當dump程序被執行時,設置d屬性將可以使該文件/目錄不會被備份。
i:可讓文件「不能被刪除、更名,設置鏈接也沒法寫入或添加數據」。對於系統安全性有很大幫助,只有root能設置此屬性。
s:當文件設置了s屬性時,若是這個文件被刪除,它將會被徹底從這個磁盤空間中刪除。
u:與s相反,當使用u來配置文件時,若是這個文件被刪除,則數據內容還存在磁盤中,可使用來找回該文件。
lsattr(顯示文件隱藏屬性)
lsattr [-adR] 文件或目錄
參數:
-a:將隱藏文件的屬性也顯示出來;
-d:若是是目錄,僅列出目錄自己的屬性而非目錄內的文件名;
-R:連同子目錄的數據也一併列出來。
l Set UID
當s這個標誌出如今文件全部者的x權限上時,此時就被稱爲Set UID,簡稱爲SUID的特殊權限。SUID有這樣的限制與功能:
1) SUID權限僅對二進制程序(binary program)有效;
2) 執行者對於該程序須要具備x的可執行權限;
3) 本權限僅在執行該程序的過程當中(run-time)有效;
4) 執行者將具備改程序全部者(owner)的權限。
SUID僅可用在二進制程序上,不可以用在shell script上面。這是由於shell script只是將不少的二進制執行文件調度來執行而已。因此SUID的權限部分,仍是要看shell script調用進來的程序的設置,而不是shell script自己。SUID對於目錄也是無效的。
l Set GID
s在用戶組的x時則稱爲Set GID,SGID。
與SUID不一樣的是,SGID能夠針對文件或目錄來設置。若是是對文件來講,SGID有以下功能:
1) SGID對二進制程序有用;
2) 程序執行者對於該程序來講,需具有x的權限;
3) 執行者在執行的過程當中將會得到該程序用戶組的支持。
當一個目錄設置了SGID的權限後,它將具備以下的功能:
1) 用戶若對於此目錄具備r與x的權限時,該用戶可以進入此目錄;
2) 用戶在此目錄下的有效用戶組(effective group)將會變成該目錄的用戶組;
3) 若用戶在此目錄下具備w的權限(能夠新建文件),則用戶所建立的新文件的用戶組與此目錄的用戶組相同。
l Sticky Bit
Sticky Bit(SBIT)目前只針對目錄有效。SBIT對於目錄的做用是:
1) 當用戶對於此目錄具備w、x權限,即具備寫入的權限時;
2) 當用戶在該目錄下建立文件或目錄時,僅有本身與root纔有權利刪除該文件。
例如,當甲這個用戶於A目錄是具備用戶組或其餘人的身份,而且擁有該目錄w的權限,這表示甲用戶對該目錄內任何人新建的目錄或文件都可進行刪除、重命名、移動等操做。不過,若是將A目錄加上了SBIT的權限項目時,則甲只可以針對本身建立的文件或目錄進行刪除、重命名、移動等操做,而沒法刪除他人的文件。
l SUID/SGID/SBIT權限設置
數字形態更改權限的方式爲三個數字的組合,若是在這三個數字以前再加上一個數字的話,最前面的那個數字就表明這幾個權限了:4爲SUID,2爲SGID,1爲SBIT。
若是user、group以及others都沒有x這個可執行的標誌,當分配相對應權限時,會顯示S、T,表示權限爲空。
除了數字法以外,也能夠經過符號法來處理。其中SUID爲u+s,而SGID爲g+s,SBIT爲o+t。
能夠經過file命令查看某個文件的基本數據,且其中有沒有使用到動態函數庫(share library)。
which(尋找「執行文件」)
格式:which [-a] command
參數:
-a:將全部由PATH目錄中能夠找到的命令均列出,而不僅第一個被找到的命令名稱
這個命令是根據PATH這個環境變量所規範的路徑去查詢「執行文件」的文件名。因此,重點是找出執行文件而已,且which後面接的是完整文件名。若加上-a參數,則能夠列出全部的能夠找到的同名執行文件,而非僅顯示第一個而已。
一般find不很經常使用的,由於速度慢!一般咱們咱們都是先使用whereis或者是locate來檢查,若是真的找不到了,才以find來查找。由於whereis和locate是利用數據庫來查找數據,因此至關快,並且沒有實際查詢硬盤,比較節省時間。
whereis(尋找特定文件)
格式:whereis [-bmus] 文件或目錄名
參數:
-b:只找二進制格式的文件
-m:只找在說明文件manual路徑下的文件
-s:只找source源文件
-u:查找不在上述三個選項當中的其餘特殊文件
Linux系統會將系統內的全部文件都記錄在一個數據庫文件裏面,而當使用whereis或者是下面要說的locate時,會找到已經被刪除掉的文件!並且也找不到最新的剛纔建立的文件。
locate
格式:locate [-ir] keyword
參數:
-i:忽略大小寫的差別;
-r:後面可接正則表達式的顯示方式。
locate尋找的數據是由已建立的數據庫/var/lib/mlocate/裏面的數據所查找到的,因此不用直接再去硬盤當中訪問數據。數據庫的建立默認是天天執行一次(每一個distribution都不一樣),因此當你新建文件後查找該文件,那麼locate會告訴你「找不到」,由於必需要更新數據庫。
updated命令會去讀取/etc/updated.conf這個配置文件的設置,而後再去硬盤裏進行查找文件名的操做,最後就更新整個數據庫文件了。
find
格式:find [PATH] [option] [action]
參數:
1)、與時間有關的參數:共有-atime、-ctime與-mtime,下面以-mtime說明。
-mtime n:n爲數字,意義爲在n天以前的「一天以內」被更改過的文件;
-mtime +n:列出在n天以前(不含n天自己)被更改過的文件名;
-mtime -n:列出在n天以內(含n天自己)被更改過的文件名;
-newer file:file爲一個存在的文件,列出比file還要新的文件名。
2)、與用戶或用戶組有關的參數:
-uid n:n爲UID,是記錄在/etc/passwd裏面與帳號名稱對應的數字;
-gid n:n爲GID,記錄在/etc/group中;
-user name:name爲用戶帳號名稱;
-group name:name爲用戶組名;
-nouser:尋找文件的全部者不存在/etc/passwd中的文件;
-nogroup:尋找文件的全部用戶組不存在/etc/group中的文件。
3)、與文件權限及名稱有關的參數:
-name filename:查找文件名爲filename的文件;
-size [+-] SIZE:查找比SIZE還好大(+)或小(-)的文件;
-type TYPE:查找文件的類型爲TYPE的;
-perm mode:查找文件權限「恰好等於」mode的文件;
-perm -mode:查找文件權限「必需要所有包括mode的權限」的文件;
-perm +mode:查找文件權限「包含任一mode的權限」的文件。
4)、其餘可進行的操做:
-exec command:command爲其餘命令,-exec後面可再接其餘的命令來處理查找到的結果;
-print:將結果打印到屏幕上,這個操做是默認操做。
例如:find / -perm +7000 -exec ls -l {} \;
1) {}表明的是「由find找到的內容,find的結果會被放置在{}位置中」;
2) -exec一直到「\;」是關鍵字,表明find額外命令的開始(-exec)到結束(\;),在這中間的就是find命令內的額外命令,在本例中就是「ls -l {}」;
3) 由於「;」在bash環境下是有特殊意義的,所以利用反斜槓來轉義。
1) 讓用戶能進入某目錄成爲「可工做目錄」的基本權限是什麼
可以使用的命令:例如cd等切換工做目錄的命令
目錄所需權限:用戶對這個目錄至少須要具備x的權限
額外需求:若是用戶想要在這個目錄內利用ls查閱文件名,則用戶對此目錄還須要r的權限
2) 用戶在某個目錄內讀取一個文件的基本權限是什麼
可以使用的命令:例如cat、more、less等
目錄所需權限:用戶對這個目錄至少須要具備x權限
文件所需權限:用戶對文件至少須要具備r的權限
3) 讓用戶能夠修改一個文件的基本權限是什麼
可以使用的命令:例如nano或vi編輯器等
目錄所需權限:用戶在該文件所在的目錄至少要有x權限
文件所需權限:用戶對該文件至少要有r,w權限
4) 讓一個用戶能夠建立一個文件的基本權限是什麼
目錄所需權限:用戶在該目錄要具備w,x的權限,重點在w
5) 讓用戶進入某目錄並執行該目錄下的某個命令的基本權限是什麼
目錄所需權限:用戶在該目錄至少要有x的權限
文件所需權限:用戶在該文件至少須要有x的權限