N21-第二周博客

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

文件管理命令有復制、刪除與移動:cp,mv,rm

cp(復制檔案或目錄)

[root@study ~]# cp [-adfilprsu] 源(source) 目標(destination)

[root@study ~]# cp [options] source1 source2 source3 …. directory

選項與參數:

-a  :相當于 -dr –preserve=all 的意思,至于 dr 請參考下列說明;(常用)

-d  :若來源文件為鏈接文件的屬性(link file),則復制鏈接文件屬性而非檔案本身;

-f  :為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除后再嘗試一次;

-i  :若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)

-l  :進行硬連結(hard link)的連結檔建立,而非復制檔案本身;

-p  :連同檔案的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用);

-r  :遞歸持續復制,用于目錄的復制行為;(常用)

-s  :復制成為符號鏈接文件 (symbolic link),亦即『快捷方式』檔案;

-u  :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才復制。

–preserve=all :除了 -p 的權限相關參數外,還加入 SELinux 的屬性, links, xattr 等也復制了。

最后需要注意的,如果來源檔有兩個以上,則最后一個目的文件一定要是『目錄』才行!

示例1:

[root@localhost ~]# cp install.log /tmp/
[root@localhost ~]# cp -i install.log /tmp/  #加i選項,覆蓋前會詢問用戶
cp: overwrite `/tmp/install.log'? n
#默認alias里會有cp='cp -i',所以平時可以不用敲-i,默認就有

示例2:復制文件,并對比屬性

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cp /var/log/wtmp . #注意最后的“點”,代表本目錄(/tmp)
[root@localhost tmp]# ll /var/log/wtmp wtmp 
-rw-rw-r--. 1 root utmp 166656 Jul 12 20:18 /var/log/wtmp
-rw-r--r--. 1 root root 166656 Jul 12 20:25 wtmp
#不加任何參數,文件的屬性或者權限可能會改變
#如果要保持原樣,加-a參數
[root@localhost tmp]# cp -a /var/log/wtmp wtmp2
[root@localhost tmp]# ll /var/log/wtmp wtmp2
-rw-rw-r--. 1 root utmp 166656 Jul 12 20:18 /var/log/wtmp
-rw-rw-r--. 1 root utmp 166656 Jul 12 20:18 wtmp2

示例3:復制/etc整個文件夾到/tmp

[root@localhost tmp]# cp /etc /tmp
cp: omitting directory `/etc'
[root@localhost tmp]# cp -r /etc /tmp

rm(移除文件或文件夾)

[root@study ~]# rm [-fir] 檔案或目錄

選項與參數:

-f  :就是 force 的意思,忽略不存在的檔案,不會出現警告訊息;

-i  :互動模式,在刪除前會詢問使用者是否動作

-r  :遞歸刪除!最常用在目錄的刪除!這是非常危險的選項??!!

示例1

[root@localhost tmp]# rm -i install.log #加-i選項會詢問確定刪除?
rm: remove regular file `install.log'? y
#默認alias里會有cp='rm -i',所以平時可以不用敲-i,默認就有

示例2 刪除/tmp/etc

[root@localhost tmp]# rm etc目錄無法直接刪除
rm: cannot remove `etc': Is a directory
[root@localhost tmp]# rm -r etc加上-r選項可以刪除,但是會每個文件都詢問
rm: descend into directory `etc'? y
rm: remove regular file `etc/system-release-cpe'? y
rm: descend into directory `etc/udev'? y
[root@localhost tmp]# rm -rf etc 加上-rf選項,強制刪除

mv(移動文件和文件夾,或者改名)

[root@study ~]# mv [-fiu] source destination

[root@study ~]# mv [options] source1 source2 source3 …. directory

選項與參數:

-f  :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

-i  :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!

-u  :若目標文件已經存在,且 source 比較新,才會更新 (update)


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

    使用echo $? 查看命令執行返回值,為0表示執行成功,非0表示執行失敗

    示例

[root@localhost tmp]# ls
a_c  a_d  b_c  b_d  vmware-root
[root@localhost tmp]# echo $?
0
[root@localhost tmp]# lll
bash: lll: 未找到命令...
[root@localhost tmp]# echo $?
127

    命令行展開示例

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cd ~#切換到家目錄
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd -#切換到上一目錄
/tmp
[root@localhost tmp]# cd -#再切換到上一目錄
/root

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

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

    [root@localhost ~]# cd /tmp
    [root@localhost tmp]# mkdir {a,b}_{c,d}
   [root@localhost tmp]# ls

    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

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

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

[root@localhost ~]# stat install.log   #查看文件元數據
  File: `install.log'文件名
  Size: 9562 #大小           Blocks: 24         IO Block: 4096   regular file  #文件類型
Device: fd00h/64768d    Inode: 131074      Links: 1 #鏈接數
Access: (0644/-rw-r--r--) #訪問權限 Uid: (    0/    root) #屬主  Gid: (    0/    root) #屬組
Access: 2016-07-12 20:19:09.589869445 +0800 atime
Modify: 2016-05-15 07:41:01.961999987 +0800mtime
Change: 2016-05-15 07:41:07.976999985 +0800ctime

修改文件時間戳:touch

touch [OPTION]… FILE…

-a: 僅修改atime

-m: 僅修改mtime

-t STAMP:指定時間

[[CC]YY]MMDDhhmm[.ss]

-c: 如果文件不存,則不予創建

示例1:不加任何參數,默認修改所有時間戳為當前時間

[root@localhost ~]# touch install.log
[root@localhost ~]# stat install.log 
  File: `install.log'
  Size: 9562            Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 131074      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 21:08:23.102867914 +0800
Modify: 2016-07-12 21:08:23.102867914 +0800
Change: 2016-07-12 21:08:23.102867914 +0800

示例2:僅修改atime為當前時間

[root@localhost ~]# touch -a install.log 
[root@localhost ~]# stat install.log    
  File: `install.log'
  Size: 9562            Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 131074      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 21:10:21.632863145 +0800
Modify: 2016-07-12 21:08:23.102867914 +0800
Change: 2016-07-12 21:10:21.632863145 +0800

示例3:僅修改mtime,并指定時間

[root@localhost ~]# touch -mt 201511222122 install.log  
[root@localhost ~]# stat install.log                  
  File: `install.log'
  Size: 9562            Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 131074      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 21:13:08.386863979 +0800
Modify: 2015-11-22 21:22:00.000000000 +0800
Change: 2016-07-12 21:13:13.479864909 +0800

以上示例可以總結出:無論修改atime還是mtime,ctime時間戳都會改變,所以touch命令沒有修改ctime的選項

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

[root@localhost ~]# alias vi='vim'
直接定義命令別名即可,但是僅在當前會話生效。如果想本用戶下次登錄還可以使用,編輯~/.bashrc文件添加別名。


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

find /var -name "1*[0-9]?*[[:lower:]]"

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

find /var -name "[0-9]?*[^0-9]"

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

find /var -name "[^[:alpha:]][[:alpha:]]*"

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

touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

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

cp -r `find /etc -name "p*[^0-9]"` /tmp/mytest1/

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

cp -r `find /etc -name "*\.d"` /tmp/mytest2

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

cp -r `find /etc -name "[l|m|n]*\.conf"` /tmp/mytest3

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

(0)
N21_smileN21_smile
上一篇 2016-07-16 22:28
下一篇 2016-07-16 22:28

相關推薦

  • Centos7上利用corosync+pacemaker+crmsh構建高可用集群

    一、高可用集群框架 資源類型:     primitive(native):表示主資源     group:表示組資源,組資源里包含多個主資源     clone:表示克隆資源     master/…

    Linux干貨 2016-05-29
  • Linux基礎學習總結(六)

    一、創建一個10G分區,并格式為ext4文件系統; 1、要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@blog ~]# fdisk /dev/sdfCommand (m for help): nCommand action e extended p primary partition (1…

    2016-11-06
  • 硬鏈接與軟鏈接的聯系與區別

    硬鏈接與軟鏈接的聯系與區別     文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。元數據中的inode才是…

    Linux干貨 2016-10-20
  • javascript快速入門

    標識符多了一個美元符號python中只有字母和下劃線和數字,數字不能開頭數據類型有number(整形和浮點型),boolean,string,null,undefined(聲明未賦值),symbol(新引入),object類型(基本類型和特殊類型外的其他類型) 引入一個變量要先申明,var a,let b常量類型,聲明時定義,python中不存在const …

    Linux干貨 2018-01-15
  • linux文件目錄詳解

    linux目錄結構   (且看且不看) 歷史上 /usr和 /etc文件夾下既保存靜態文件,也保存可變文件,后來有了/var層次結構,/usr下面的可變文件被轉移到/var下面。因而/usr現在可以只讀的方式掛載(如果它在單獨的文件系統上)。 /etc下的可變文件早已轉移到/var,因為技術上允許/ 根是系統內核啟動后掛載的第一個分區,掛載到根上的…

    Linux干貨 2017-05-31
  • mongodb 分片集群搭建

    集群架構 本次實驗部署3臺主機node1、node2、node3,2個副本集db1、db2作為分片,3臺主機均有1個配置庫實例 操作步驟 安裝 node1上執行如下命令,完成后拷貝/mongodb目錄到node2、node3 useradd mongodb   mkdir -p /mongodb/data/{…

    Linux干貨 2016-11-06

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-17 21:36

    寫的很好,排版也很漂亮,最后一個這樣寫可以嗎?加油

欧美性久久久久