cat 是一個所有使用者可以使用,把檔案輸出或者定向到另一個file中的指令;
參數:
-n 由1開始對所有輸出标上行号,包括空白行和重複行;
-b 由1開始對輸出标上行号,過濾空白行;
-s 當輸出中有多個連續的空白行,代換為1個空白行;
>定向到另一個檔案中
範例:
首先取出install.log的前20行,然後編輯添加空白行,定向到tmp下的install.log中,并添加空行5個;
[root@server ~]# touch /tmp/install.log
[root@server ~]# cat install.log | head -n 10 >/tmp/install.log
[root@server ~]# vi /tmp/install.log
安裝 xkeyboard-config-2.11-1.el6.noarch
安裝 fontpackages-filesystem-1.41-1.1.el6.noarch
warning: fontpackages-filesystem-1.41-1.1.el6.noarch:Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
安裝 m17n-db-1.5.5-1.1.el6.noarch
安裝 liberation-fonts-common-1.05.1.20090721-5.el6.noarch
安裝 setup-2.8.14-20.el6_4.1.noarch
安裝 xml-common-0.6.3-33.el6.noarch
安裝 iso-codes-3.16-2.el6.noarch
安裝 filesystem-2.4.30-3.el6.i686
安裝 dejavu-fonts-common-2.30-2.el6.noarch~
~
輸出install.log,加上行号
[root@server ~]# cat -n /tmp/install.log
1 安裝fontpackages-filesystem-1.41-1.1.el6.noarch
2 warning:fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signature,key ID c105b9de: NOKEY
3 安裝m17n-db-1.5.5-1.1.el6.noarch
4 安裝liberation-fonts-common-1.05.1.20090721-5.el6.noarch
5
6
7
8
9
10 安裝setup-2.8.14-20.el6_4.1.noarch
11 安裝xkeyboard-config-2.11-1.el6.noarch
12 安裝xml-common-0.6.3-33.el6.noarch
13 安裝iso-codes-3.16-2.el6.noarch
14 安裝filesystem-2.4.30-3.el6.i686
15 安裝dejavu-fonts-common-2.30-2.el6.noarch
過濾掉install.log中的空白行,并标上行号
[root@server ~]# cat -b /tmp/install.log
3 安裝 m17n-db-1.5.5-1.1.el6.noarch
5 安裝setup-2.8.14-20.el6_4.1.noarch
6 安裝xkeyboard-config-2.11-1.el6.noarch
7 安裝xml-common-0.6.3-33.el6.noarch
8 安裝iso-codes-3.16-2.el6.noarch
9 安裝filesystem-2.4.30-3.el6.i686
10 安裝dejavu-fonts-common-2.30-2.el6.noarch
将多個連續的空白行代換為一個,加上行号,空白行不加行号
[root@server ~]# cat -sb /tmp/install.log
10 安裝dejavu-fonts-common-2.30-2.el6.noarch
more
類似cat但是對于有N多行的檔案,具有翻頁的功能,空格鍵向下翻,b回翻;
-num 設定單頁每次輸出多少行;
-s 連續多個空白行代換為1個
+num 從第num行開始顯示
範例
單頁輸出10行;
[root@server ~]#more -10 install.log
安裝fontpackages-filesystem-1.41-1.1.el6.noarch
warning:fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signa
ture, key IDc105b9de: NOKEY
安裝liberation-fonts-common-1.05.1.20090721-5.el6.noarch
安裝setup-2.8.14-20.el6_4.1.noarch
安裝xkeyboard-config-2.11-1.el6.noarch
安裝xml-common-0.6.3-33.el6.noarch
安裝iso-codes-3.16-2.el6.noarch
安裝filesystem-2.4.30-3.el6.i686
--More--(1%)
從第11行開始,到20行結束;
[root@server ~]#more +10 install.log |head -n 10
安裝dejavu-fonts-common-2.30-2.el6.noarch
安裝mozilla-filesystem-1.9-5.1.el6.i686
安裝control-center-filesystem-2.28.1-39.el6.i686
安裝paktype-fonts-common-2.0-8.el6.noarch
安裝mesa-dri-filesystem-10.1.2-2.el6.i686
安裝autocorr-zh-4.0.4.2-14.el6.noarch
安裝autocorr-en-4.0.4.2-14.el6.noarch
安裝tzdata-2014g-1.el6.noarch
安裝tzdata-java-2014g-1.el6.noarch
安裝foomatic-db-filesystem-4.0-7.20091126.el6.noarch
chgrp
change group 顯而易見,變更檔案或目錄的所屬組;
-c 顯示指令執行回報的結果
-v 顯示指令執行過程
-h 隻對連結檔案做修改;
-R 遞歸處理,針對目錄;
建立/tmp/install.log的連結檔案install;更改install.log的所屬組為woon;
[root@server ~]#ln -s /tmp/install.log /tmp/install
[root@server ~]#
[root@server ~]#chgrp -c woon /tmp/install.log
"/tmp/install.log"的所屬組已更改為woon
[root@server ~]#chgrp -v woon /tmp/install.log
更改/tmp目錄下連結檔案的所屬組為woon;
[root@server ~]#chgrp -h woon /tmp/install
[root@server ~]#ll /tmp/
總用量 24
lrwxrwxrwx. 1 root woon 16 1月 24 22:24 install -> /tmp/install.log
-rw-r--r--. 1root woon 495 1月 24 21:58 install.log
drwx------. 2gdm gdm 4096 1月 24 21:38 orbit-gdm
drwx------. 2gdm gdm 4096 1月 24 21:38 pulse-0ts1VFVI1yGH
drwx------. 2root root 4096 1月 24 16:43 pulse-lM4QFZX7jWbv
drwx------. 2root root 4096 1月 22 11:22 virtual-root.G7TKY9
drwx------. 2root root 4096 1月 24 16:06 virtual-root.yb3tU4
chown
Change owner
使用權限為root,Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以将檔案的擁有者加以改變。一般來說,這個指令隻有是由系統管理者(root)所使用,一般使用者沒有權限可以改變别人的檔案擁有者,也沒有權限可以自己的檔案擁有者改設為别人。隻有系統管理者(root)才有這樣的權限。
-c 若該檔案擁有者确實已經更改,那麼顯示更改動作
-h 隻對于連結(link)進行變更
-v 顯示擁有者變更的詳細資料
-R 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更
更改/tmp/install.log的擁有者為woon,并顯示更改動作和詳細資訊
[root@server ~]#chown -v woon install.log
"install.log"的所有者已更改為woon
Chmod
使用權限為root,檔案和目錄的權限管理,包括u、g、o、a三級權限和特殊權限;
Mode 權限設定串,u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示隻有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
# r=4 w=2 x=1
+ 表示增權重限
- 表示取消權限
= 表示設定唯一權限
-c 權限确實更改顯示動作過程
-v 與-c類似,顯示更改的詳細資訊
-f 若該檔案無法更改也不顯示錯誤資訊
-R 遞歸修改
将~/.bashrc 複制到/tmp/woon下,命名為bashrc、.bashrc、bash.rc
對上述三個檔案進行權限操作
[root@server ~]# mkdir /tmp/woon
[root@server ~]# cp ~/.bashrc /tmp/woon/bashrc
[root@server ~]# cp ~/.bashrc /tmp/woon/.bashrc
[root@server ~]# cp ~/.bashrc /tmp/woon/bash.rc
檢視權限
[root@server ~]# ls -al /tmp/woon/
總用量 20
drwxr-xr-x. 2 root root 4096 1月 25 15:06 .
drwxrwxrwt. 11 root root 4096 1月 25 15:04 ..
-rw-r--r--. 1 root root 176 1月 25 15:06 bashrc
-rw-r--r--. 1 root root 176 1月 25 15:06 .bashrc
-rw-r--r--. 1 root root 176 1月 25 15:06 bash.rc
Bashrc目前的權限是644,将其修改為所有具有所有權限
[root@server ~]# chmod 777 /tmp/woon/bashrc
或
[root@server ~]# chmod a+rwx/tmp/woon/bashrc
檔案預設權限
umask
可用來設定[權限掩碼]。[權限掩碼]是由3個八進制的數字所組成,将現有的存取權限減掉權限掩碼後,即可産生建立檔案時預設的權限。
如某目錄umask=0022那麼在該目錄下目錄屬性為755 檔案為644
[root@server woon]# umask 066
[root@server woon]# touch umask
[root@server woon]# mkdir umaskdir
[root@server woon]# ll
總用量 8
-rwxrwxrwx. 1 root root 176 1月 25 15:06 bashrc
-rw-r--r--. 1 root root 176 1月 25 15:06 bash.rc
-rw-------. 1 root root 0 1月 25 15:22 umask
drwx--x--x. 2 root root 4096 1月 25 15:24 umaskdir
檔案特殊權限
Suidsgid sbit
SUID
SUID僅對二進制檔案有效;
執行者對改程式需有執行x權限;
本權限僅在執行過程中有效;
執行者将具有改程式的所有者權限;
SUID對目錄無效
Sgid類似suid使用者群組;
SBID針對目錄
在/tmp下履歷目錄woon,woon屬于群組woon,使用者woon和woonli屬于woon組,要求woon和woonli可以對woon目錄内檔案具有所有權限;且不允許其他人查閱;
準備:
[root@server tmp]# groupadd woon
[root@server tmp]# useradd -g woon woon
[root@server tmp]# useradd -g woon woonli
[root@server tmp]# useradd user1
[root@server tmp]# echo "xlwoon"|passwd --stdin woon
更改使用者 woon 的密碼。
passwd:所有的身份驗證令牌已經成功更新。
[root@server tmp]# echo "xlwoon"|passwd --stdin woonli
更改使用者 woonli 的密碼。
[root@server tmp]# echo "xlwoon"|passwd --stdin user1
更改使用者 user1 的密碼。
[root@server tmp]# id woon
uid=500(woon) gid=500(woon) 組=500(woon)
[root@server tmp]# id user1
uid=502(user1) gid=502(user1) 組=502(user1)
[root@server tmp]# mkdir woon
[root@server tmp]# chgrp woon woon
[root@server tmp]# chmod 775 woon
[root@server tmp]# ll
總用量 28
lrwxrwxrwx. 1 root woon 16 1月 24 22:24 install -> /tmp/install.log
-rw-r--r--. 1 root woon 495 1月 24 21:58 install.log
drwx------. 2 gdm gdm 4096 1月 25 17:33 orbit-gdm
drwx------. 2 gdm gdm 4096 1月 25 17:33 pulse-0ts1VFVI1yGH
drwx------. 2 root root 4096 1月 24 16:43 pulse-lM4QFZX7jWbv
drwx------. 2 root root 4096 1月 22 11:22 virtual-root.G7TKY9
drwx------. 2 root root 4096 1月 24 16:06 virtual-root.yb3tU4
drwxrwxr-x. 2 rootwoon 4096 1月 25 17:59 woon
此時woon和woonli是否可以檢視woon目錄先得所有檔案?
分别用woon、woonli、user1在woon在建立檔案;
[root@server woon]# echo "這是root建立的檔案">rotfile
[woon@server woon]$ echo 這是woon建立的檔案">woonfile
[woonli@server woon]$ echo "這是woonli建立的檔案">woonlifil
[user1@server woon]$ echo "這是user1建立檔案"> user1file
bash: user1file: 權限不夠
總用量 12
-rw-r--r--. 1 root root 26 1月 25 18:21 rotfile
-rw-rw-r--. 1 woon woon 26 1月 25 18:18 woonfile
-rw-r--r--. 1 woonli woon 28 1月 25 18:19 woonlifile
[woon@server woon]$ vi woonfile
這是woon建立的檔案
可以修改嗎?
"woonfile" 2L, 45C 已寫入
可以修改的
[woon@server woon]$ vi woonlifile
這是woonli建立的檔案
keyi xiugai ?
E45: 已設定選項 'readonly' (請加 ! 強制執行)
不能修改;
為什麼?woon目錄已經是woon群組的,且woon群組具有rwx權限,此時就不能滿足woon和woonli對woon目錄下的所有檔案進行修改和編輯,項目也就不能很好配合;
這是就需要用到SGID
[root@server tmp]# chmod g+s woon
然後用woon建立woon1檔案,woonli建立woonli1檔案,再看看
[woonli@server woon]$ ll
-rw-rw-r--. 1 woon woon 0 1月 25 18:30 woon1
-rw-rw-r--. 1 woon woon 45 1月 25 18:24 woonfile
-rw-r--r--. 1 woonli woon 0 1月 25 18:30 woonli1
此時woon就可以對woonli1進行修改和寫入等操作;
檔案的隐藏屬性
Chattr lsattr
Chattr設定檔案的隐藏屬性,
+ 增加某個特殊參數,其他本身參數保持不變
- 删除某一參數,其他參數保持不變;
= 設定參數
A 添加設個屬性時,不會修改atime,可在I/O較慢的機器上進行;
S 一般檔案時異步寫入磁盤,該參數可以同步寫入;
a 設定之後隻能添加資料,不能更改和删除資料;當然root可以取消這個屬性
I 添加該屬性後,檔案不能修改,不能删除,改名等;
s徹底删除
對/tmp/woon下的woonfile添加屬性,使其隻能添加資料
[root@server woon]# chattr +a woonfile
[root@server woon]# rm -rf woonfile
rm: 無法删除"woonfile":不允許的操作
此時對woonfile進行删除一個字元都是不行的,也無法删除;可以用chattr -a woonfile取消設個權限;
cmp
cmp指令可以比較兩個檔案的差異
-l 标示處所有有差異的地方
-c或--print-chars 除了标明差異處的十進制字碼之外,一并顯示該字元所對應字元
[root@server tmp]# cmp -c bashrc bashrcroot
bashrc bashrcroot differ: byte 14, line 3is 123 S 125 U
diff
diff比較兩個檔案的差異,逐行比較
-b 不比較空格字元的不同
-B 不比較空白行
-c 顯示全部内容,标示不同之處
file
file辨識檔案的類型;
參 數:
-b 列出辨識結果時,不顯示檔案名稱。
-c 詳細顯示指令執行過程,便于排錯或分析程式執行的情形。
-f<名稱檔案> 指定名稱檔案,其内容有一個或多個檔案名稱呢感,讓file依序辨識這些檔案,格式為每列一個檔案名稱。
-L 直接顯示符号連接配接所指向的檔案的類别。
-m<魔法數字檔案> 指定魔法數字檔案。
-v 顯示版本資訊。
-z 嘗試去解讀壓縮檔案的内容。
[root@server tmp]# file woon/ bashrc
woon/: setgid directory
bashrc: UTF-8 Unicode text
find
将檔案系統内符合 expression 的檔案列出來。你可以指要檔案的名稱、類别、時間、大小、權限等不同資訊的組合,隻有完全相符的才會被列出來。
參數:
-amin n : 在過去 n 分鐘内被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鐘内被修改過
-cnewerfile :比檔案 file 更新的檔案
-ctime n: 在過去 n 天過修改過的檔案
-name name檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n :檔案大小是 n 機關,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符号連結
s: socket
find .-name "*" -exec grep xxx {} ; -print |morexxx為你想要找的字元串
cut
使用權限:所有使用者
用法:cut -cnum1-num2 filename
說明:顯示每行從開頭算起 num1 到 num2 的文字。 cut由1開始計數
[root@server woon]# cut -c1-10 /etc/passwd |head -n 5
root:x:0:0
bin:x:1:1:
daemon:x:2
adm:x:3:4:
lp:x:4:7:l
ln
使用權限 : 所有使用者
參數 :
-f : 鍊結時先将與 dist 同檔名的檔案删除-d : 允許系統管理者硬鍊結自己的目錄-i : 在删除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,将 dist 視為一般的檔案-s : 進行軟鍊結(symbolic link)-v : 在連結之前顯示其檔名-b : 将在鍊結時會被覆寫或删除的檔案進行備份-S SUFFIX : 将備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
建立硬連結
[root@serverwoon]# ln woonlifile woonlifiles
[root@serverwoon]# ls –al
-rw-r--r--. 2 woonli woon 28 1月 2518:19 woonlifile
-rw-r--r--. 2 woonli woon 28 1月 2518:19 woonlifiles
建立軟連接配接
[root@serverwoon]# ls -al
lrwxrwxrwx. 1 root woon 10 1月 26 21:30 woonlifilesoft -> woonlifile
将檔案 yy 産生一個 symbolic link : zz
less
less[Option] filename
說明:
less 的作用與 more 十分相似,都可以用來浏覽文字檔案的内容,不同的是 less 允許使用者往回卷動以浏覽已經看過的部份,同時因為 less 并未在一開始就讀入整個檔案,是以在遇上大型檔案的開啟時,會比一般的文書編輯器(如 vi)來的快速。
locate
說明: locate 讓使用者可以很快速的搜尋檔案系統内是否有指定的檔案。其方法是先建立一個包括系統内所有檔案名稱及路徑的資料庫,之後當尋找時就隻需查詢這個資料庫,而不必實際深入檔案系統之中了.
在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時隻要用
# locate your_file_name
rmdir
删除空目錄
-p 遞歸删除空目錄
mktemp
建立一個緩存檔案。可以提供給shellscripts使用
-q 執行時若發生錯誤,不會顯示任何資訊。
-u 暫存檔案會在mktemp結束前先行删除。
move
說明:将一個檔案移至另一檔案,或将數個檔案移至另一目錄。或者更名
參數:-i 若目的地已有同名檔案,則先詢問是否覆寫舊檔。
rm
删除目錄或檔案
-i删除前詢問是否删除
-f強制删除
-r遞歸删除
split
将一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案
tee
雙重定向
讀取stdin的資料,并将其内容輸出成檔案。
參數
-a 附件到指定檔案的後面而非是覆寫
touch
touch可以建立新的檔案。touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。
cp
說明:将一個檔案拷貝至另一檔案,或将數個檔案拷貝至另一目錄。
-a 盡可能将檔案狀态、權限等資料都照原狀予以複制。
-r 若 source 中含有目錄名,則将目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在複制前先予以删除再行複制。
whereis
查找檔案
-b 隻查找二進制檔案。
-B<目錄> 隻在設定的目錄下查找二進制檔案。
-f 不顯示檔案名前的路徑名稱。
-m 隻查找說明檔案。
-M<目錄> 隻在設定的目錄下查找說明檔案。
-s 隻查找原始代碼檔案。
-S<目錄> 隻在設定的目錄下查找原始代碼檔案。
-u 查找不包含指定類型的檔案。