1 檔案分類
在Linux/Unix下, block, char, dir, fifo, file, link, unknown等七種類型
block :塊裝置檔案, 磁盤分區, 軟驅, cd-rom等 b
char: 字元裝置, I/O 以字元為機關, 鍵盤, 列印機等 c
dir: 目錄也是檔案的一種 d
fifo:命名管道 f
file:普通檔案類型 -
link:符号連結, 是指向檔案指針的指針, 類似windows中的快捷方式 l
unknown:未知檔案
drwxr-xr-x. 5 root root 100 8月 10 22:19 disk
第1列:包含該檔案的類型
d 檔案夾(dir)
- 普通檔案(file)
l 連結檔案(link)
b 塊裝置檔案(block)
p 管道檔案(fifo)
c 字元裝置檔案(char)
s 套接口檔案(socket)
檔案類型後面的9位, 每3個為一組, "r"代表可讀, "w"代表可寫, "x"代表可執行
前3位為所屬主(user)的權限, 中間3位為所屬組(group)的權限, 最後3位為其他非本群組使用者(others)的權限
第2列: 表示連結占用的節點(innode), 如果是目錄, 那這個數值與該目錄下是子目錄數量有關。
第3列:表示該檔案的所屬主。
第4列:表示該檔案的所屬組。
第5列:表示該檔案的大小。
第6列、第7列和第8列:表示該檔案最後一次被修改的時間(mtime), 依次為月份、日期以及時間。
第9列:表示檔案名
2、檔案權限
r權限:(可讀權限), 權重值4
w權限:(可寫權限), 權重值2
x權限:(可執行權限), 權重值1
常用的權限代碼:777、755、644, 這些數字都是由(4、2、1拼接而來的), 采用八進制
① 7 = 4 + 2 + 1 = r + w + x = 可讀可寫可執行
② 5 = 4 + 1 = r + x = 可讀可執行
③ 4 = 4 = r = 可讀權限
1 可執行
2 可寫
3 可執行可寫
4 可讀
5 可讀可執行
6 可讀可寫
7 可讀可寫可執行
3、目錄操作(建立目錄與删除目錄)
mkdir指令 建立目錄
選項:
-p:parent的縮寫, 若所要建立目錄的上層目錄目前尚未建立, 則會一并建立上層目錄。
> mkdir -p Application/Admin/Controller
-m:mode的縮寫, 建立目錄時指定目錄權限
> cd Application
> mkdir -m 777 Runtime
rmdir指令:删除目錄
選項:
-p: parent的縮寫, 删除指定目錄後, 若該目錄的上層目錄已變成空目錄, 則将其一并删除。
注意:在Linux中使用rmdir指令删除檔案夾時必須保證其内部沒有子檔案或子檔案夾, 否則無法删除, 即使用rmdir -p也不能删除,
因為rmdir指令隻能删除目錄, 不能删除檔案, 如果要删除有子檔案的目錄可以使用rm -r指令删除含有子檔案的目錄(謹慎操作)
5、檔案操作(建立檔案與删除檔案)
建立檔案
方法一:使用vim指令(vim代表建立并打開), 如果檔案未儲存, 則該檔案不存在。
方法二:使用touch指令(touch代表隻建立檔案但不打開)
删除檔案(強烈推薦)
rm指令 删除檔案
-r:recursive的縮寫 遞歸處理, 将指定目錄下的所有檔案及子目錄一并處理。
> rm -r Applicatin
輸入y(或yes)或n(no)來确定或取消
注意:執行rm指令可删除檔案, 如欲删除目錄必須加上參數"-r", 否則預設僅會删除檔案。
-f:force的縮寫 删除時不彈出确認提示
> rm -rf Application
6、複制與剪切(重命名)操作
cp指令
cp [參數] <源檔案路徑> <目标檔案路徑>:複制檔案到目标路徑
-r(或-R):recursive的縮寫, 遞歸處理, 将指定目錄下的所有檔案與子目錄一并處理。
-p(小寫):preserve的縮寫, 複制時保持檔案的原有權限
-v:顯示複制進度(進度條)
> cp file1 dir1
mv指令
mv [參數] [源檔案或目錄] <目标檔案或目錄>:剪切檔案到目标路徑
-v:顯示剪切進度(進度條)
> mv dir1/dir2 dir3/dir4 //dir2移動到dir4目錄下, 并改名字為原名
> mv dir1/dir2 dir3/dir4 //dir2移動到dir4目錄下, 并改名字為原名
mv除了可以剪切還可以重命名檔案, 基本文法:
> mv oldFileName newFileName
如何判斷是重命名還是移動檔案
隻在目前目錄下操作, 則是重命名;
在不同的目錄下操作, 則是移動檔案;
7、檔案統計
wc [參數] <檔案清單>
-c:character縮寫, 統計檔案中一共有多少個字元
-l:line縮寫, 統計檔案中一共有多少行
-w:word縮寫, 統計檔案中一共有多少個單詞
> wc filename //檢視檔案行數
7 8 70 test.txt
行數 單詞數 位元組數 檔案名
8、grep搜尋比對行
grep [參數] <'字元串'> <源檔案>
-n:顯示所有比對到的關鍵詞所在行号
> grep -n mysql install.log
-c:統計一共有多少個比對的行
> grep -c mysql install.log
-i:ignore縮寫, 比對關鍵詞時忽略大小寫
> grep -ci mysql install.log
9、顯示檔案内容
cat正序顯示檔案所有内容
-n 由1開始對所有輸出的行數編号
> cat user.txt
> cat -n 2 user.txt
tac倒序顯示檔案的所有内容
-n 由1開始對所有輸出的行數編号
> tac user.txt
> tac -n 2 user.txt
10、更改檔案權限
chmod:更改檔案權限
chmod 使用者名 檔案名
-R :遞歸(隻能是大寫的) recursive縮寫
> chmod -R 777 oa
u 表示檔案擁有者
g 表示檔案所屬的使用者組
o 表示其他使用者
a a = u+g+o
+ 增權重限
- 減少權限
= 設定權限
r 可讀取
w 可寫入
x 可執行
-R 遞歸修改
chmod u+r a.txt # 所屬使用者增加可讀權限
chmod u-r a.txt # 所屬使用者減少可讀權限
chmod u=r a.txt # 所屬使用者設定可讀權限
chmod a+r a.txt # 給所有人增加可讀權限
chmod u+x,g+w a.txt # 同時修改多個權限
chmod ug+x a.txt # 同時修改多個權限
chmod 777 a.txt # 給所有人增加讀、寫、執行權限
chmod -R 777 目錄 # 修改目錄及目錄下所有檔案的權限
chown:更改檔案的擁有者
-R :遞歸(隻能是大寫的)
> chmod -R xutao oa
chgrp:更改檔案的所屬組
-R :遞歸(隻能是大寫的)
> chmod -R xutao oa
11、建立軟連結(快捷方式)
基本文法:
ln -s <源檔案或目錄> <目标檔案或目錄>
特别注意:軟連結的建立器源檔案與目标檔案的路徑必須是全路徑(從根路徑開始), 如果為目前路徑下的檔案指定軟連接配接, 則不必寫全路徑。
> cd /home
> ln -s data.txt /home/data.txt
指令: umask
上邊也提到了預設情況下, 目錄權限值為755, 普通檔案權限值為644, 那麼這個值是由誰規定呢? 追究其原因就涉及到了 'umask'.
umask文法: umask xxx (這裡的xxx代表三個數字)
檢視umask值隻要輸入 ‘umask’ 然後回車。
> # umask
0022
umask預設是0022, 其代表什麼含義? 先看一下下面的規則:
1) 若使用者建立為普通檔案, 則預設 '沒有可執行權限', 隻有'rw'兩個權限。最大為666 ('-rw-rw-rw-').
2) 若使用者建立為目錄, 則預設所有權限均開放, 即777 ('drwxrwxrwx').
umask數值代表的含義為, 上邊兩條規則中的預設值(檔案為666,目錄為777)需要減掉的權限。是以目錄的權限為 'rwxrwxrwx' - '----w--w-' = 'rwxr-xr-x',
普通檔案的權限為 'rw-rw-rw-' - '----w--w-' = 'rw-r--r--'.
umask的值是可以自定義的, 比如設定umask 為 002, 你再建立目錄或者檔案時,
預設權限分别為 'rwxrwxrwx' - '-------w-' = 'rwxrwxr-x' 和 'rw-rw-rw-' - '-------w-' = 'rw-rw-r--'.
[root@localhost ~]# umask 002
[root@localhost ~]# mkdir test2
[root@localhost ~]# ls -ld test2
drwxrwxr-x 2 root root 4096 5月 10 09:44 test2
[root@localhost ~]# touch test3
[root@localhost ~]# ls -l test3
-rw-rw-r-- 1 root root 0 5月 10 09:45 test3
可以看到建立的目錄權限預設變為775, 而檔案預設權限變為664. 然後再把umask改回來。
[root@localhost ~]# umask 022
[root@localhost ~]# touch test4
[root@localhost ~]# ls -l test4
-rw-r--r-- 1 root root 0 5月 10 09:45 test4
umask 可以在 /etc/bashrc 裡面更改, 預設情況下, root的umask為022, 而一般使用者則為002, 因為可寫的權限非常重要, 是以預設會去掉寫權限。
遞歸修改目錄權限為755, 檔案權限為644
1.修改所有者:
> # chown -R root.root path(遞歸修改指定路徑的所有檔案為root使用者組所有)
2.修改目錄權限:
> # find path -type d -exec chmod 755 {} \;
3.修改檔案權限:
> # find path -type f -exec chmod 644 {} \;