N26 第二周博客作業

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

常用的文件管理工具有: cp mv rm

cp 命令 : copy 的簡寫

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

常用選項:
    -i : 交互式復制
    -f : 強制覆蓋目標文件
    -r,-R : 遞歸復制目錄
    -d : 復制符號鏈接文件本身,而非其指向的源文件
    -a : -dR –preserve=all, archive
    –preserv=
        mode 權限
        ownership 從屬關系
        timestamps 時間戳
        context 安全屬性
        xattr 擴展屬性
        links 符號鏈接
        all 上述所有屬性

示例:
[root@432895f7d850 ~]# ls # 展示當前目錄所包含的一般文件
anaconda-ks.cfg
[root@432895f7d850 ~]# cp anaconda-ks.cfg anaconda-ks-copy.cfg  # 復制一個文件
[root@432895f7d850 ~]# ls # 查看是否復制成功
anaconda-ks-copy.cfg  anaconda-ks.cfg
[root@432895f7d850 ~]# cp anaconda-ks.cfg /tmp/anaconda-ks-copy.cfg # 復制文件到另一個目錄
[root@432895f7d850 ~]# ls /tmp
anaconda-ks-copy.cfg  ks-script-LRoSA2  yum.log
[root@432895f7d850 ~]# cp anaconda-ks.cfg /tmp/ # 復制文件到另一個目錄
[root@432895f7d850 ~]# ls /tmp
anaconda-ks-copy.cfg  anaconda-ks.cfg  ks-script-LRoSA2  yum.log
[root@432895f7d850 ~]# mkdir a
[root@432895f7d850 ~]# cp a b # 復制目錄
cp: omitting directory ‘a’
[root@432895f7d850 ~]# cp -r a b
[root@432895f7d850 ~]# ls # 復制目錄成功
a  anaconda-ks-copy.cfg  anaconda-ks.cfg  b

mv 命令: move (rename) file 移動或重命名文件

語法格式:
    mv [OPTION]… [-T] SOURCE DEST
    mv [OPTION]… SOURCE… DIRECTORY
    mv [OPTION]… -t DIRECTORY SOURCE…

常用選項:
    -i,–interactive 在覆蓋文件時進行提示
    -f,–force 在覆蓋文件時不進行提示
    -n, –no-clobber 不覆蓋一個現存的文件

示例:
    [root@432895f7d850 ~]# ls
    a  anaconda-ks-copy.cfg  anaconda-ks.cfg  b
    [root@432895f7d850 ~]# mv anaconda-ks-copy.cfg anaconda-ks-COPY.cfg # 重命名文件
    [root@432895f7d850 ~]# ls
    a  anaconda-ks-COPY.cfg  anaconda-ks.cfg  b
    [root@432895f7d850 ~]# mv /tmp/yum.log ~/ # 移動文件
    [root@432895f7d850 ~]# ls
    a  anaconda-ks-COPY.cfg  anaconda-ks.cfg  b  yum.log

rm 命令: remove files or directories

語法格式:
    rm [OPTION]… [FILE]…  

常用選項:
    -i : 交互式移除
    -f : 強制移除目標文件
    -r,-R : 遞歸移除目錄

示例:

    [root@432895f7d850 ~]# ls
    a  anaconda-ks-COPY.cfg  anaconda-ks.cfg  b  yum.log
    [root@432895f7d850 ~]# rm anaconda-ks-COPY.cfg # 移除文件
    rm: remove regular file ‘anaconda-ks-COPY.cfg’? y
    [root@432895f7d850 ~]# rm -f yum.log # 強制移除文件
    [root@432895f7d850 ~]# rm -r a # 移除目錄
    rm: remove directory ‘a’? y
    [root@432895f7d850 ~]# rm -rf b # 強制移除目錄
    [root@432895f7d850 ~]# ls

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

bash的工作特性之命令執行狀態返回值

說明:
    bash 通過狀態返回值來輸出此結果: 0 表示成功,其他值(1-255)表示失敗
    命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中;
    命令正常執行時,有的還回有命令返回值,根據命令及其功能不同,結果各不相同;

示例:

    [root@432895f7d850 tmp]# ls
    a_c  a_d  b_c  b_d  mylinux
    [root@432895f7d850 tmp]# echo $?
    0
    [root@432895f7d850 tmp]# useradd lc
    useradd: user ‘lc’ already exists
    [root@432895f7d850 tmp]# echo $?
    9
    [root@432895f7d850 tmp]# lss
    bash: lss: command not found
    [root@432895f7d850 tmp]# echo $?
    127

bash的工作特性之命令行展開

說明:
    在 bash 中,~ 會被自動展開為用戶的家目錄;
    {} 可承載一個以逗號(,)分隔的路徑列表,并能夠將其展開為多個路徑

示例:

    [root@432895f7d850 tmp]# mkdir -pv /tmp/x/{p1/{a,b},/p2}
    mkdir: created directory ‘/tmp/x’
    mkdir: created directory ‘/tmp/x/p1’
    mkdir: created directory ‘/tmp/x/p1/a’
    mkdir: created directory ‘/tmp/x/p1/b’
    mkdir: created directory ‘/tmp/x//p2’
    [root@432895f7d850 tmp]# tree  /tmp/x
    /tmp/x
    |– p1
    |   |– a
    |   -- b<br />
&nbsp;&nbsp;&nbsp;
— p2

    4 directories, 0 files

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

   (1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
   (2)、創建/tmp/mylinux目錄下的:
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

(1) 命令如下

    [root@432895f7d850 tmp]# touch /tmp/{a,b}_{c,d}
    [root@432895f7d850 tmp]# ls # 確認是否創建成功
    a_c  a_d  b_c  b_d

(2)命令如下

    [root@432895f7d850 tmp]# mkdir -p 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}}
    [root@432895f7d850 tmp]# tree -L 3 mylinux/ # 確認是否創建成功
    mylinux/
    |– bin
    |– boot
    |   -- grub<br />
&nbsp;&nbsp;&nbsp; |-- dev<br />
&nbsp;&nbsp;&nbsp; |-- etc<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |-- rc.d<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |&nbsp;&nbsp;
— init.d
    |   -- sysconfig<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
— network-scripts
    |– lib
    |   -- modules<br />
&nbsp;&nbsp;&nbsp; |-- lib64<br />
&nbsp;&nbsp;&nbsp; |-- proc<br />
&nbsp;&nbsp;&nbsp; |-- sbin<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;
— sys
    |– tmp
    |– usr
    |   -- local<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-- bin<br />
&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
— sbin
    -- var<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-- lock<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-- log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
— run

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

文件的元數據包括:

File 文件名,
Size 文件大小,Blocks:數據塊,IO Block:IO 塊
Links 文件鏈接數,Uid 屬主, Gid 屬組
Acess 最近一次訪問文件的時間
Modify 最近一次修改文件的時間
Change 最近一次改變文件的時間

可以使用 stat 命令來查看這些元數據信息。
語法格式是: stat [OPTION]… FILE…
    
可以使用 touch 命令來修改文件的時間戳信息。
語法格式
    touch [OPTION]… FILE…

常用選項
    -c:指定的文件路徑不存在時不予創建
    -a:僅修改access times
    -m:僅修改modify times
    -t STAM:[[CC]YY]MMDDhhmm[.ss]

示例:

    [root@432895f7d850 ~]# stat anaconda-ks.cfg
      File: ‘anaconda-ks.cfg’
      Size: 3354            Blocks: 8          IO Block: 4096   regular file
    Device: fe01h/65025d    Inode: 23068819    Links: 1
    Access: (0600/-rw——-)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-24 11:33:29.008304390 +0000                  
    Modify: 2016-12-14 14:59:34.000000000 +0000                             
    Change: 2017-02-24 11:23:16.131313547 +0000
    Birth: –
    [root@432895f7d850 ~]# touch -a -t 201702272036 anaconda-ks.cfg # 居然也可以定義一個未來的時間?。?br />    [root@432895f7d850 ~]# stat anaconda-ks.cfg
      File: ‘anaconda-ks.cfg’
      Size: 3354            Blocks: 8          IO Block: 4096   regular file
    Device: fe01h/65025d    Inode: 23068819    Links: 1
    Access: (0600/-rw——-)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-27 20:36:00.000000000 +0000
    Modify: 2016-12-14 14:59:34.000000000 +0000
    Change: 2017-02-24 12:37:02.560563384 +0000
     Birth: –

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

  1. 可以使用 alias 來查看、定義一個命令的別名
    —–
    查看別名: alias
    定義別名:alias 別名=‘COMMAND’
    注意:僅對當前的shell有效
    撤銷別名:unalias 別名

    示例:

        [root@432895f7d850 ~]# 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’
        [root@432895f7d850 ~]# alias clc=’clear’
        [root@432895f7d850 ~]# alias | grep clc
        alias clc=’clear’
        [root@432895f7d850 ~]# unalias clc

  2. 要引用另一個命令的結果,可以用 反引號 或者 $() 包裹命令

    示例:

        [root@432895f7d850 ~]# pwd
        /root
        [root@432895f7d850 ~]# ls -al $(pwd)
        total 24
        dr-xr-x—  2 root root  114 Feb 24 11:51 .
        drwxr-xr-x 17 root root  273 Feb 24 11:27 ..
        -rw-r–r–  1 root root   18 Dec 29  2013 .bash_logout
        -rw-r–r–  1 root root  176 Dec 29  2013 .bash_profile
        -rw-r–r–  1 root root  176 Dec 29  2013 .bashrc
        -rw——-  1 root root 3354 Dec 14 14:59 anaconda-ks.cfg

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

所用命令為: ls -dl /var/l*[[:digit:]]*[a-z] 或者 ls -dl /var/l*[0-9]]*[a-z]
演示:

    [root@432895f7d850 var]# touch l2a a3c l33a lll
    [root@432895f7d850 var]# mkdir l22b b33c aaa
    [root@432895f7d850 var]# ls -dl /var/l[[:digit:]][a-z]
    drwxr-xr-x 2 root root 6 Feb 24 13:05 l22b
    -rw-r–r– 1 root root 0 Feb 24 13:05 l2a
    -rw-r–r– 1 root root 0 Feb 24 13:05 l33a

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

所用命令為: ls -dl /etc/[0-9]*[^0-9] 或者 ls -dl /etc/[0-9]*[^[:digit:]]
演示:
    
    [root@432895f7d850 etc]# touch 3a a3 33
    [root@432895f7d850 etc]# mkdir 2a a2 22
    [root@432895f7d850 etc]# ls -dl [0-9]*[^0-9]
    drwxr-xr-x 2 root root 6 Feb 24 13:12 2a
    -rw-r–r– 1 root root 0 Feb 24 13:12 3a

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

所用命令為: ls -dl /etc/[^[:alpha:]][[:alpha:]]*
演示:
    
    [root@432895f7d850 ~]# touch 3a23
    [root@432895f7d850 ~]# mkdir 2a23
    [root@432895f7d850 ~]# ls -dl [^[:alpha:]][[:alpha:]]*
    drwxr-xr-x 2 root root 6 Feb 24 13:12 2a
    drwxr-xr-x 2 root root 6 Feb 24 13:20 2a23
    -rw-r–r– 1 root root 0 Feb 24 13:12 3a
    -rw-r–r– 1 root root 0 Feb 24 13:20 3a23

9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

所用命令為: touch /tmp/tfile-$(date +%F-%H-%M-%S)
演示:
    
    [root@432895f7d850 ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)
    [root@432895f7d850 ~]# ls /tmp/tfile*                    
    /tmp/tfile-2017-02-24-13-27-33

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

所用命令為: cp -r /etc/p*[^0-9] /tmp/mytest1
演示:

    [root@432895f7d850 ~]# mkdir /tmp/mytest1
    [root@432895f7d850 ~]# touch /etc/{pp,p2}
    [root@432895f7d850 ~]# mkdir /etc/{pP,Pp}
    [root@432895f7d850 ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
    [root@432895f7d850 ~]# ls -al /tmp/mytest1/
    total 0
    drwxr-xr-x 3 root root  26 Feb 24 13:32 .
    drwxrwxrwt 8 root root 307 Feb 24 13:32 ..
    drwxr-xr-x 2 root root   6 Feb 24 13:32 pP
    -rw-r–r– 1 root root   0 Feb 24 13:32 pp

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

所用命令為: cp -r /etc/*.d /tmp/mytest2
演示:

    [root@432895f7d850 ~]# mkdir /tmp/mytest2
    [root@432895f7d850 ~]# touch /etc/{2,3}.d
    [root@432895f7d850 ~]# cp -r /etc/*.d /tmp/mytest2
    [root@432895f7d850 ~]# ls -al /tmp/mytest2
    total 4
    drwxr-xr-x 22 root root 4096 Feb 24 13:37 .
    drwxrwxrwt  9 root root  322 Feb 24 13:35 ..
    -rw-r–r–  1 root root    0 Feb 24 13:37 2.d
    -rw-r–r–  1 root root    0 Feb 24 13:37 3.d
    drwxr-xr-x  2 root root   28 Feb 24 13:37 bash_completion.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 binfmt.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 chkconfig.d
    drwxr-xr-x  2 root root   23 Feb 24 13:37 depmod.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 dracut.conf.d
    lrwxrwxrwx  1 root root   11 Feb 24 13:37 init.d -> rc.d/init.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 krb5.conf.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 ld.so.conf.d
    drwxr-xr-x  2 root root   17 Feb 24 13:37 logrotate.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 modprobe.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 modules-load.d
    drwxr-xr-x  2 root root  280 Feb 24 13:37 pam.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 popt.d
    drwxr-xr-x  2 root root   38 Feb 24 13:37 prelink.conf.d
    drwxr-xr-x  2 root root   84 Feb 24 13:37 profile.d
    drwxr-xr-x 10 root root  127 Feb 24 13:37 rc.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc0.d -> rc.d/rc0.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc1.d -> rc.d/rc1.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc2.d -> rc.d/rc2.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc3.d -> rc.d/rc3.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc4.d -> rc.d/rc4.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc5.d -> rc.d/rc5.d
    lrwxrwxrwx  1 root root   10 Feb 24 13:37 rc6.d -> rc.d/rc6.d
    drwxr-xr-x  2 root root   25 Feb 24 13:37 rsyslog.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 sysctl.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 tmpfiles.d
    drwxr-xr-x  2 root root    6 Feb 24 13:37 xinetd.d
    drwxr-xr-x  2 root root  187 Feb 24 13:37 yum.repos.d

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

所用命令為: cp /etc/{l,m,n}*.conf /tmp/mytest3
演示:

    [root@432895f7d850 ~]# touch /etc/m{2,3}.conf
    [root@432895f7d850 ~]# mkdir /tmp/mytest3
    [root@432895f7d850 ~]# cp /etc/{l,m,n}*.conf /tmp/mytest3
    [root@432895f7d850 ~]# ls -al /tmp/mytest3
    total 24
    drwxr-xr-x  2 root root  135 Feb 24 13:40 .
    drwxrwxrwt 10 root root 4096 Feb 24 13:40 ..
    -rw-r–r–  1 root root   28 Feb 24 13:40 ld.so.conf
    -rw-r—–  1 root root  191 Feb 24 13:40 libaudit.conf
    -rw-r–r–  1 root root 2391 Feb 24 13:40 libuser.conf
    -rw-r–r–  1 root root   19 Feb 24 13:40 locale.conf
    -rw-r–r–  1 root root    0 Feb 24 13:40 m2.conf
    -rw-r–r–  1 root root    0 Feb 24 13:40 m3.conf
    -rw-r–r–  1 root root 1742 Feb 24 13:40 nsswitch.conf

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

(0)
FSSlcFSSlc
上一篇 2017-02-24
下一篇 2017-02-24

相關推薦

  • 初學第一篇

    本菜雞出現了。。。 第一次接觸Linux,相對老司機要差遠了,這幾個月的辣眼睛,我就承包了,希望越來越好~~~ ————我是分割線,下面是正文————- 都是講過的東西,不過里面內容都是11手打,作業也自己做后再比對答案 一、–第一天的課程暫時不寫了,…

    Linux干貨 2017-09-02
  • Linux進程與作業1

    Linux進程與作業 操作系統的組成部分:硬件,kernel,lib, 系統調用–>調用kernel lib調用–> 庫調用,kernel調用 運行用戶代碼–>用戶模式–>用戶空間; 運行kernel–>內核模式–>內核空間; 內核的功用:進程管理,文件系統,網絡功能,內存管理,驅動程序,安全功能 C…

    Linux干貨 2016-08-02
  • shell腳本編程初步入門

    shell腳本編程初步入門    說到shell腳本編程,那我們就來先看下shell,shell既是一種命令語言,又是一種程序設計語言。作為命令語言,它交互式地解釋和執行用戶輸入的命令;作為程序設計語言,它定義了各種變量和參數,并提供了許多在高級語言中才具有的控制結構,包括循環和分支。它雖然不是Linux系統內核的一部分,但它調用了系統核…

    Linux干貨 2016-08-15
  • linux文件權限練習(0803)

    1、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作?     不能cd到該目錄,不能ls -l查看目錄下文件的詳細信息      2、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作?…

    Linux干貨 2016-08-04
  • bonding

    boding制作        問題:一個網卡一個IP沒有容錯性     bonding是LINUX中將多網卡綁定虛擬成一塊網卡,實現多網卡共同擁有一個IP,這項技術早在Sun和Cisco中被稱為Trunking和Etherchannel技術。   …

    2017-03-22
  • linux文件系統分類

    1、linux文件系統分配策略: 塊分配(blockallocation)和擴展分配(extentallocation): 塊分配:磁盤上的文件塊根據需要分配給文件,避免了存儲空間的浪費。但當文件擴充時,會造成文件中文件塊的不連續,從而導致過多的磁盤尋道時間。 每一次文件擴展時,塊分配算法就需要寫入文件塊的結構信息,也就是meta-dada。meta-dat…

    Linux干貨 2017-05-02

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-06 19:48

    寫的不錯,請注意排版格式

欧美性久久久久