2.Linux文件管理類命令

Linux文件管理類命令

  • cp命令:copy 源文件;目標文件;

    單源復制:cp [OPTION]… [-T] SOURCE DEST

    多源復制:cp [OPTION]… SOURCE… DIRECTORY | 
    cp [OPTION]… -t DIRECTORY SOURCE…

    單源復制:cp [OPTION]... [-T] SOURCE DEST
        如果DEST不存在:則事先創建此文件,并復制源文件的數據流至DEST中;
        如果DEST存在:
            如果DEST是非目錄文件:則覆蓋目標文件;
            如果DEST是目錄文件:則先在DEST目錄下創建一個與源文件同名的文件,并復制其數據流;
    
    多源復制:cp [OPTION]... SOURCE... DIRECTORY
                cp [OPTION]... -t DIRECTORY SOURCE...
    
        如果DEST不存在:錯誤;
        如果DEST存在:
            如果DEST是非目錄文件:錯誤;
            如果DEST是目錄文件:分別復制每個文件至目標目錄中,并保持原名;

    常用選項:

        -i:交互式復制,即覆蓋之前提醒用戶確認;
        -f:強制覆蓋目標文件;
        -r, -R:遞歸復制目錄;
        -d:復制符號鏈接文件本身,而非其指向的源文件;
        -a:-dR --preserve=all, archive,用于實現歸檔;
        --preserv=
            mode:權限
            ownership:屬主和屬組
            timestamps: 時間戳
            context:安全標簽
            xattr:擴展屬性
            links:符號鏈接
            all:上述所有屬性

    例:
    1)多源復制

    [root@server1 nac]# cp  -r    mod     log     tmp   
                           遞歸  源文件   源目錄  目的目錄
  • mv命令:move 
    mv [OPTION]… [-T] SOURCE DEST 
    mv [OPTION]… SOURCE… DIRECTORY 
    mv [OPTION]… -t DIRECTORY SOURCE..

    常用選項:

        -i:交互式;  
        -f:force
  • rm命令:remove rm [OPTION]… FILE…

    常用選項:

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

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

參數-f是強制刪除,使用前要注意防止誤刪除,建議少用
建議用單獨的目錄來存放不用的文件,類似Windows的回收站

bash基本特性演示

bash特性之命令行返回值

bash命令執行之后,其狀態返回值保存于bash的特殊變量$?中,可以用命令echo $?來查看對應值 返回值分成兩類:
成功:0
失?。?-255
不同的返回值代表不同的意義

例:
[root@server1 ~]# cat /varr
cat: /varr: No such file or directory
[root@server1 ~]# echo $?
1
[root@server1 ~]# ls /varr  
ls: cannot access /varr: No such file or directory
[root@server1 ~]# echo $?
2
[root@server1 ~]# 
[root@server1 ~]#    
[root@server1 ~]# ls /var
account  cache  db     games   kerberos  local  log   nis  preserve  spool  yp
adm      crash  empty  gopher  lib       lock   mail  opt  run       tmp
[root@server1 ~]# echo $?
0
[root@server1 ~]#

bash特性之命令行展開

~:自動展開為用戶的家目錄,或指定的用戶的家目錄;
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
例如:/tmp/{a,b} 相當于 /tmp/a /tmp/b 
實例可參考“實戰測驗”內容

文件元數據

元數據(metadata)主要指文件的屬性等相關信息,包含權限、大小、時間戳等,通過命令stat看到的信息都是元數據的內容。

  • 元數據內容

    [root@server1 ~]# stat /nac/test
    File: ‘/nac/test’
    Size: 75              Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 104016110   Links: 4
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2016-12-10 05:50:24.307412852 -0500
    Modify: 2016-12-10 05:59:28.702810562 -0500
    Change: 2016-12-10 05:59:28.702810562 -0500
    Birth: -
    [root@server1 ~]#
  • 元數據之時間戳:
    Access time:最近訪問時間
    Modify time:最近修改(數據)時間
    Change time:最近改動(元數據)時間
    Birth time:創建時間 
    修改元數據時間戳:touch
    touch [OPTION]… FILE…
    -c: 指定的文件路徑不存在時不予創建;
    -a: 僅修改access time;
    -m:僅修改modify time;
    -t STAMP ?? [[CC]YY]MMDDhhmm[.ss]

    例:
    以上圖stat /nac/test 的結果為例  
    1)修改access time:  
    [root@server1 ~]# touch -a /nac/test
    [root@server1 ~]# stat /nac/test    
    File: ‘/nac/test’
    Size: 75              Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 104016110   Links: 4
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2016-12-10 23:02:44.430190973 -0500
    Modify: 2016-12-10 05:59:28.702810562 -0500
    Change: 2016-12-10 23:02:44.430190973 -0500
    Birth: -
    [root@server1 ~]#   
    2)修改modify time
    [root@server1 ~]# touch -m /nac/test
    [root@server1 ~]# stat /nac/test    
    File: ‘/nac/test’
    Size: 75              Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d    Inode: 104016110   Links: 4
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2016-12-10 23:02:44.430190973 -0500
    Modify: 2016-12-10 23:05:04.587246017 -0500
    Change: 2016-12-10 23:05:04.587246017 -0500
    Birth: -
    [root@server1 ~]#   
    3)修改至指定時間  
    [root@server1 ~]# touch -a -t 201512011111.11 /etc/test
    [root@server1 ~]# stat /etc/test
    File: ‘/etc/test’
    Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d    Inode: 35731198    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:etc_t:s0
    Access: 2015-12-01 11:11:11.000000000 -0500
    Modify: 2016-12-10 23:06:47.220821768 -0500
    Change: 2016-12-10 23:06:47.220821768 -0500
    Birth: -
    [root@server1 ~]#

注:access time和modify time一旦改變,change time也會跟著改變;但是change time不可直接修改

命令的別名及引用

  • alias 設置命令別名 獲取所有可用別名的定義:
    ~]# alias 定義別名:
    ~]# alias NAME=’COMMAND’

注意:僅對當前shell進程有效
永久保存:/etc/bashrc(全局)、~/.bashrc(個人)文件中保存

撤銷別名:
~]# unalias NAME

例:  
1)查看當前的命令別名  
[root@server1 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@server1 ~]# 
2)設置別名  
[root@server1 ~]# alias Grep='grep -o'
[root@server1 ~]# grep "UUID" /etc/fstab
UUID=c114b923-c522-443a-8a3b-637836838a61 /boot                   xfs     defaults        0 0
[root@server1 ~]# Grep "UUID" /etc/fstab 
UUID
[root@server1 ~]# 
3)取消別名  
[root@server1 ~]# unalias Grep
[root@server1 ~]# 
[root@server1 ~]# Grep "UUID" /etc/fstab
bash: Grep: command not found...
Similar command is: 'grep'
[root@server1 ~]#
  • 命令引用 
    引用指定命令的執行結果:
    $(COMMAND)或`COMMAND` 
    即將$(COMMAND)或`COMMAND` 的執行結果(不是$?代表的狀態)作為前一個命令的參數

    例:
    [root@server1 ~]# echo "time is `date`"
    time is Sat Dec 10 23:27:31 EST 2016
    [root@server1 ~]#     
    
    [root@server1 test]# mkdir "$(date)"
    [root@server1 test]# ll
    total 12
    -rw-r--r--. 1 root root 497 Dec 10 01:03 cut.txt
    drwxr-xr-x. 2 root root  50 Dec 10 00:43 diff.test
    -rw-r--r--. 1 root root 465 Dec 10 04:01 fstab.bak
    -rw-r--r--. 1 root root  28 Dec 10 01:59 IO.out
    drwxr-xr-x. 2 root root   6 Dec 10 23:39 Sat Dec 10 23:39:10 EST 2016
    drwxr-xr-x. 2 root root  20 Dec 10 05:50 vim
    [root@server1 test]#

實戰測驗

1 創建/tmp命令下的ac,ad,bc,b
mkdir /tmp/{a,b}_{c,d}

[root@server1 ~]# mkdir /tmp/{a,b}_{c,d}  
[root@server1 ~]# cd /tmp
[root@server1 tmp]# ll
total 28
drwxr-xr-x.  2 root root         6 Dec 10 08:16 a_c
drwxr-xr-x.  2 root root         6 Dec 10 08:16 a_d
drwxr-xr-x.  2 root root         6 Dec 10 08:16 b_c
drwxr-xr-x.  2 root root         6 Dec 10 08:16 b_d

2 創建/tmp/mylinux目錄下的目錄
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}}

3 顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄
ls -d /var/l*[0-9]*[[:lower:]]

4 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]*[^0-9]

5 顯示/etc目錄下,以非字母開頭,后面跟了一個字母及其它任意長度任意字符的文件或目錄
ls -d /etc/[^[:alpha:]][[:alpha:]]*

6 在/tmp目錄下創建以tfile開頭,后面跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22 
touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

7 復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
cp -r /etc/p*[^0-9] /tmp/mytest1

8 復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
cp -r /etc/*.d /tmp/mytest2

9 復制/etc目錄下所有以1或m或n開頭,以.com結尾的文件至/tmp/mytet3目錄中
cp /etc/[1mn]*.com /tmp/mytest3

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

(0)
N27_jiangyefanN27_jiangyefan
上一篇 2017-07-09 19:54
下一篇 2017-07-10 08:37

相關推薦

  • N25期第二周作業

    1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 ls 列出文件和目錄命令 -a:顯示所有檔案及目錄 -A:顯示除隱藏文件”.”和”..”以外的所有文件 -C:多列顯示結果,默認選項 -l:單列顯示結果,以長格式顯示目錄下的內容列表 -F:在每個輸出項后追加文件的類型標識符 &#822…

    Linux干貨 2016-12-11
  • 輕松實現源碼打包安裝[原創]

    通常我們在Linux/Unix下安裝一平臺時往往需要十幾甚至更多安裝包,這些源碼包來源于網絡、本地硬盤、移動設備。有時碰到網絡不暢通或下載地址失效會帶來很多麻煩,一個好方法便是將常用的軟件包下載到本地硬盤存放。問題是久而久之連自己都不曉得哪些包才是適用的。現用makeself來實現自解壓倒安裝倒是一個很好的解決方案,下面以制作Func客戶端安裝包為例。 一、…

    Linux干貨 2015-03-27
  • Liunx權限的管理

    一、權限 獲取某種資源的能力。對于Liunx而言,一切皆文件。所以,對于Liunx的權限定義,也就是定義文件被不同用戶訪問能力的過程。 權限分為三種:r、w、x 文件 r:查看文件內容 w:修改文件內容 x:可以將文件啟動運行 目錄 r:可以使用ls命令查看目錄中的文件名 w:可以在目錄中創建或刪除文件(能否刪除文件,取決于用戶對目錄的寫權限 x:可以cd到…

    Linux干貨 2015-04-03
  • 一些鮮為人知的編程事實

    我的程序員經歷讓我明白了一些關于軟件開發的事情。下面是一些在編程中可能會讓人感到詫異的事情: 一個程序員用了大約只用了10%-20%的時間來編碼,而且大多數程序員,無論他的水平如何,其平均每天只有10-12行的代碼最終會進入最終的軟件產品中。這是因為,優秀的程序員會花費90%的時間來思考、調查、研究最佳的設計。而糟糕的程序員則會花費90%的時間來調試代碼,并…

    Linux干貨 2016-07-11
  • 在CentOS5,6上破解和加密口令

    在CentOS5,6上:    破解和加密口令:     破解口令方法一: 破解口令方法二:    重啟虛擬機進入救援模式: 備注:生產中不用虛擬機時不要掛載光盤;防止光盤引導破解密碼 加密口令: 編輯配置文件: /etc/grub.conf

    2017-05-16
  • bash特性

    一、命令歷史     概念:shell進程能夠將之前執行過的命令保存記錄下來     存儲位置:         1、命令歷史的文件             使用以下環境變量查看相關參數:     &…

    Linux干貨 2016-09-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-07-13 17:13

    總結的非常好的,下了功夫的,希望您能牢記這些基礎知識,加油?。?!

欧美性久久久久