1. 程式人生 > >linux學系筆記

linux學系筆記

機器 sym 一個 掛載 des 創建文件 mbo 新建 讀取文件

1 pwd 打印當前目錄位置

2 mkdir 創建目錄

  -p 遞歸創建未存在的父目錄

  -m 設置目錄的屬性權限

    mkdir -m 777 testa # 創建以777為權限的testa目錄

3 rmdir 刪除空目錄

  -p 遞歸刪除上層空目錄

    rmdir -p /testa/testb    #同時刪除 testa testb連個空目錄

4 $PATH 可執行文件路徑的變量,每個目錄用冒號隔開

   echo $PATH     #輸出變量

5 ls 顯示文件或者目錄信息  

[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目錄名稱..
[root@study 
~]# ls [--color={never,auto,always}] 文件名或目錄名稱.. [root@study ~]# ls [--full-time] 文件名或目錄名稱.. 選項與參數: -a :全部的文件,連同隱藏文件( 開頭為 . 的文件) 一起列出來(常用) -A :全部的文件,連同隱藏文件,但不包括 . 與 .. 這兩個目錄 -d :僅列出目錄本身,而不是列出目錄內的文件數據(常用) -f :直接列出結果,而不進行排序 (ls 默認會以文件名排序!) -F :根據文件、目錄等信息,給予附加數據結構,例如: *:代表可可執行文件; /:代表目錄; =:代表 socket 文件; &#124
;:代表 FIFO 文件; -h :將文件大小以人類較易讀的方式(例如 GB, KB 等等)列出來-i :列出 inode 號碼,inode 的意義下一章將會介紹; -l :長數據串行出,包含文件的屬性與權限等等數據;(常用) -n :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在帳號管理提到!) -r :將排序結果反向輸出,例如:原本文件名由小到大,反向則為由大到小; -R :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來; -S :以文件大小大小排序,而不是用文件名排序; -t :依時間排序,而不是用文件名--color=never :不要依據文件特性給予顏色顯示;
--color=always :顯示顏色 --color=auto :讓系統自行依據設置來判斷是否給予顏色 --full-time :以完整時間模式 (包含年、月、日、時、分) 輸出 --time={atime,ctime} :輸出 access 時間或改變權限屬性時間 (ctime) 而非內容變更時間 (modification time

6 cp 復制文件或目錄,創建鏈接

[root@study ~]# cp [-adfilprsu] 來源文件(source) 目標文件(destination)
[root@study ~]# cp [options] source1 source2 source3 .... directory
選項與參數:
-a :相當於 -dr --preserve=all 的意思,至於 dr 請參考下列說明;(常用)註:復制時,盡可能保持原文件按屬性
-d :若來源文件為鏈接文件的屬性(link file),則復制鏈接文件屬性而非文件本身;
-f :為強制(force)的意思,若目標文件已經存在且無法打開,則移除後再嘗試一次;註:若文件存在,則刪除該文件
-i :若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)註:最好 將-i 選項置成別名
-l :進行硬式鏈接(hard link)的鏈接文件創建,而非復制文件本身;
-p :連同文件的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用);
-r :遞回持續復制,用於目錄的復制行為;(常用)
-s :復制成為符號鏈接文件 (symbolic link),亦即“捷徑”文件;
-u :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才復制。
--preserve=all :除了 -p 的權限相關參數外,還加入 SELinux 的屬性, links, xattr 等也復制了。
最後需要註意的,如果來源文件有兩個以上,則最後一個目的文件一定要是“目錄”才行!

7 rm 刪除文件或目錄,刪除目錄時加上 -r 選項

[root@study ~]# rm [-fir] 文件或目錄
選項與參數:
-f :就是 force 的意思,忽略不存在的文件,不會出現警告訊息;
-i :互動模式,在刪除前會詢問使用者是否動作
-r :遞回刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!

8 mv

[root@study ~]# mv [-fiu] source destination
[root@study ~]# mv [options] source1 source2 source3 .... directory
選項與參數:
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,才會更新 (update)

9 文件內容查閱指令

cat 由第一行開始顯示文件內容
tac 從最後一行開始顯示,可以看出 taccat 的倒著寫!
nl 顯示的時候,順道輸出行號!
more 一頁一頁的顯示文件內容
lessmore 類似,但是比 more 更好的是,他可以往前翻頁!
head 只看頭幾行
tail 只看尾巴幾行
od 以二進制的方式讀取文件內容!

  cat (concatenate) 由第一行開始顯示文件內容

[root@study ~]# cat [-AbEnTv]
選項與參數:
-A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
-E :將結尾的斷行字符 $ 顯示出來;
-n :打印出行號,連同空白行也會有行號,與 -b 的選項不同;
-T :將 [tab] 按鍵以 ^I 顯示出來;
-v :列出一些看不出來的特殊字符

  tac (反向列示)

從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!

  nl (添加行號打印)顯示的時候,順道輸出行號!
[root@study ~]# nl [-bnw] 文件
選項與參數:
-b :指定行號指定的方式,主要有兩種:
-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認值);
-n :列出行號表示的方法,主要有三種:
-n ln :行號在屏幕的最左方顯示;
-n rn :行號在自己字段的最右方顯示,且不加 0-n rz :行號在自己字段的最右方顯示,且加 0-w :行號字段的占用的字符數  
 
more (一頁一頁翻動)一頁一頁的顯示文件內容
空白鍵 (space):代表向下翻一頁;
Enter :代表向下翻“一行”;
/字串 :代表在這個顯示的內容當中,向下搜尋“字串”這個關鍵字;
:f :立刻顯示出文件名以及目前顯示的行數;
q :代表立刻離開 more ,不再顯示該文件內容。
b 或 [ctrl]-b :代表往回翻頁,不過這動作只對文件有用,對管線無用。

  less (一頁一頁翻動) less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!

空白鍵 :向下翻動一頁;
[pagedown]:向下翻動一頁;
[pageup] :向上翻動一頁;
/字串 :向下搜尋“字串”的功能;
?字串 :向上搜尋“字串”的功能;
n :重復前一個搜尋 (與 / 或 ? 有關!)
N :反向的重復前一個搜尋 (與 / 或 ? 有關!)
g :前進到這個數據的第一行去;
G :前進到這個數據的最後一行去 (註意大小寫);
q :離開 less 這個程序;

  head (取出前面幾行)

[root@study ~]# head [-n number] 文件
選項與參數:
-n :後面接數字,代表顯示幾行的意思

  tail (取出後面幾行)

[root@study ~]# tail [-n number] 文件
選項與參數:
-n :後面接數字,代表顯示幾行的意思
-f :表示持續偵測後面所接的文件名,要等到按下[ctrl]-c才會結束tail的偵測
[root@study ~]# tail /etc/man_db.conf # 默認的情況中,顯示最後的十行!若要顯示最後的 20 行,就得要這樣:
[root@study ~]# tail -n 20 /etc/man_db.conf
範例一:如果不知道/etc/man_db.conf有幾行,卻只想列出100行以後的數據時?
[root@study ~]# tail -n +100 /etc/man_db.conf
範例二:持續偵測/var/log/messages的內容
[root@study ~]# tail -f /var/log/messages <==要等到輸入[crtl]-c之後才會離開tail這個指令的偵測!

  od 讀取非純文本文件

[root@study ~]# od [-t TYPE] 文件
選項或參數:
-t :後面可以接各種“類型 (TYPE)”的輸出,例如:
a :利用默認的字符來輸出;
c :使用 ASCII 字符來輸出
d[size] :利用十進制(decimal)來輸出數據,每個整數占用 size Bytes ;
f[size] :利用浮點數值(floating)來輸出數據,每個數占用 size Bytes ;
o[size] :利用八進位(octal)來輸出數據,每個整數占用 size Bytes ;
x[size] :利用十六進制(hexadecimal)來輸出數據,每個整數占用 size Bytes ;
範例一:請將/usr/bin/passwd的內容使用ASCII方式來展現!
[root@study ~]# od -t c /usr/bin/passwd
0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020 003 \0 &gt; \0 001 \0 \0 \0 364 3 \0 \0 \0 \0 \0 \0
0000040 @ \0 \0 \0 \0 \0 \0 \0 x e \0 \0 \0 \0 \0 \0
0000060 \0 \0 \0 \0 @ \0 8 \0 \t \0 @ \0 035 \0 034 \0
0000100 006 \0 \0 \0 005 \0 \0 \0 @ \0 \0 \0 \0 \0 \0 \0
.....(後面省略)....
# 最左邊第一欄是以 8 進位來表示Bytes數。以上面範例來說,第二欄0000020代表開頭是
# 第 16 個 byes (2x8) 的內容之意。
範例二:請將/etc/issue這個文件的內容以8進位列出儲存值與ASCII的對照表
[root@study ~]# od -t oCc /etc/issue
0000000 134 123 012 113 145 162 156 145 154 040 134 162 040 157 156 040
\ S \n K e r n e l \ r o n
0000020 141 156 040 134 155 012 012
a n \ m \n \n
0000027
# 如上所示,可以發現每個字符可以對應到的數值為何!要註意的是,該數值是 8 進位喔!
# 例如 S 對應的記錄數值為 123 ,轉成十進制:1x8^2+2x8+3=83

10 touch 修改文件時間或創建新文件,touch 這個指令最常被使用的情況是: 創建一個空的文件; 將某個文件日期修訂為目前 (mtime 與 atime)

[root@study ~]# touch [-acdmt] 文件
選項與參數:
-a :僅修訂 access time; access time (atime): 當“該文件的內容被取用”時,就會更新這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man_db.conf , 就會更新該文件的 atime 了。
-c :僅修改文件的時間,若該文件不存在則不創建新文件; status time (ctime): 當該文件的“狀態 (status)”改變時,就會更新這個時間,舉 例來說,像是權限與屬性被更改了,都會更新這個時間啊。
-d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
-m :僅修改 mtime ; modification time (mtime): 當該文件的“內容數據”變更時,就會更新這個時間!內 容數據指的是文件的內容,而不是文件的屬性或權限喔!
-t :後面可以接欲修訂的時間而不用目前的時間,格式為[YYYYMMDDhhmm]

11 chattr (設置文件隱藏屬性)

[root@study ~]# chattr [+-=][ASacdistu] 文件或目錄名稱
選項與參數:
+ :增加某一個特殊參數,其他原本存在參數則不動。
- :移除某一個特殊參數,其他原本存在參數則不動。
= :設置一定,且僅有後面接的參數
A :當設置了 A 這個屬性時,若你有存取此文件(或目錄)時,他的存取時間 atime 將不會被修改,
可避免 I/O 較慢的機器過度的存取磁盤。(目前建議使用文件系統掛載參數處理這個項目)
S :一般文件是非同步寫入磁盤的(原理請參考[前一章sync](../Text/index.html#sync)的說明),如果加上 S 這個屬性時,
當你進行任何文件的修改,該更動會“同步”寫入磁盤中。
a :當設置 a 之後,這個文件將只能增加數據,而不能刪除也不能修改數據,只有root 才能設置這屬性
c :這個屬性設置之後,將會自動的將此文件“壓縮”,在讀取的時候將會自動解壓縮,
但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大文件似乎蠻有用的!)
d :當 dump 程序被執行的時候,設置 d 屬性將可使該文件(或目錄)不會被 dump 備份
i :這個 i 可就很厲害了!他可以讓一個文件“不能被刪除、改名、設置鏈接也無法寫入或新增數據!”
對於系統安全性有相當大的助益!只有 root 能設置此屬性
s :當文件設置了 s 屬性時,如果這個文件被刪除,他將會被完全的移除出這個硬盤空間,
所以如果誤刪了,完全無法救回來了喔!
u :與 s 相反的,當使用 u 來設置文件時,如果該文件被刪除了,則數據內容其實還存在磁盤中,
可以使用來救援該文件喔!
註意1:屬性設置常見的是 a 與 i 的設置值,而且很多設置值必須要身為 root 才能設置
註意2:xfs 文件系統僅支持 AadiS 而已
範例:請嘗試到/tmp下面創建文件,並加入 i 的參數,嘗試刪除看看。
[root@study ~]# cd /tmp
[root@study tmp]# touch attrtest &lt;==創建一個空文件
[root@study tmp]# chattr +i attrtest &lt;==給予 i 的屬性
[root@study tmp]# rm attrtest &lt;==嘗試刪除看看
rm: remove regular empty file `attrtest? y
rm: cannot remove `attrtest: Operation not permitted
# 看到了嗎?呼呼!連 root 也沒有辦法將這個文件刪除呢!趕緊解除設置!
範例:請將該文件的 i 屬性取消!
[root@study tmp]# chattr -i attrtest

12 lsattr (顯示文件隱藏屬性)

[root@study ~]# lsattr [-adR] 文件或目錄
選項與參數:
-a :將隱藏文件的屬性也秀出來;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;
-R :連同子目錄的數據也一並列出來!
[root@study tmp]# chattr +aiS attrtest
[root@study tmp]# lsattr at

13 Set UID

  SUID 權限僅對二進制程序(binary program)有效;

  執行者對於該程序需要具有 x 的可執行權限;

  本權限僅在執行該程序的過程中有效 (run-time);

  執行者將具有該程序擁有者 (owner) 的權限。

14 Set UID

  SGID 對二進制程序有用;

  程序執行者對於該程序來說,需具備 x 的權限; 

   執行者在執行的過程中將會獲得該程序群組的支持!

當一個目錄設置了 SGID 的權限後,他將具有如下的功能:

  使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;

  使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;

  用途:若使用者在此目錄下具有 w 的權限(可以新建文件),則使用者所創建的新文 件,該新文件的群組與此目錄的群組相同。

15 Sticky Bit 這個 Sticky Bit, SBIT 目前只針對目錄有效,對於文件已經沒有效果了。SBIT 對於目錄的作用 是:

   當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;

   當使用者在該目錄下創建文件或目錄時,僅有自己與 root 才有權力刪除該文件

16 SUID/SGID/SBIT 權限設置

  4 為 SUID

  2 為 SGID

  1 為 SBIT

用chmod xxxx filename 來設置 ,而除了數字法之外,你也可以通過符號法來處理喔!其中 SUID 為 u+s ,而 SGID 為 g+s , SBIT 則是 o+t 啰!

17 file 觀察文件類型

linux學系筆記