這篇文章帶給大家的內容是關於Linux檔案與目錄管理的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
基礎指令
基本指令
pwd指令
作用:顯示目前工作目錄的名稱
選項:-p 顯示連結的真實路徑
cd指令
作用:切換目前工作目錄
常用:
cd 切換到根目錄cd - 回到前一個工作目錄cd .. 切換工作目錄到目前目錄的上一層目錄cd /usr/local 切換工作目錄到/usr/local
ls指令
作用:顯示目錄與檔案資訊
常用選項:
#-a 顯示所有文件,包括以.開頭的隱藏文件-h 人性化顯示容量資訊-l 長格式顯示文件的詳細資訊-u 顯示文件或目錄最後被訪問的時間-t 以修改時間排序,ls默認依檔案名稱排序-R 遞迴顯示子目錄
touch指令
作用:建立檔案或修改檔案時間
如:$ touch hello.txt
如果hello.txt檔案不存在,則建立文件,如果存在,則修改hello.txt所有的時間為目前系統的時間。
mkdir指令
作用:建立目錄
選項:-p 建立多層目錄
如:$ mkdir -p /tmp/data/mysql
假如/tmp/data目錄不存在,就會自動建立/data目錄再建立mysql目錄。
cp指令
作用:複製檔案或目錄
選項:
-r 遞歸,複製子檔案與子目錄(複製目錄必加)-a 複製時保留來源文件的所有屬性
rm指令
作用:刪除檔案或目錄
選項:
-f 不提示,強制刪除-i 刪除前,提示是否刪除-r 遞歸刪除,刪除目錄以及目錄下的所有內容
需謹慎:rm -rf *
mv指令
作用:移動或重新命名檔案或目錄
如:
重新命名檔案$ mv hello.txt hello.doc移動檔案到指定目錄$ mv hello.txt /usr/local/src移動檔案到指定目錄並改名$ mv hello.txt /usr/local/src/ hello.doc
du指令
作用:計算檔案或目錄的大小(容量)
選項:
-h 人性化顯示容量資訊-a 查看所有目錄以及文件的容量資訊-s 僅顯示總容量
檢視檔案內容指令
cat指令
作用:檢視檔案內容
選項:
#-b 顯示行號,空白行不顯示行號-n 顯示行號,包含空白行
範例:
[root@moli_linux1 ~]$ cat -b hello.txt 1 one:hello world 2 two:hello world [root@moli_linux1 ~]$ cat -n hello.txt 1 one:hello world 2 3 two:hello world
tac指令
作用:倒序檢視檔案內容(與cat相反)
[root@moli_linux1 ~]$ tac hello.txt two:hello world one:hello world
head指令
作用:查看檔案頭部內容,預設顯示前10行。
選項:
-c nK 顯示檔案前nKB的內容-n 顯示檔案前n行內容
範例:head -5 /etc/passwd 顯示/etc/passwd檔案前5行內容。
tail指令
作用:查看檔案尾部內容,預設顯示結尾10行。
選項:
-c nK 顯示檔案前nKB的內容-n 顯示檔案前n行內容
範例:tail -5 /etc/passwd 顯示/etc/passwd檔案後5行內容。
less指令
作用:分頁查看檔案內容
說明:按空白鍵查看下一頁,q鍵退出查看,ctrl b向上翻頁,ctrl f向下翻頁,g跳到第一行,G跳到最後一行。
範例:less /var/log/jenkins/jenkins.log
more指令
作用:分頁檢視檔案內容
說明:按空白鍵查看下一頁,q鍵退出檢視,ctrl b向上翻頁,ctrl f向下翻頁
範例:`more /var/log/jenkins/jenkins.log
`
wc指令
作用:顯示檔案行,單字與位元組統計資訊
選項:
-c 顯示檔案位元組統計資料-l 顯示檔案行數統計資料-w 顯示檔案單字統計資料
範例:
[root@moli_linux1 ~]$ wc hello.txt 3 4 33 hello.txt [root@moli_linux1 ~]$ wc -c hello.txt 33 hello.txt [root@moli_linux1 ~]$ wc -l hello.txt 3 hello.txt [root@moli_linux1 ~]$ wc -w hello.txt 4 hello.txt
權限管理
Linux下檔案的權限一般包括讀取、寫入、可執行三種控制,可用字母或數字表示。
字母表示為r、w、x數字表示為4、2、1
也就是r=4,w=2,x=1。
我們可以使用ls -l指令來檢視檔案或目錄的權限。
[root@moli_linux1 ~]$ ls -l 总用量 8 drwxr-xr-x. 3 root root 23 6月 6 2018 192.168.229 -rw-------. 1 root root 1538 5月 19 2018 anaconda-ks.cfg drwxr-xr-x. 3 root root 18 7月 27 2018 git_data -rw-r--r-- 1 root root 33 3月 5 13:37 hello.txt drwxr-xr-x. 4 root root 33 7月 4 2018 server drwxr-xr-x 4 root root 68 10月 2 15:48 shell-100 drwxr-xr-x 4 root root 67 11月 16 21:29 test-find
其中第一列的第一個字元表示文件類型,之後的9個字元就是權限了,而第一列最後一個字元有的是一個點.,有的沒有,這個點代表這個文件受selinux所限制。
以上面的drwxr-xr-x.為例:
第一個字元是字母d,表示檔案類型是目錄,常見的有:字母l代表連結檔案、字母b或c代表設備、字母s代表socket檔案等。第二個字元到第九個字元代表權限。三位一組分別為所有者(a)權限,所屬群組(g)權限、其他使用者(o)權限。這個檔案的權限為擁有者權限可讀可寫可執行、所屬群組權限為可讀可執行不可寫入、其他使用者權限可執行不可讀不可寫。最後一個字元是點,表示受selinux限制。
关于权限的表示可看下表:
数字 | 字母 | 文件 | 目录 |
---|---|---|---|
4 | r | 查看文件内容 | 查看目录下的文件与目录名称 |
2 | w | 修改文件内容 | 在目录下增、删、改文件与目录名称 |
1 | x | 可执行,一般为程序或者脚本 | 可用cd命令进入目录 |
Linux默认权限
文件默认权限
文件默认最大权限为644 (rw-r--r--)一般会给文件644权限
目录默认权限
目录默认最大权限为755(rwxr-xr-x)一般会给目录755权限
chmod命令
作用:修改文件或者目录的权限
格式:chmod [选项] 权限 文件或目录
选项:-R 递归将权限应用于所有的子目录与子文件
其中权限的表示可用数字或者字母,也可以用a(所有人)、u(代表所有者)、g(所属组)、o(其他用户)。
示例:
环境准备,test目录下有3个文件和1个目录test-1,子目录test-1里有文件hello.txt。各个文件目录权限如下:
[root@moli_linux1 test]$ ll -R .: 总用量 0 -rw-r--r-- 1 root root 0 3月 7 14:43 1.txt -rw-r--r-- 1 root root 0 3月 7 14:43 2.txt -rw-r--r-- 1 root root 0 3月 7 14:43 3.txt drwxr-xr-x 2 root root 23 3月 7 14:44 test-1 ./test-1: 总用量 0 -rw-r--r-- 1 root root 0 3月 7 14:44 hello.txt [root@moli_linux1 test]$ tree . ├── 1.txt ├── 2.txt ├── 3.txt └── test-1 └── hello.txt 1 directory, 4 files
修改1.txt文件的权限为600
$ chmod 600 1.txt 或者 $ chmod u=rwx,g-r,o-r 1.txt
对1.txt文件的所有人权限添加可执行权限
$ chmod a+x 1.txt 或者 $ chmod u+x,g+x,o+x 1.txt
对test目录下的所有文件设置所有人可读可写
$ chmod -R a=rw test
建议:修改权限能用数字就用数字...
chown命令
作用:修改文件或目录的所有者与所属组
格式:chown [选项] [所有者]:[所属组] 文件名/目录名
选项:-R 递归将权限应用于所有子目录与子文件
使用ls -l命令查看文件或目录的时候,第三列和第四列就是文件或目录的所有者与所属组。
[root@moli_linux1 test]$ ls -l 1.txt -rwx------ 1 root root 0 3月 7 14:43 1.txt
比如上面1.txt文件的所有者是root用户,所属组是root组。
修改1.txt文件的所有者为mori,所属组为mail
[root@moli_linux1 test]$ chown mori:mail 1.txt [root@moli_linux1 test]$ ll 1.txt -rwx------ 1 mori mail 0 3月 7 14:43 1.txt # 所有者与所属组已改变
Linux默认权限控制,也就是说umask的作用是设置用户创建文件或者目录时,这个文件或目录的默认权限。
在Linux终端输入umask时,出现数字0022这个就是默认的umask值。
[root@moli_linux1 test]$ umask 0022
修改umask
我们可以通过输入命令$ umask 0032修改系统默认的umask值
[root@moli_linux1 test]$ umask 0032 [root@moli_linux1 test]$ umask 0032
umask反掩码计算
当umask掩码是偶数的时候,默认权限=最大权限-umask值
文件最大权限是666,因此创建文件的默认权限是666-022=644目录最大权限是777,因此创建目录的默认权限是777-022=755
当umask掩码是奇数的时候,计算文件的默认权限的时候,要在奇数位加1
如:umask=032
对于文件:666-032=634,然后奇数位+1,634+010=644对于目录:777-032=745,然后奇数位+1,745+010=755
文件系统权限
设置文件系统权限命令chattr
chattr +a(append) 只能追加chattr +i 无敌,不能进行任何操作
查看文件系统权限命令lsattr
示例:
[root@moli_linux1 test]$ ll 2.txt -rw-r--r-- 1 root root 0 3月 7 14:43 2.txt [root@moli_linux1 test]$ chattr +a 2.txt # 添加隐藏权限 [root@moli_linux1 test]$ echo "hello world" > 2.txt # 不允许重定向 -bash: 2.txt: 不允许的操作 [root@moli_linux1 test]$ echo "hello world" >> 2.txt # 允许追加重定向 [root@moli_linux1 test]$ mv 2.txt helloworld.txt # 不允许移动 mv: 无法将"2.txt" 移动至"helloworld.txt": 不允许的操作 [root@moli_linux1 test]$ rm -f 2.txt # 不允许删除 rm: 无法删除"2.txt": 不允许的操作 [root@moli_linux1 test]$ lsattr 2.txt #查看隐藏权限 -----a---------- 2.txt [root@moli_linux1 test]# chattr -a 2.txt # 去除隐藏权限 [root@moli_linux1 test]$ lsattr 2.txt # 没有隐藏权限 ---------------- 2.txt [root@moli_linux1 test]$ rm -f 2.txt # 再次删除,成功
链接文件
Linux中链接文件分为软连接和硬链接。软连接可以跨分区,但源文件不可删除。硬链接不可以跨分区,但可以将源文件删除。
创建软硬链接使用命令ln
创建软连接:ln -s 文件名 链接名
创建硬链接:ln 文件名 链接名
软连接
软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。
因此软链接的创建与使用没有类似硬链接的诸多限制:
软链接有自己的文件属性及权限等;可对不存在的文件或目录创建软链接;软链接可交叉文件系统;即,可跨分区。软链接可对文件或目录创建;创建软链接时,链接计数 i_nlink 不会增加;删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling
link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
示例:
[root@moli_linux1 ~]$ ln -s /test/hello.txt /tmp/hi.txt #创建文件软连接 [root@moli_linux1 ~]$ ln -s /test/ /var/test #创建目录软连接 [root@moli_linux1 ~]$ rm /test/hello.txt;cat /tmp/hi.txt #删除源文件后,链接无法使用
硬链接
由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
文件有相同的 inode 及 data block;只能对已存在的文件进行创建;不能交叉文件系统进行硬链接的创建;不能对目录进行创建,只可对文件创建;删除一个硬链接文件并不影响其他有相同 inode 号的文件。
示例:
[root@moli_linux1 ~]$ ln /test/hello.txt /tmp/hi.txt #创建文件硬链接 [root@moli_linux1 ~]$ rm /test/hello.txt #删除源文件后依旧可用
以上是Linux檔案與目錄管理的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!