馬哥教育網絡班21期+第2周課程練習

一、Linux文件管理類命令匯總

1、文件的復制命令:cp

復制命令:cp
    cp [OPTION]... [-T] SOURCE DEST
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
    
    cp SRC DEST               // SRC代表源文件,DEST代表目標文件。
       SRC是文件:
          ①如果目標不存在:新建DEST,并將SRC中內容填充至DEST中;
          ②如果目標存在:
            如果DEST是文件:將SRC中的內容覆蓋至DEST中;
                此時建議為cp命令使用-i選項;(對于管理員來講,是一個命令別名,默認就有-i選項的。但對普通用戶時不具備)
            如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中;
    
    cp SRC... DEST
       SRC...:多個文件
           DEST必須存在,且為目錄,其它情形均會出錯;

    cp SRC DEST
       SRC是目錄:
          此時使用選項:-r
          ①如果DEST不存在:則創建指定目錄,復制SRC目錄中所有文件至DEST中;
          ②如果DEST存在:
        	如果DEST是文件:報錯
        	如果DEST是目錄:
				
    常用選項:
       -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  (強制)

2、文件的移動命令:mv

移動命令:mv
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...  
       
    mv [選項]  源文件   目標文件
    mv [選項]  多個源文件    目標目錄
    mv -r [選項]    源目錄     目標  
     
    常用選項:
        -i: 交互式
       	-f: 強制
       	-r: 遞歸

3、文件的刪除命令:rm

刪除命令:rm
    rm [OPTION]... FILE...
    
    常用選項:
    	-i: 交互式
    	-f: 強制刪除
    	-r: 遞歸

二、練習

1、創建/tmp目錄下的:a_c, a_d, b_c, b_d

[root@localhost ~]# 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'
[root@localhost ~]# tree /tmp/
/tmp/
├── a_c
├── a_d
├── b_c
└── b_d

4 directories, 0 files

  2、創建/tmp/mylinux目錄下的目錄:bin,boot/grub,dev,etc/rc.d/init.d,etc/sysconfig/network-scripts,lib/modules,lib64,proc,sbin,sys,usr/local/bin,usr/local/sbin,var/lock,var/log,var/run,

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


[root@localhost ~]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── proc
├── sbin
├── sys
└── usr
    ├── local
    │   ├── bin
    │   └── sbin
    └── var
        ├── lock
        ├── log
        └── run

23 directories, 0 files

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

1、Bash命令執行狀態返回值:

Bash 命令執行后,會對執行狀態返回一個值。 如果命令執行成功則返回0,如果執行不成功,就會返回一個1—255的數字。

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

命令的執行結果狀態(狀態只有2種,要么成功要么失敗)

               0:成功

               1-255:失敗

[root@localhost ~]# ll /etc/passwd
-rw-r--r--. 1 root root 1438 Jul 26 05:35 /etc/passwd
[root@localhost ~]# echo $?
0
[root@localhost ~]# ll /etc/passwdd
ls: cannot access /etc/passwdd: No such file or directory
[root@localhost ~]# echo $?        
2

2、命令行展開特性:

1、“~”  展開為用戶的家目錄

      使用方法:~username       // 展開為指定的用戶的主目錄

      例如:

[root@localhost ~]# cd ~gentoo
[root@localhost gentoo]# pwd
/home/gentoo

2、使用花括號,里面用逗號分隔的列表,并將其展開為多個路徑

      例如:/tmp/{a,b} = /tmp/a, /tmp/b

[root@localhost ~]# mkdir -p /tmp/{a,b}
[root@localhost ~]# tree /tmp/
/tmp/
├── a
└── b

2 directories, 0 files

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

   文件的元數據包含文件本身的一些屬性信息,如:文件名、文件的各類權限、各類時間戳、鏈接次數等。

   文件包括三個時間戳:atime,mtime,ctime,可以使用touch命令來修改時間戳,用法如下:

文件時間戳管理工具:touch
    文件:metadata, data
	三個時間戳:
	    access time:訪問時間--->簡寫為atime,讀取文件內容
	    modify time: 修改時間--->簡寫為mtime,改變文件內容(數據)
	    change time: 改變時間--->簡寫為ctime,元數據發生改變
查看時間戳命令:stat
[root@localhost ~]# stat /etc/passwd
  File: `/etc/passwd'
  Size: 1438            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d      Inode: 262888      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-28 18:40:01.824678351 -0400
Modify: 2016-07-26 05:35:32.110304187 -0400
Change: 2016-07-26 05:35:32.111304187 -0400
手動指定修改時間戳命令:touch
touch [OPTION]... FILE...
    -a: only atime (指定修改訪問時間)
    -m: only mtime (指定修改修改時間)
    -t STAMP:(自己指明時間戳)
        [[CC]YY]MMDDhhmm[.ss]
    -c: 如果文件不存在,則不予創建

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

命令別名(alias 是一個bash的內建命令)通過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";

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

[root@localhost ~]# ls /var/l*[0-9]*[[:lower:]]

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

[root@localhost ~]# ls /etc/[0-9]*[^[:alpha:]]

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

[root@localhost ~]# ls /etc/[^[:alpha:]][[:alpha:]]*

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

[root@localhost ~]# touch /tmp/tfile-`date +%F-%H-%M-%S`
[root@localhost ~]# ll /tmp/
total 0
-rw-r--r--. 1 root root 0 Jul 29 14:23 tfile-2016-07-29-14-23-12

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

[root@localhost ~]# cp -rf /etc/p*[^[:lower:]] /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1/
passwd-  passwd.OLD  pkcs11  polkit-1

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

[root@localhost ~]# cp -rf /etc/*.d /tmp/mytest2
[root@localhost ~]# ls /tmp/mytest2/
bash_completion.d  event.d       lsb-release.d   popt.d          rc2.d  rc.d           statetab.d
chkconfig.d        init.d        makedev.d       prelink.conf.d  rc3.d  request-key.d  sudoers.d
cron.d             latrace.d     modprobe.d      profile.d       rc4.d  rsyslog.d      xinetd.d
depmod.d           ld.so.conf.d  oddjobd.conf.d  rc0.d           rc5.d  rwtab.d        yum.repos.d
dracut.conf.d      logrotate.d   pam.d           rc1.d           rc6.d  setuptool.d

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

[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3/
[root@localhost ~]# ls /tmp/mytest3
latrace.conf  libaudit.conf  logrotate.conf  mke2fs.conf    nsswitch.conf  numad.conf
ld.so.conf    libuser.conf   ltrace.conf     nfsmount.conf  ntp.conf

原創文章,作者:N21_杭州-Debian,如若轉載,請注明出處:http://www.www58058.com/26559

(0)
N21_杭州-DebianN21_杭州-Debian
上一篇 2016-07-29
下一篇 2016-07-29

相關推薦

  • corosync+pacemaker對mariadb實現高可用

    corosync+pacemaker對mariadb實現高可用 利用nfs共享存儲,導出一個目錄作為mariadb的數據目錄,然后利用corosync+pacemaker對mariadb進行高可用 1、實驗環境 2、實驗前的分析 利用nfs導出目錄作為mariadb的共享目錄,要確保各個mariadb節點對該目錄具有寫權限,也就是要確保nfs服務器上有一個U…

    Linux干貨 2016-11-24
  • N–25期 第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash declare -i sumlogin=0 declare -i sumnologin=0 for i …

    Linux干貨 2017-03-07
  • 十二.Linux博客-2016年8月16日文件查找和壓縮、rpm包管理、while循環、until循環

    格式說明: 操作 概念 命令 說明及舉例 十二.文件查找和壓縮、rpm包管理、yum、while循環、until循環 tar tar -zcvf /testdir/etc.tar.gz /etc/ 備份etc創建etc.tar.gz文件 壓縮為gz格式 顯示過程 tar -jcvf&nbs…

    Linux干貨 2016-08-24
  • Linux基本知識之echo命令詳解

    該博文以CentOS6.8_x86_64系統為基礎,Xshell使用pts/X終端登錄CentOS6.8系統,以root身份登錄系統。 為什么學習echo命令?     echo是一種最常用的與廣泛使用的內置于Linux的bash和C shell的命令,通常用在腳本語言和批處理文件中來在標準輸出或者文件中顯示一行文本或者字符串?!?/p>

    Linux干貨 2016-07-29
  • php-fpm

    1.安裝 mariadb 服務 修改配置文件 2.musql 安全加強 3.安裝 php-fpm php-mysql php-mbstring php-mcrypt 服務 修改配置文件 4.安裝httpd服務 加虛擬主機配置文件 5.測試php網頁 6.安裝myadmin包及測試

    2017-06-07
  • 學習札記:用戶管理,權限管理和ACL歡樂”斗地主”

    補充:touch /etc/nologin 啟動系統維護功能,其他用戶不能登陸,除了管理員,可以自定義內容,在普通用戶登陸的時候可以看到相關維護提示,解除維護模式的話,必須要刪除該文件,另外可以創建/run/nologin達到相同的效果(僅限于CentOS 7), 用戶屬性修改 usermod [OPTION] login -u UID: 新UID -g G…

    Linux干貨 2016-08-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-29 16:07

    寫的很好,排版也很棒,加油

欧美性久久久久