linux文件管理命令與命令行展開

linux文件管理命令與命令行展開

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

  1. rmdir: 刪除空目錄,如果目錄里面有內容,需要刪除的話,則需要使用rm命令

格式: rmdir [options] directory…

選項: -p: 遞歸刪除

示例:在 /tmp下創建了a/b/c的目錄,首先,我們刪除/tmp/a目錄,看系統如何提示。 第二步,使用-p選項刪除這些目錄。

[root@localhost tmp]# mkdir -p /tmp/a/b/c

[root@localhost tmp]# tree /tmp/a

/tmp/a

└── b

└── c

 

[root@localhost tmp]# rmdir a

rmdir: 刪除 “a” 失敗: 目錄非空

 

[root@localhost tmp]# rmdir -p a/b/c

 

 

 

 

  1. mkdir: 創建目錄

格式: mkdir [選項] 目錄…

選項: -m MODE: 創建目錄時,設定目錄的訪問權限,默認權限為755,可以使用此選項更改目錄的權限,權限可以是8進制數字格式,也可以指定ugo的權限

-p: 遞歸創建目錄,創建一個目錄,如果其父目錄不存在,則遞歸創建其父目錄

示例:

[root@localhost tmp]# mkdir -m 777 a

[root@localhost tmp]# ls -ld a

drwxrwxrwx. 2 root root 6 12月 10 20:06 a

 

[root@localhost tmp]# mkdir -m u=rwx,g=rw,o=rw b

[root@localhost tmp]# ls -ld b

drwxrw-rw-. 2 root root 6 12月 10 20:07 b

 

 

[root@localhost tmp]# mkdir /e/f/g

mkdir: 無法創建目錄”/e/f/g”: 沒有那個文件或目錄

[root@localhost tmp]# mkdir -p /e/f/g

[root@localhost tmp]#

 

 

  1. touch: 創建文件或者修改文件的時間屬性

atime和mtime都可以更改,但ctime不能使用命令更改,通過更改atime和mtime,ctime會自動修改。

格式: touch [-acm][-r ref_file(參照文件)|-t time(時間值)] file(文件名)…

 

用法描述: touch 修改每個指定文件 file 的存取(access)和/或修改(modifica‐ tion)時間戳記. 除非使用-r或-t選項,這些時間戳記都將修改為當前的時間. 使用-r選項時,這些戳記將按照文件–ref_file的時間戳記來修改(即變得和ref_file時間戳記值相同).使用-t選項,則這些戳記將按照給定的時間值 time 進行修改.同時使用或同時不使用選項-a和-m,存取和修改兩個戳記都將被更改.若只使用選項-a,則只修改存取戳記.同樣,只使用選項-m,則只修改修改戳記.若要修改戳記的文件尚不存在,除非使用-c選項,touch將創建它(作為空文件,并賦予0666的模式且受umask值的限制)

 

選項:

-a, –time=atime, –time=access, –time=use

只修改存取時間.

-c, –no-create

如果要修改的文件不存在,此選項使touch不去創建它.

 

-m, –time=mtime, –time=modify

只修改修改時間.

-r file, –reference=file

使用參照文件 file 的時間戳記值修改指定文件的時間戳記.

-t decimtime

這里時間值 decimtime 的格式為MMDDhhmm[[CC]YY][.ss]

從左至右分別是月份,日期,小時,分鐘,可選的世紀和

年,以及可選的秒. touch 將用這組數值修改指定文件的

時間戳記.請注意,這個格式與POSIX標準所規定的格式并

不一樣.

實際的時間格式為年年年年月月日日時時分分[秒秒]

 

示例:

1) 使用touch創建文件file1

[root@localhost tmp]# touch file1

[root@localhost tmp]# ll file1

-rw-r–r–. 1 root root 0 12月 10 20:16 file1

[root@localhost tmp]#

 

[root@localhost tmp]# stat file1

文件:”file1″

大小:0 塊:0 IO 塊:4096 普通空文件

設備:fd00h/64768d Inode:67167337 硬鏈接:1

權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

環境:unconfined_u:object_r:user_tmp_t:s0

最近訪問:2017-12-10 20:16:52.075000000 +0800

最近更改:2017-12-10 20:16:52.075000000 +0800

最近改動:2017-12-10 20:16:52.075000000 +0800

創建時間:-

 

 

 

2) 修改file1的atime為2012年10月20日19點16分

[root@localhost tmp]# touch -a -t 201210201916 file1

 

[root@localhost tmp]# stat file1

文件:”file1″

大?。? 塊:0 IO 塊:4096 普通空文件

設備:fd00h/64768d Inode:67167337 硬鏈接:1

權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

環境:unconfined_u:object_r:user_tmp_t:s0

最近訪問:2012-10-20 19:16:00.000000000 +0800

最近更改:2017-12-10 20:16:52.075000000 +0800

最近改動:2017-12-10 20:33:04.285000000 +0800

創建時間:-

 

 

3) 使用touch -c,并不真正創建文件,但如果文件存在,會更新文件的三個時間戳

[root@localhost tmp]# touch -c file1

[root@localhost tmp]# stat file1

文件:”file1″

大?。? 塊:0 IO 塊:4096 普通空文件

設備:fd00h/64768d Inode:67167337 硬鏈接:1

權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

環境:unconfined_u:object_r:user_tmp_t:s0

最近訪問:2017-12-10 20:34:47.505000000 +0800

最近更改:2017-12-10 20:34:47.505000000 +0800

最近改動:2017-12-10 20:34:47.505000000 +0800

創建時間:-

[root@localhost tmp]# touch -c file2

 

 

4) 修改文件file1的mtime時間為2012年10月20日19點16分

[root@localhost tmp]# touch -m -t 201210201916 file1

[root@localhost tmp]# stat file1

文件:”file1″

大?。? 塊:0 IO 塊:4096 普通空文件

設備:fd00h/64768d Inode:67167337 硬鏈接:1

權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

環境:unconfined_u:object_r:user_tmp_t:s0

最近訪問:2017-12-10 20:34:47.505000000 +0800

最近更改:2012-10-20 19:16:00.000000000 +0800

最近改動:2017-12-10 20:42:13.486000000 +0800

創建時間:-

 

 

5) 使用file1的時間戳來創建file3,注意ctime沒有同步

[root@localhost tmp]# stat file1

文件:”file1″

大?。? 塊:0 IO 塊:4096 普通空文件

設備:fd00h/64768d Inode:67167337 硬鏈接:1

權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

環境:unconfined_u:object_r:user_tmp_t:s0

最近訪問:2017-12-10 20:34:47.505000000 +0800

最近更改:2012-10-20 19:16:00.000000000 +0800

最近改動:2017-12-10 20:42:13.486000000 +0800

創建時間:-

 

[root@localhost tmp]# touch -r file1 file3

 

[root@localhost tmp]# stat file3

文件:”file3″

大?。? 塊:0 IO 塊:4096 普通空文件

設備:fd00h/64768d Inode:67167358 硬鏈接:1

權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

環境:unconfined_u:object_r:user_tmp_t:s0

最近訪問:2017-12-10 20:34:47.505000000 +0800

最近更改:2012-10-20 19:16:00.000000000 +0800

最近改動:2017-12-10 21:03:39.538000000 +0800

創建時間:-

 

 

 

 

  1. cp: 復制文件和目錄

格式: cp SOURCE DEST

說明:

復制文件時,如果目錄是目錄,則將文件復制到目錄下,使用原文件名;如果目標是文件,且文件不存在,則會創建這個文件,將源文件的內容復制到目標文件中; 如果目標是文件且存在,則會提 示是否覆蓋

多源復制,指源為多個文件時,指定的目標應該是一個目錄, 如果目標目錄不存在,則報錯

如果目標目錄存在,是非目錄文件,則報錯,如果目標目錄存在,是目錄文件,則將源復制到這個目錄下

 

選項:

-i: 覆蓋之前提醒用戶進行確認,有的版本,使用 cp命令時,別名有加-i選項

-f: force 如果目標文件存在,則強制覆蓋

-r: recursive,遞歸復制目錄及目錄中的內容到目標目錄

-d: 在復制符號鏈接作為符號鏈接而不是復制它指向的文件,并且保護在副本中原文件之間的硬鏈接

-a: 復制時,盡可能保持文件的結構和屬性,(但不保持目錄 結構)等同于-dpR archive,用于實現歸檔;

–preserv=

mode 權限

ownership 屬主屬組

timestamps 時間戳

context 安全標簽

xattr: 擴展屬性

all: 上述所有屬性

 

示例:

1) 使用單源復制時,如果目標是目錄,則將文件復制到目錄中,不改名; 如果目標是文件,且不存在,則會創建文件,將源文件中的數據流復制到目標文件;如果目標文件存在,則會提示是否覆蓋

[root@localhost ~]# cp /etc/fstab /tmp

[root@localhost ~]# cd /tmp

[root@localhost tmp]# ls

fstab ks-script-rDmdoC yum.log

[root@localhost tmp]# cp /etc/fstab /tmp/fstab2

[root@localhost tmp]# cp /etc/fstab /tmp/fstab2

cp:是否覆蓋”/tmp/fstab2″?

 

2) 在CentOS中,cp命令是使用了alias的,默認添加了-i選項,即目標存在時,會提示是否覆蓋

 

3) 使用-r選項,會強制覆蓋已經存在的目標文件

[root@localhost tmp]# ls /tmp

fstab passwd

[root@localhost tmp]# cp -r /etc/fstab /tmp

cp:是否覆蓋”/tmp/fstab”? n

[root@localhost tmp]# \cp -r /etc/fstab /tmp

 

4) 帶權限復制文件,復制文件時,默認不復制文件的相關屬性,使用-a選項,帶屬性復制。 非管理員不能復制文件的相關屬性。

[root@localhost tmp]# cp -a fstab2 fstab3

[root@localhost tmp]# ll

總用量 16

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

[root@localhost tmp]# cp fstab2 fstab4

[root@localhost tmp]# ll

總用量 20

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

 

 

 

 

 

  1. rm: 移除文件或者目錄

格式: rm [options] file…

選項:

-f: force,在刪除時,不出現提示

-i: 進行確認提示,在刪除文件時,會提示

-r: 遞歸地移除目錄中的內容

 

示例:

# 顯示/tmp目錄下的的文件及目錄

[root@localhost ~]# tree /tmp

/tmp

├── a

│?? └── b

│?? └── c

│?? └── d

│?? └── e

├── fstab

├── fstab2

├── fstab3

├── fstab4

└── passwd

 

5 directories, 5 files

 

# 使用rm不帶參數來刪除一個目錄,顯示無法刪除

[root@localhost ~]# rm /tmp/a

rm: 無法刪除”/tmp/a”: 是一個目錄

 

# 使用fm -rf來強制刪除一個目錄,且遞歸進行刪除

[root@localhost ~]# rm -rf /tmp/a

[root@localhost ~]# tree /tmp

/tmp

├── fstab

├── fstab2

├── fstab3

├── fstab4

└── passwd

 

 

 

  1. mv: 移動文件或者對文件改名

格式: mv [選項]… 源文件 目標文件

mv [選項]… 源文件… 目錄

mv [選項]… –target-directory=DIRECTORY SOURCE…

示例:

#將當前目錄下的fstab移動到當前目錄下,改名叫fstab

[root@localhost tmp]# ll

總用量 20

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

 

[root@localhost tmp]# mv fstab fstab5

 

[root@localhost tmp]# ll

總用量 20

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab5

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

 

# 將當前目錄下的fstab5移動到下一級目錄a下

[root@localhost tmp]# mv fstab5 a/

[root@localhost tmp]# ll

總用量 16

drwxr-xr-x. 2 root root 20 12月 11 18:29 a

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

[root@localhost tmp]# tree

.

├── a

│?? └── fstab5

├── fstab2

├── fstab3

├── fstab4

└── passwd

 

# 使用–target-directory長選項移動文件

[root@localhost tmp]# mv –target-directory=’/tmp/a’ fstab3

[root@localhost tmp]# tree a

a

├── fstab3

├── fstab4

└── fstab5

 

 

 

 

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

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

命令執行狀態的返回值不同于命令的執行結果,當命令在bash中正常完成,其值為0,如果命令在bash中運行出錯,其值為1-255,使用 echo $?來查看結果

 

# 命令運行成功,其執行狀態結果為0

[root@localhost ~]# ls /tmp &> /dev/null

[root@localhost ~]# echo $?

0

 

# 命令執行不成功,其結果為1-255之間的一個值

[root@localhost ~]# ls /tmpp &> /dev/null

[root@localhost ~]# echo $?

2

 

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

在bash中,可以使用一些特定的字符來代替參數

 

1) ~表示用戶的家目錄

# 快速切換到用戶的家目錄

[root@localhost tmp]# pwd

/tmp

[root@localhost tmp]# cd ~

[root@localhost ~]# pwd

/root

 

2) {}可以承載一個以逗號為分割符的列表,進行展開

# 使用{}進行命令行展開

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

[root@localhost ~]# ls

a_c a_d anaconda-ks.cfg b_c b_d

 

 

 

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

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

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

 

 

  1. 創建/tmp/mylinux目錄下的以下目錄

[root@localhost 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@localhost tmp]# tree 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

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89928

(0)
神策神策
上一篇 2017-12-11 18:24
下一篇 2017-12-11 21:14

相關推薦

  • ?文件系統層級結構標準

    多數Linux發行版遵從FHS標準并且聲明其自身政策以維護FHS的要求。 [1] [2] [3] [4] 然而,包括由自由標準小組成員在內開發的絕大多數發行版(截至2009年),并不完全執行建議的標準。
    當FHS創建之時,其他的UNIX和類Unix操作系統已經有了自己的標準,尤其是hier(7)文件系統布局描述。 自從第七版Unix(于1979年)發布以來已經存在,或是SunOS filesystem(7), [5] 和之后的Solaris filesystem(5)。 例如,Mac OS X使用如 /Library、 /Applications和/Users 等長名與傳統UNIX目錄層次保持一致。
    現在的Linux發行版包含一個/sys目錄作為虛擬文件系統(sysfs,類似于 /proc,一個procfs),它存儲且允許修改連接到系統的設備,然而許多傳統UNIX和類Unix操作系統使用/sys作為內核代碼樹的符號鏈接。
    一些Linux系統如GoboLinux和Syllable Server使用了和FHS完全不同的文件系統層次組織方法。

    Linux干貨 2016-10-17
  • N22-℡浮生.若夢 ╮第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ~]# cp -r /etc/skel/ /home/tuser1 ~]# chmod -R 700 /home/tuser1 ~]#&nbsp…

    Linux干貨 2016-09-19
  • linux軟鏈接與硬鏈接的區別

    硬鏈接:相于當給文件增加了一個新名 在添加鏈接時會增加鏈接數,其inode結點數不會增加 支持絕對路徑與相對路徑 硬鏈接不能對目錄來創建 不能跨分區來創建鏈接 硬鏈接鏈接到文件被刪除時,依舊可以通過鏈接文件來訪問被刪文件的數據 軟鏈接:可以支持對目錄來創建鏈接 (注,當你用rm -rf 刪除目錄的時候,目錄不會刪除,但目錄中的內容會被刪除,并且會刪除源文件)…

    Linux干貨 2013-07-15
  • Linux的哲學思想及Linux發行版

    講述一下幾個問題: 第一,Linux的哲學思想;第二,Linux發行版的基礎目錄名稱,命名法則和功用規定;第三,Linux不同發行版之間的聯系和區別。 Linux的哲學思想: 1、一切皆文件。是Unix/Linux的基本哲學之一,不僅普通的文件,目錄,字符設備,塊設備,套接字等在Unix/Linux中都是以文件被對待。 2、小型,單一用途的程序。程序和可執行…

    Linux干貨 2016-09-17
  • NoSQL理論基礎及安裝、基本操作

    30分鐘開始 分布式系統理論: CAP: 一致性 可用性 分區容錯性     MongoDB: 安裝 crud 索引 副本集 分片   NoSQL:非關系型、分布式、不提供ACID功能 技術特點: 1、簡單數據模型 2、元數據和應用數據分離(分不同服務器存儲) 3、弱一致性   優勢: 1、避免不必要的復雜性 2、高吞…

    2016-11-27
欧美性久久久久