Linux文件查看和管理類命令

1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

      • Linux文件查看和管理類命令
        • 1. cp命令
        • 2. mv命令
        • 3. rm命令
        • 4. install命令
        • 5. stat命令
        • 6. touch命令

1. cp命令

cp – copy files and directories
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…

  • 命令使用描述
    copy操作分為單源復制多源復制兩種。

    • 單源復制
      cp [OPTION]… [-T] SOURCE DEST
      兩種情況:

      • 如果DEST不存在,則實現創建此文件,并復制源文件的數據流至DEST中;
      • 如果DEST存在:
        1) DEST是目錄文件:則現在目錄下創建一個源文件同名文件,并復制其數據流至目標文件。非目錄文件:則覆蓋目標文件;
        2) DEST是非目錄文件:則覆蓋目標文件。
    • 多源復制(目標必須為目錄)
      cp [OPTION]… SOURCE… DIRECTORY
      cp [OPTION]… -t DIRECTORY SOURCE…
      兩種情況:

      • 如果DEST不存在:無法執行
      • 如果DEST存在:
        1) DEST是目錄文件:分別復制每個文件至目標目錄中,并保持原名
        1) DEST是非目錄文件:無法執行
  • 常用選項

-i:–interactive:交互式復制,覆蓋前提醒用戶確認;
-f:–force:強制覆蓋目標文件;
-r,-R:–recursive:遞歸復制目錄;
-d:復制符號鏈接文件本身,而非其指向的源文件;
-a:=-dR,=–preserve=all,archive,用于實現歸檔(完全復制);
–preserve=

mode:權限
ownership:屬主和屬組
timestamp:時間戳
context:安全標簽
xattr:擴展屬性
links:符號鏈接
all:上述所有屬性

  • 舉例
    1. 復制/tmp/cpdir/cptest到/tmp下,并保留其所有屬性
      使用-a或–preserve=all

      • cp -a /tmp/cpdir/cptest /tmp/
        [root@localhost ~]# ll /tmp/cpdir/cptest
        -rw-rw-r--. 1 test1 test1 0 Mar 11 17:00 /tmp/cpdir/cptest
        [root@localhost ~]# cp -a /tmp/cpdir/cptest /tmp
        [root@localhost ~]# ll /tmp/cptest
        -rw-rw-r--. 1 test1 test1 0 Mar 11 17:00 /tmp/cptest
      • cp –preserve=all /tmp/cpdir/cptest /tmp/
        [root@localhost ~]# cp --preserve=all /tmp/cpdir/cptest /tmp/
        [root@localhost ~]# ll /tmp/cptest
        -rw-rw-r--. 1 test1 test1 0 Mar 11 17:00 /tmp/cptest
    2. 復制/tmp/cptest.lnk鏈接文件本身(而非源文件)至/tmp/cpdir/
      使用-d或–preserve=links

      • cp -d /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# ll cptest.lnk
        lrwxrwxrwx. 1 root root 6 Mar 11 17:06 cptest.lnk -> cptest
        [root@localhost tmp]# cp -d /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# ll /tmp/cpdir/cptest.lnk
        lrwxrwxrwx. 1 root root 6 Mar 11 17:07 /tmp/cpdir/cptest.lnk -> cptest
      • cp –preserve=links /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# cp --preserve=links /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# ll cpdir/cptest.lnk
        -rw-r--r--. 1 root root 0 Mar 11 17:11 cpdir/cptest.lnk

        這個命令執行了,但是cptest.lnk顯示是普通文件,而不是鏈接文件,不得其解。

2. mv命令

mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…

  • 常用選項

-i:交互
-f:force強制

  • 舉例
    1. 更改/tmp/mvtest文件名為mvtest1,要求使用交互方式。
      使用-i選項

      • mv -i /tmp/mvtest /tmp/mvtest1
        [root@localhost tmp]# mv -i /tmp/mvtest /tmp/mvtest1
        [root@localhost tmp]# ls mvtest1
        mvtest1

        因為目標文件不存在,所以沒有詢問。
        再次創建一個文件mvtest,將它更名為mvtest1,因為這時mvtest1已經存在,所以出現詢問:
        [root@localhost tmp]# touch mvtest
        [root@localhost tmp]# mv /tmp/mvtest /tmp/mvtest1
        mv: overwrite ‘/tmp/mvtest1’? y

        mv本身是mv -i的alias,所以不用加-i也同樣會詢問。
        [root@localhost tmp]# alias mv
        alias mv='mv -i'
    2. 用/tmp/mvtest2強制覆蓋/tmp/mvtest1。
      使用-f選項

      • mv -f /tmp/mvtest2 /tmp/mvtest1
        [root@localhost tmp]# cat mvtest1 mvtest2
        I am mvtest1
        I am mvtest2
        [root@localhost tmp]# mv -f mvtest2 mvtest1
        [root@localhost tmp]# ls mvtest*
        mvtest1
        [root@localhost tmp]# cat mvtest1
        I am mvtest2

3. rm命令

rm [OPTION]… FILE…

  • 常用選項

-i:interactive
-f:force
-r:recursive

  • 舉例
    1. 強制刪除/tmp/rmdir下的所有文件和子目錄
      使用選項-r(遞歸)和-f(強制)

      • rm -rf /tmp/rmdir
        [root@localhost /]# ls rmdir
        passwd pcp.conf pcp.sh php.ini printcap protocols
        passwd- pcp.env pear.conf pinforc profile
        [root@localhost /]# rm -rf rmdir
        [root@localhost /]# ls rmdir
        ls: cannot access rmdir: No such file or directory
    2. rm在bash中是rm -i的alias
      [root@localhost /]# alias rm
      alias rm='rm -i'

      -i選項的使用都一樣,不做示例。

4. install命令

install – copy files and set attributes
單源復制:
install [OPTION]… [-T] SOURCE DEST
多源復制:
install [OPTION]… SOURCE… DIRECTORY
install [OPTION]… -t DIRECTORY SOURCE…
創建目錄:
install [OPTION]… -d DIRECTORY…

  • 命令使用描述
    install命令類似于cp,但可以復制文件的同時設置目標文件的屬性。
  • 常用選項

-m:–mode=MODE:設定目標文件權限(默認為755)
-o:–owner=OWNER:設定目標文件屬主
-g, –group=GROUP:設定目標文件屬組

  • 舉例
    1. 比如現在復制/etc/vimrc到/tmp/installtest/路徑下,并設置文件的權限為屬主可讀寫可執行、屬組可讀可執行、其他只讀,設置文件屬主為user2,屬組為test1
      • install -m 754 -o user2 -g test1 /etc/vimrc /tmp/installtest
        [root@localhost tmp]# install -m 754 -o user2 -g test1 /etc/vimrc /tmp/installtest
        [root@localhost tmp]# ll installtest/vimrc
        -rwxr-xr--. 1 user2 test1 1982 Mar 17 20:54 installtest/vimrc

        如果不指定-m參數,默認設置文件權限為755:
        [root@localhost installtest]# install -o user2 -g test1 /etc/vimrc /tmp/installtest
        [root@localhost installtest]# ll
        total 4
        -rwxr-xr-x. 1 user2 test1 1982 Mar 17 20:57 vimrc
  • Tips
    1. install命令不能復制目錄。

5. stat命令

stat – display file or file system status
stat [OPTION]… FILE…

  • 命令使用描述
    每一個文件都有兩類數據:元數據和數據本身

    • 元數據
      metadata,使用stat看到的就是元數據。
      元數據描述文件的屬性,如訪問權限、文件擁有者、文件數據塊的分布信息(inode)、時間戳等。
      文件的時間戳信息由三種:

      • atime:access time:訪問時間
      • mtime:modify time:更改時間(數據本身改變)
      • ctime:change time:改動時間(元數據改變),不能手動修改
    • 數據
      data,使用cat等命令查看的是數據。
  • 舉例
    1. 使用stat命令查看/tmp/stattest文件的元數據
      • stat /tmp/stattest
        [root@localhost tmp]# stat stattest
        File: ‘stattest’
        Size: 0 Blocks: 0 IO Block: 4096 regular empty file
        Device: 801h/2049d Inode: 1166347 Links: 1
        Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
        Context: unconfined_u:object_r:user_tmp_t:s0
        Access: 2018-03-17 20:13:40.790174621 +0800
        Modify: 2018-03-17 20:13:40.790174621 +0800
        Change: 2018-03-17 20:13:40.790174621 +0800
        Birth: -

        Access、Modify、Change分別是訪問時間、更改時間和改動時間,因為文件時剛創建的,沒有被訪問、更改和改動,三個時間是一樣的。

6. touch命令

touch
touch – change file timestamps
touch [OPTION]… FILE…
可以改變文件的atime和mtime,無法改變ctime

  • 命令使用描述
    touch命令用來創建文件、修改目錄或文件的時間戳信息。
  • 常用選項

-c:指定的文件路徑不存在時,不予創建;
-a:只更改access time;
-m:只更改modify time;
-t STAMP:更改為指定時間,而不是當前時間

use [[CC]YY]MMDDhhmm[.ss] instead of current time

  • 舉例
    1. 在/tmp下創建一個空文件touchtest
      • touch /tmp/touchtest
        [root@localhost tmp]# touch /tmp/touchtest
        [root@localhost tmp]# ll /tmp/touchtest
        -rw-r--r--. 1 root root 0 Mar 17 20:25 /tmp/touchtest
    2. 分別修改/tmp/touchtest的訪問時間和修改時間為當前時間
      • touch -a /tmp/touchtest
      • touch -m /tmp/touchtest
        [root@localhost tmp]# touch -a touchtest
        [root@localhost tmp]# stat touchtest
        File: ‘touchtest’
        Size: 0 Blocks: 0 IO Block: 4096 regular empty file
        Device: 801h/2049d Inode: 1166348 Links: 1
        Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
        Context: unconfined_u:object_r:user_tmp_t:s0
        Access: 2018-03-17 20:26:29.480238254 +0800
        Modify: 2018-03-17 20:25:02.158231025 +0800
        Change: 2018-03-17 20:26:29.480238254 +0800
        Birth: -

        可以看到訪問時間已被更改,而且,因為修改了訪問時間,相當于對文件做了改動,所以改動時間也隨之更改。
    3. 修改/tmp/touchtest的訪問時間和修改時間為2018-3-10-08:08:08
      • touch -mat 201803100808.08 /tmp/touchtest
        [root@localhost tmp]# touch -mat 201803100808.08 /tmp/touchtest
        [root@localhost tmp]# stat touchtest
        File: ‘touchtest’
        Size: 0 Blocks: 0 IO Block: 4096 regular empty file
        Device: 801h/2049d Inode: 1166348 Links: 1
        Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
        Context: unconfined_u:object_r:user_tmp_t:s0
        Access: 2018-03-10 08:08:08.000000000 +0800
        Modify: 2018-03-10 08:08:08.000000000 +0800
        Change: 2018-03-17 20:30:59.678260621 +0800
        Birth: -

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92595

(0)
GeniusyqcGeniusyqc
上一篇 2018-03-17 21:00
下一篇 2018-03-17 21:11

相關推薦

  • keepalive

    HA Cluster: 集群類型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP SPoF: Single Point of Failure 系統可用性的公式:A=MTBF/(MTBF+MTTR)(0,1), 95%幾個9(指標): 99%, …, 99.999%,99.9999%;99%:…

    Linux干貨 2017-05-22
  • GNU awk

    文本處理三工具:grep, sed, awk grep, egrep, fgrep:文本過濾工具;pattern sed: 行編輯器 模式空間、保持空間 awk:報告生成器,格式化文本輸出;  AWK: Aho, Weinberger, Kernighan –> New AWK, NAWK  GNU awk, gawk&…

    Linux干貨 2015-12-03
  • linux運維

    linux運維大綱,學習路線圖

    Linux干貨 2017-10-21
  • N25 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [jizo@jizo ~]$ who | cut -d" " -f1 | uniq jizo  2、取出最后登錄到當前系統的用戶的相關信息。 [root@jizo ~]# who | tail -l jizo     …

    Linux干貨 2016-12-18
  • ThirdWeek_SecondDay

    Python學習筆記整理

    Linux干貨 2017-10-09
  • Linux系統目錄結構

    root 管理員家目錄home 普通用戶家目錄bin 系統啟動和運行可能會用到的普通命令sbin 管理類命令proc 虛擬文件系統,由內核參數映射而來usr 系統軟件資源存放位置include 存放C/C++頭文件的目錄lib 庫文件lib64 64位系統庫文件tmp 臨時文件目錄boot 引導加載器所需文件,系統所需圖片保存于此etc 配置文件sys 虛擬…

    Linux干貨 2018-03-03
欧美性久久久久