Linux運維:文件目錄管理

基礎中的基礎,趁着面試前複習過一遍。

基礎命令

基本命令

pwd命令
做用:顯示當前工做目錄的名稱
選項:-p 顯示連接的真實路徑node

cd命令
做用:切換當前工做目錄
經常使用:mysql

  • cd 切換到根目錄
  • cd - 返回到前一個工做目錄
  • cd .. 切換工做目錄到當前目錄的上一級目錄
  • cd /usr/local 切換工做目錄到/usr/local

ls命令
做用:顯示目錄與文件信息
經常使用選項:linux

  • -a 顯示全部文件,包括以.開頭的隱藏文件
  • -h 人性化顯示容量信息
  • -l 長格式顯示文檔的詳細信息
  • -u 顯示文件或目錄最後被訪問的時間
  • -t 以修改時間排序,ls默認按文件名稱排序
  • -R 遞歸顯示子目錄

touch命令
做用:建立文件或者修改文件時間
如:$ touch hello.txt
若是hello.txt文件不存在,則建立文件,若是存在,則修改hello.txt全部的時間爲當前系統的時間。git

mkdir命令
做用:建立目錄
選項:-p 建立多級目錄
如:$ mkdir -p /tmp/data/mysql
假如/tmp/data目錄不存在,就會自動建立/data目錄再建立mysql目錄。面試

cp命令
做用:複製文件或者目錄
選項:sql

  • -r 遞歸,複製子文件與子目錄(複製目錄必加)
  • -a 複製時保留源文檔的全部屬性

rm命令
做用:刪除文件或者目錄
選項:shell

  • -f 不提示,強制刪除
  • -i 刪除前,提示是否刪除
  • -r 遞歸刪除,刪除目錄以及目錄下的全部內容

需謹慎:rm -rf *bash

mv命令
做用:移動或者重命名文件或目錄
如:app

  • 重命名文件$ mv hello.txt hello.doc
  • 移動文件到指定目錄$ mv hello.txt /usr/local/src
  • 移動文件到指定目錄並更名$ mv hello.txt /usr/local/src/hello.doc

du命令
做用:計算文件或目錄的大小(容量)
選項:less

  • -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下文件的權限通常包括可執行三種控制,可用字母或者數字表示。

  • 字母表示爲爲rwx
  • 數字表示爲421

也就是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
# 全部者與所屬組已改變

umask

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             #刪除源文件後依舊可用
先這樣吧。若是錯誤,請指正,謝謝。溜了溜了,玩會遊戲去了。2019-3-6
相關文章
相關標籤/搜索