馬哥教育網絡班21期-第二周課程練習

1.Linux上的文件管理命令有哪些,其常用的使用方法及其相關事例演示

cp命令

cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。它可以將單個源文件復制成一個指定文件名的具體文件或一個已經存在的目錄下。cp命令還支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。 cp SRC DEST SRC是文件: 如果目標不存在:新建DEST,并將SRC中內容填充至DEST中; 如果目錄存在: 如果DEST是文件:將SRC中的內容覆蓋至DEST中; 此時建議為cp命令使用-i選項; 如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中;

    cp SRC... DEST
        SRC...:多個文件
            DEST必須存在,且為目錄,其它情形均會出錯;

    cp SRC DEST
        SRC是目錄:
            此時使用選項:-r

            如果DEST不存在:則創建指定目錄,復制SRC目錄中所有文件至DEST中;
            如果DEST存在:
                如果DEST是文件:報錯
                如果DEST是目錄:

語法

cp (選項) (參數)

選項

    -i:交互式
    -r, -R: 遞歸復制目錄及內部的所有內容;
    -a: 歸檔,相當于-dR --preserv=all
        -d:--no-dereference --preserv=links
        --preserv[=ATTR_LIST]
            mode: 權限
            ownership: 屬主屬組
            timestamp: 
            links
            xattr
            context
            all
    -p: --preserv=mode,ownership,timestamp
    -v: --verbose
    -f: --force

參數

  • SRC 源文件

  • DEST 目標文件

實例

/etc/fstab復制到/root/Desktop,且目標文件已存在
[root@hadoop Desktop]# cp  /etc/fstab ./
cp: overwrite `./fstab'?
/root/Desktop/repo目錄下的所有文件復制到/root/Desktop/test目錄下,且目標文件目錄不存在
[root@hadoop Desktop]# ls
fstab  passwd  repo  scripts
[root@hadoop Desktop]# cp -r ./repo/ ./test/
[root@hadoop Desktop]# ls
fstab  passwd  repo  scripts  test
/root/Desktop下的文件fstabpasswd復制到/root/Desktop/test
[root@hadoop Desktop]# cp passwd fstab ./test
/root/Desktop/fstab復制為cptest
[root@hadoop Desktop]# cp fstab cptest
/root/Desktop/test下的所有文件復制到/root/Desktop/test2
[root@hadoop Desktop]# ll ./test/
total 24
-rw-r--r--. 1 root root 1926 Jul 11 19:32 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Jul 11 19:32 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  653 Jul 11 19:32 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Jul 11 19:32 CentOS-Vault.repo
-rw-r--r--. 1 root root  779 Jul 11 19:37 fstab
-rw-r--r--. 1 root root 1660 Jul 11 19:37 passwd
[root@hadoop Desktop]# cp -r -a ./test/ ./test1/
[root@hadoop Desktop]# ll ./test1/
total 24
-rw-r--r--. 1 root root 1926 Jul 11 19:32 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Jul 11 19:32 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  653 Jul 11 19:32 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Jul 11 19:32 CentOS-Vault.repo
-rw-r--r--. 1 root root  779 Jul 11 19:37 fstab
-rw-r--r--. 1 root root 1660 Jul 11 19:37 passwd

mv命令

mv命令用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄。

語法

mv (選項) (參數)

選項

        -i: 交互式
        -f: 強制

參數

  • SRC 源文件

  • DEST 目標文件

實例

/root/Desktop/fstab改名為mvtest
[root@hadoop Desktop]# mv -i fstab mvtest
/root/Desktop/test1移到./test2
[root@hadoop Desktop]# mv ./test1/ ./test2/

rm命令

rm命令可以刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。

語法

rm (選項)(參數)

選項

        -i: 交互式
        -f: 強制刪除
        -r: 遞歸

實例

刪除/root/Desktop/目錄下的fstab和'passwd'
[root@hadoop Desktop]# rm -i ./fstab passwd
rm: remove regular file `./fstab'? y
rm: remove regular file `passwd'? y
刪除/root/Desktop/test2下的所有文件
[root@hadoop Desktop]# rm -rf ./test2

2.bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其演示實例

命令的執行結果狀態

    成功
    失敗

bash使用特殊變量$?保存最近一條命令的執行狀態結果:

        0:成功
        1-255:失敗

實例

[root@hadoop Desktop]# ls
cptest  repo  scripts  test
[root@hadoop Desktop]# echo $?
0
[root@hadoop Desktop]# ls ./aaa
ls: cannot access ./aaa: No such file or directory
[root@hadoop Desktop]# echo $?
2

命令行展開

    ~: 展開為用戶的主目錄
    ~USERNAME:展開為指定用戶的主目錄
    {}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
        /tmp/{a,b} = /tmp/a, /tmp/b
        /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

實例

~展開:
[root@hadoop Desktop]# pwd
/root/Desktop
[root@hadoop Desktop]# cd ~
[root@hadoop ~]# pwd
/root
{}展開:
[root@hadoop ~]# mkdir -pv /tmp/{a,b}
mkdir: created directory `/tmp/a'
mkdir: created directory `/tmp/b'

3.請使用命令行展開功能來完成以下練習:

(1).創建/tmp目錄下的a_c,a_d,b_c,b_d

[root@hadoop ~]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: created directory `/tmp/a_c'
mkdir: created directory `/tmp/a_d'
mkdir: created directory `/tmp/b_c'
mkdir: created directory `/tmp/b_d'

(2).創建/tmp/mylinux目錄下的一系列目錄

[root@hadoop tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc/sbin,sys,tmp,usr/{bin,sbin},var/{lock,log,run}}

[root@hadoop tmp]# 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
│   ├── bin
│   └── sbin
└── var
    ├── lock
    ├── log
    └── run

4.文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息

元數據信息

[root@hadoop Desktop]# ls -l /etc/fstab
-rw-r--r--. 1 root root 779 Feb  1 15:55 /etc/fstab

-rw-r--r--共有10個小段
第一小段代表的文件類型:
    -(f):普通文件
    d:目錄文件
    b:塊設備文件
    c:字符設備
    l:符號連接
    p:管道文件
    s:套接字文件

rw-表示用戶的權限,r--表示所屬組的權限,r--表示其他用戶的權限。
    r:只讀權限
    w:可寫權限
    x:執行權限
之后是文件的屬主、屬組、文件大小以及最后的訪問時間。

時間戳

查看時間戳:stat命令
[root@hadoop Desktop]# stat  /etc/fstab
  File: `/etc/fstab'
  Size: 779         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 390920      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 20:04:45.884000013 +0800
Modify: 2016-02-01 15:55:40.477000176 +0800
Change: 2016-02-01 16:08:05.655000177 +0800


三個時間戳:
access time:訪問時間,簡寫為atime,讀取文件內容
modify time: 修改時間, mtime,改變文件內容(數據)
change time: 改變時間, ctime,元數據發生改變

修改時間戳:touch命令
touch (選項) (參數)
選項:
-a: only atime
-m: only mtime
-t STAMP

[root@hadoop Desktop]# touch -t 1607112004.45 /etc/fstab
[root@hadoop Desktop]# stat  /etc/fstab
  File: `/etc/fstab'
  Size: 779         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 390920      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 20:59:12.348000443 +0800
Modify: 2016-07-11 20:04:45.000000000 +0800
Change: 2016-07-12 20:59:10.128998636 +0800

5.如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果

命令別名(alias)

    通過alias命令實現:
        (1) alias
            顯示當前shell進程所有可用的命令別名;
        (2) alias NAME='VALUE'
            定義別名NAME,其相當于執行命令VALUE;

        注意:在命令行中定義的別名,僅對當前shell進程有效;如果想永久有效,要定義在配置文件中;
            僅對當前用戶:~/.bashrc
            對所有用戶有效:/etc/bashrc 

            Note: 編輯配置給出的新配置不會立即生效;

            bash進程重新讀取配置文件:
                source /path/to/config_file
                .  /path/to/config_file

    撤消別名:unalias
        unalias [-a] name [name ...]

    Note: 如果別名同原命令的名稱,則如果要執行原命令,可使用"\COMMAND";

6.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文檔或目錄

[root@hadoop var]# ls l*[0-9]*[a-z] 
l22e  la2e  lcd234r

l23ass:

lov234e:
[root@hadoop var]# ls l*[[:digit:]]*[[:lower:]]
l22e  la2e  lcd234r

l23ass:

lov234e:

7.顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄

[root@hadoop etc]# ls [[:digit:]]*[^[:digit:]]
1abD:

2abD:

8.顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度任意字符的文件或目錄

[root@hadoop etc]# ls [^[:alpha:]][[:alpha:]]*
1abD:

2abD:

9.在/tmp目錄下創建以tfile開頭,后面當前日期和時間的文件

[root@hadoop tmp]# mkdir tfile-$(date +%F)

10.復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest2目錄中

[root@hadoop tmp]# cp /etc/p*[^0-9]/ /tmp/mytest2/
[root@hadoop tmp]# cp /etc/p*[^0-9] /tmp/mytest2/

11.復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中

[root@hadoop tmp]# cp /etc/*.d /tmp/mytest2

12.復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中

[root@hadoop tmp]# cp /etc/[lmn]*\.conf /tmp/mytest3

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

(0)
JeasonJeason
上一篇 2016-07-16 22:23
下一篇 2016-07-16 22:23

相關推薦

  • Linus Torvalds 語錄 Top 10

    下面是Linux的創始人Linus Torvalds的一些言論,這是我個人認為最有意思的10句。如果你想看更多的Linus Torvalds說過的話,你可以看看他在維基百科上的詞條:Linux Torvalds。我們在下面給出中英文對照,希望你能喜歡。 “Really, I’m not out to dest…

    Linux干貨 2015-04-03
  • 第三周

    第三周 1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@node1 ~]# who -q | sed -n ‘1p’ centos root fedora redhat mint 2.取出最后登錄到當前系統的用戶的相關信息。 [root@node1 ~]# who -a | tail -1 mint +…

    Linux干貨 2017-07-25
  • 生產環境網卡綁定匯總(bonding,team)

    生產環境網卡綁定匯總 1 什么是bonding,team?   1.1 bonding,team簡介    在了解正式的概念之前,我們先從不太專業的角度取解釋這兩個名詞。    所謂bonding就是聯結。以下是來自柯林斯英漢雙解大詞典對于bonding的解釋。    the proces…

    Linux干貨 2017-05-07
  • 網絡服務之Nginx

      在之前一篇博客中我們講述了httpd網絡服務器,那么httpd是個非常穩定安全的一個服務器,這次我們介紹一個新的網絡服務器—-nginx。   Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器(我們主要圍繞這兩…

    2017-06-07
  • N26 第二周作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理類命令有:mkdir rmdir cp mv rmmkdir:創建文件夾命令格式:mkdir [OPTION]… DIRECTORY… # 創建日期文件夾       &…

    Linux干貨 2017-01-17
  • bash 數組和變量

    數組可以把多個變量集合起來,不用再一個個的聲明變量,也可以調多個單個的變量使用,極大方便了我們的使用,而且Linux bash中的數組還支持同一個數組中同時有數字和字符串。下面讓我們來了解一下數組。 一,數組的簡介 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。 數組名和索引 索引:編號從0 開始,屬于數值索引 注意…

    Linux干貨 2016-08-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-17 20:42

    寫的很好,排版也很漂亮,加油。給你提一個問題,如果文件已經存在 ,如何不顯示警告信息,可以直接覆蓋?

欧美性久久久久