# Linux運維入門初步—–第二周

標簽(空格分隔): Linux入門 linux 運維

寫作:N27_李偉 2017-7-13
一、 Linux上常用的文件管理命令都有哪些,使用方法
1. 文件類型的分類
文件類型:
普通文件類型
d:目錄文件
b:塊設備
c:字符設備
l:符號鏈接文件
p:管道文件,pipe
s:套接字文件,socket
例如:

[root@loong ~]# ll
總用量 44
-rw-r--r--. 1 root root 26150 7月   9 18:43 install.log

說 明:自左向右:
這是一個普通文件
rw- 文件屬主的權限
r– 文件屬組的權限
r– 其他用戶的權限
1   數字表示被硬鏈接的次數
root 文件的屬主,本例中文件屬主是root
root 文件的屬組,本例中文件屬組是root組
26150 文件的大小,字節數
7月…文件最后一次被修改的時間 
install.log 文件名

 [root@loong ~]# ll /dev
    總用量 0
    brw-rw----. 1 root disk      8,   0 7月  14 07:44 sda
    brw-rw----. 1 root disk      8,   1 7月  14 07:44 sda1
    brw-rw----. 1 root disk      8,   2 7月  14 07:44 sda2

     
說明:自左向右
b:塊設備
rw-:屬主權限,可讀寫。
rw-:屬組權限
—:其他用戶權限
1  :被硬鏈接的次數
root:設備文件屬主
disk:設備文件屬組
8,:設備主設備號,標識設備類型
0  :設備次設備號,標識同類型的不同設備
7月….:設備文件最后修改的時間
sda:設備文件名
2. 目錄管理的命令mkdir,rmdir
    1. mkdir:創建一個目錄
            語法:mkdir [OPTION]… DIRECTORY…
            -p:自動創建路徑上不存在的目錄
            -v:顯示命令的創建過程
            -m:設定權限
            例如:在/tmp目錄下建立mydir目錄并在此目錄下再建立名稱為1的目錄

            

 [root@loong ~]# ls /
 bin  boot  cgroup  data  dev  etc  home  lib lost+found  media  misc  mnt  net  opt  proc  root sbin  selinux  srv  sys  tmp  usr  var
[root@loong ~]# cd /tmp
[root@loong tmp]# ls
yum.log
[root@loong tmp]# mkdir -pv /tmp/mydir/1
mkdir: 已創建目錄 "/tmp/mydir"
mkdir: 已創建目錄 "/tmp/mydir/1"
[root@loong tmp]# ls
mydir  yum.log
[root@loong tmp]# cd mydir
[root@loong mydir]# ls
1

                
    2. rmdir:移除一個目錄。要移除的目錄必須是一個空目錄。
       語法:rmdir [OPTION]… DIRECTORY…
       -p:刪除某一空目錄后如父目錄為空,則一并刪除。有較大風險,盡量不用
       -v:顯示命令的創建過程
       
           例如:刪除上例中建立的目錄
            

[root@loong tmp]# mkdir -pv /tmp/mydit/1
mkdir: 已創建目錄 "/tmp/mydit"
mkdir: 已創建目錄 "/tmp/mydit/1"
[root@loong tmp]# ls /tmp
mydit  yum.log
[root@loong tmp]# ls mydit
1
[root@loong tmp]# rmdir mydit/1  //刪除名為1的目錄
[root@loong tmp]# ls mydit/1
ls: 無法訪問mydit/1: 沒有那個文件或目錄     //目錄已刪除
[root@loong tmp]# rmdir mydit    //刪除mydit目錄
[root@loong tmp]# ls
yum.log
[root@loong tmp]# 

           
3.文件查看命令:
主要有cat,tac,head,tail,more,less命令。其中more,less命令分屏查看。
    1. cat
        將[文件]或標準輸入組合輸出到標準輸出。

        -A, –show-all           等于-vET
        -b, –number-nonblank    對非空輸出行編號
        -e                       等于-vE
        -E, –show-ends          在每行結束處顯示”$”
        -n, –number             對輸出的所有行編號
        -s, –squeeze-blank      不輸出多行空行
        -t                       與-vT 等價
        -T, –show-tabs          將跳格字符顯示為^I
        -u                       (被忽略)
        -v, –show-nonprinting   使用^ 和M- 引用,除了LFD和 TAB 之外
        –help 顯示此幫助信息并退出
        –version 顯示版本信息并退出
    2. tac:
        用法:tac [選項]… [文件]…
        將每個指定文件按行倒置并寫到標準輸出。
        如果不指定文件,或文件為”-“,則從標準輸入讀取數據
    3. head:
        head [選項]… [文件]…
        將每個指定文件的頭10 行顯示到標準輸出。
        如果指定了多于一個文件,在每一段輸出前會給出文件名作為文件頭。
        如果不指定文件,或者文件為”-“,則從標準輸入讀取數據。
        
            > 顯示文件前15行
           

 [root@loong etc]# head -n20 passwd
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 adm:x:3:4:adm:/var/adm:/sbin/nologin
 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 sync:x:5:0:sync:/sbin:/bin/sync
 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 halt:x:7:0:halt:/sbin:/sbin/halt
 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
 operator:x:11:0:operator:/root:/sbin/nologin
 games:x:12:100:games:/usr/games:/sbin/nologin
 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 nobody:x:99:99:Nobody:/:/sbin/nologin
 dbus:x:81:81:System message bus:/:/sbin/nologin
 vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
 rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
 haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
 ntp:x:38:38::/etc/ntp:/sbin/nologin

    4. more 分屏查看命令
    5. less 分屏查看命令。man命令實際上調用less命令來查看幫助手冊
4、文件管理命令cp,rm,mv
cp:copy,復制文件命令
    源文件:—->目標文件
    單源復制:cp [OPTION]… [-T] SOURCE DEST
    如果目標不存在,則創建之并復制源文件的數據流到目標文件。
    如果目標存在:
    1、如果目標文件是非目錄文件則覆蓋目標文件
    2、如果目標文件是目錄文件,則在其下創建源文件同名的文件并復制源方便的數據流到該文件中。
    例如:
     

[root@loong conf]# pwd
 /tmp/conf
[root@loong conf]# ls
mke2fs.conf nsswitch.conf  numad.conf  prelink.conf  request-key.conf  rsyslog.conf nfsmount.conf  ntp.conf  pm-utils-hd-apm-restore.conf  readahead.conf  resolv.conf
[root@loong conf]# cd /tmp/mytest
[root@loong mytest]# ls
ntp1.conf  ntp.conf
[root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/
//拷貝/tmp/conf/numad.conf到/tmp/mytest目錄下
[root@loong mytest]# ls /tmp/
conf/      .ICE-unix/ mytest/    yum.log    
[root@loong mytest]# ls /tmp/mytest
ntp1.conf  ntp.conf  numad.conf      
 //在目標目錄下創建同名文件并拷貝完成)
    [root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/
    cp:是否覆蓋"/tmp/mytest/numad.conf"? y                               //再次拷貝,因為已經存在一個同名文件,提示是否覆蓋
    [root@loong mytest]# 

    多源復制:cp [OPTION]… SOURCE… DIRECTORY
       cp [OPTION]… -t DIRECTORY SOURCE…
       如果DEST不存在:錯誤;
      如果DEST存在:
      如果DEST是非目錄文件:錯誤;
      如果DEST是目錄文件:分別復制每個文件至目標目錄中,并保                 持原名;
      例如:復制/tmp/conf下所有的n*.conf文件到/tmp/mytest下

[root@loong mytest]# cp /tmp/conf/ n*.conf /tmp/mytest1 
cp: 目標"/tmp/mytest1" 不是目錄
//目標mytest1不存在,報錯
[root@loong mytest]# cp /tmp/conf/n*.conf /tmp/mytest
[root@loong mytest]# ls /tmp/mytest
nfsmount.conf  nsswitch.conf  ntp.conf  numad.conf
//多個文件原名復制到目標目錄下
[root@loong mytest]# 

cp命令常用選項:
-i:交互式復制,即覆蓋之前提醒用戶確認;
-f:強制覆蓋目標文件;
-r, -R:遞歸復制目錄;
-d:復制符號鏈接文件本身,而非其指向的源文件;
-a:-dR –preserve=all, archive,用于實現歸檔;

rm命令:
    rm命令:remove
    rm [OPTION]… FILE…

    常用選項:
    -i:interactive 交互式
    -f:force 強制
    -r: recursive,目錄遞歸操作1

    刪除目錄:rm -rf /PATH/TO/DIR
    危險操作:rm -rf /*

注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄;(模擬回收站)

mv命令
    mv命令:move,移動一個文件到指定位置
      mv [OPTION]… [-T] SOURCE DEST
      mv [OPTION]… SOURCE… DIRECTORY
      mv [OPTION]… -t DIRECTORY SOURCE..    

      常用選項:
      -i:交互式;
      -f:force

    
二. bash工作特性之命令執行狀態返回值
  命令執行狀態返回值
  在 Linux 下,不管你是啟動一個桌面程序也好,還是在控制臺下運行命令,所有的程序在結束時,都會返回一個數字值,這個值叫做返回值,或者稱為錯誤號 ( Error Number )。這個值保存在特殊環境變量?中,可以用’echo $?‘查看。

  

 [root@loong ~]# ls /
    bin  boot  cgroup  data  dev  etc  home  lib  lost+found  media        misc  mnt  net  opt  proc  root  sbin  selinux  srv  sys  tmp  usr     var
    [root@loong ~]# echo $?
    0
    [root@loong ~]# 

    
    
返回值是0,表示命令操作成功,反之將返回1~255之間的一個數值。但是’$?‘變量只保存最后一條執行命令的返回值。

程序執行也有返回值,對程序執行結果的返回值可以通過'(command)’或’$(command)’來引用。
例:引用pwd的顯示結果,交由ls命令執行

    

 [root@loong ~]# pwd
 /root
 [root@loong ~]# ls `pwd`
 anaconda-ks.cfg  install.log  install.log.syslog
 [root@loong ~]# ls $pwd
 anaconda-ks.cfg  install.log  install.log.syslog
 [root@loong ~]# 

 

命令行展開
~ 展開為用戶的主目錄,~username展開為指定用戶的家目錄
{}可承載一個以逗號分隔的列表,并展開為多個路徑。
如:/tmp/{a,b}=/tmp/a,/tmp/b
    /tmp/{a,b}/h=/tmp/a/h,/tmp/b/h

練習:
1. 創建/tmp目錄下a_c,a_d,b_c,b_d
    
    
    

 [root@loong ~]# ls /tmp
 conf  yum.log
 [root@loong ~]# mkdir /tmp/{a,b}_{c,d}
 [root@loong ~]# ls /tmp
 a_c  a_d  b_c  b_d  conf  yum.log

    
    
2. 創建/tmp/mylinux/下的如下目錄

        /tmp/mylinux
            ├── bin
            ├── boot
            │   └── grub
            ├── dev
            ├── etc
            │   ├── rc.d
            │   │   └── init.d
            │   └── sysconfig
            │       └── network-scripts
            ├── lib
            │   └── modules
            ├── lib64
            ├── proc
            ├── sbin
            ├── sys
            ├── tmp
            ├── usr
            │   └── local
            │       ├── bin
            │       └── sbin
            └── var
                ├── lock
                ├── log
                └── run
                
執行過程:-p表示如父目錄不存在,則自動創建之。-v表示顯示創建過程
          tree命令顯示目錄的樹形結構

    

 [root@loong ~]# mkdir -pv  /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
    mkdir: 已創建目錄 "/tmp/mylinux"
    mkdir: 已創建目錄 "/tmp/mylinux/bin"
    mkdir: 已創建目錄 "/tmp/mylinux/boot"
    mkdir: 已創建目錄 "/tmp/mylinux/boot/grub"
    mkdir: 已創建目錄 "/tmp/mylinux/dev"
    mkdir: 已創建目錄 "/tmp/mylinux/etc"
    mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d"
    mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d"
    mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig"
    mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/network-scripts"
    mkdir: 已創建目錄 "/tmp/mylinux/lib"
    mkdir: 已創建目錄 "/tmp/mylinux/lib/modules"
    mkdir: 已創建目錄 "/tmp/mylinux/lib64"
    mkdir: 已創建目錄 "/tmp/mylinux/proc"
    mkdir: 已創建目錄 "/tmp/mylinux/sbin"
    mkdir: 已創建目錄 "/tmp/mylinux/sys"
    mkdir: 已創建目錄 "/tmp/mylinux/tmp"
    mkdir: 已創建目錄 "/tmp/mylinux/usr"
    mkdir: 已創建目錄 "/tmp/mylinux/usr/local"
    mkdir: 已創建目錄 "/tmp/mylinux/usr/local/bin"
    mkdir: 已創建目錄 "/tmp/mylinux/usr/local/sbin"
    mkdir: 已創建目錄 "/tmp/mylinux/var"
    mkdir: 已創建目錄 "/tmp/mylinux/var/lock"
    mkdir: 已創建目錄 "/tmp/mylinux/var/log"
    mkdir: 已創建目錄 "/tmp/mylinux/var/run"
    [root@loong ~]# tree /tmp/mylinux
    /tmp/mylinux
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │       └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │       ├── bin
    │       └── sbin
    └── var
        ├── lock
        ├── log
        └── run

    24 directories, 0 files

文件的元數據信息有哪些,分別表示哪些含義,如何查看

    元數據(Metadata),又稱中介數據、中繼數據,為描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄,為了達到編制目錄的目的,必須在描述并收藏數據的內容或特色,進而達成協助數據檢索的目的。因此,元數據就是數據的數據。任何文件系統中的數據分為數據和元數據。數據指文件中實際存在的數據,元數據指用來描述該文件的系統特征的數據。諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode…)等等。在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置并且得到文件的內容或相關屬性。

文件系統元數據(metadata)的更改都被保存在一份單獨的日志里,當發生系統崩潰時可以根據日志正確地恢復數據。除此之外,日志使系統重新啟動時不必進行文件系統的檢查,從而縮短了恢復時間。
查看元數據的命令是stat
stat [OPTION]… FILE…

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 10:44:44.170998930 +0800   //訪問時間
Modify: 2017-07-19 10:44:44.170998930 +0800   //修改時間,即修改文件內容
Change: 2017-07-19 10:44:44.170998930 +0800  //改變時間,指元數據改變

可以看出獲得的元數據包括了文件名,文件大小的字節數,文件占用的塊數(blocks),文件權限、用戶屬主和屬組信息,以及最后三行的時間戳信息。

修改文件的時間戳信息
使用touch命令來修改時間戳信息
touch [OPTION]… FILE…
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]

例:直接touch filename,將文件的時間戳修改為當前時間。會修改所有的三個時間戳。

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-05 11:30:10.000000000 +0800
Modify: 2017-07-19 10:44:44.170998930 +0800
Change: 2017-07-19 11:37:05.144985181 +0800
[root@loong tmp]# touch numad.conf
[root@loong tmp]# stat numad.conf 
  File: "numad.conf"
  Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 14:38:31.574996407 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:38:31.574996407 +0800

例:使用-a選項,僅修改atime,并指定時間為2017-6-21 15:22:05

[root@loong tmp]# touch -a -t 201706211522.05 numad.conf 
[root@loong tmp]# stat numad.conf 
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-06-21 15:22:05.000000000 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:45:09.950992896 +0800

原創文章,作者:N27_loong,如若轉載,請注明出處:http://www.www58058.com/81788

(0)
N27_loongN27_loong
上一篇 2017-07-19
下一篇 2017-07-20

相關推薦

  • 馬哥教育網絡班22期+第二周課程練習

    week2作業: 1.linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 (1)touch 功能:創建文件 示例:  [root@director1 example]# touch file1 file2 [root@director1 example]# ll to…

    Linux干貨 2016-08-22
  • Linux 用戶、用戶組及權限管理

    一、Linux用戶及用戶組的基本概念 用戶:用戶是實現能夠將有限的資源在多個使用者之間進行分配;、 用戶組:用戶組是指多個用戶的集合,方便對一類需要同樣權限的用戶授權 Linux是多用戶、多任務的操作系統。     多用戶指:多人同時使用系統資源;多任務:同時運行多個進程 二、用戶及用戶組類別 1、用戶:名稱解析庫 /…

    Linux干貨 2016-03-20
  • Linux基礎學習總結(二)

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 常用基礎命令:cd、pwd、mkdir、touch 查看:cat,more,less,tail,head,tac 復制:cp 移動:mv 刪除:rm 創建:touch 元數據屬性:stat 查看內容類型:file 二、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及…

    Linux干貨 2016-09-24
  • DNS服務器—-主從服務器搭建

    一、環境準備   1、準備三臺測試       主DNS服務器地址:192.168.10.203       從DNS服務器地址:192.168.10.103       測試主機地址:  192.168.10.120 …

    Linux干貨 2015-05-18
  • 馬哥教育網絡班25期+第一周課程練習

    一、計算機的組成及功能     現代計算機的結構:馮諾依曼結構體系(儲存程序,順序執行),由20世紀30年代中期,美國科學家馮·諾依曼提出     馮.諾依曼結構處理器具有以下幾個特點:     1:必須有一個存儲器;2:必須有一個控制器;3:必須有一個運算器…

    Linux干貨 2016-11-28
  • MAN手冊各章節功能

         1.普通命令     2.系統調用 (方便查到調用的函數,需加的頭文件)     3.庫函數     4.特殊文件 例:/dev下的各種設備文件     5.文件的格式    &n…

    Linux干貨 2016-10-18

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-07-26 23:55

    總結的不錯,相較于上一篇來說,注釋部分使用了’//’,可見是思考之后的,繼續加油~

欧美性久久久久