網絡N23期第二周:linux上的目錄與文件管理命令,bash的工作特性等

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

1.1 mkdir  創建目錄

使用方法:mkdir [OPTION]… DIRECTORY…

常用選項:

-p:按需創建父目錄

-m:創建目錄權限

-v:輸出詳細創建目錄過程

實例: 創建/tmp/test2/test3目錄,定義權限為rwxrw-rw-,并詳細顯示創建目錄過程。

 ~]# mkdir -pv -m 766 /tmp/test2/test3

mkdir: created directory `/tmp/test2'

mkdir: created directory `/tmp/test2/test3'

~]# ls -ld /tmp/test2/test3

drwxrw-rw- 2 root root 4096 Oct  7 08:42 /tmp/test2/test3

1.2 rmdir命令

rmdir是常用的命令,該命令的功能是刪除空目錄,一個目錄被刪除之前必須是空的。(注意,rm – r dir命令可代替rmdir,但是有很大危險性。)刪除某目錄時也必須具有對父目錄的寫權限。

1.命令格式:

rmdir [選項]… 目錄…

2.命令功能:

該命令從一個目錄中刪除一個或多個子目錄項,刪除某目錄時也必須具有對父目錄的寫權限。

3.命令參數:

– p 遞歸刪除目錄,當子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由于某種原因保留部分路徑,則系統在標準輸出上顯示相應的信息。

-v, –verbose顯示指令執行過程

實例:

[root@nfs_server ~]# rmdir -pv /tmp/test2/test3

rmdir: removing directory, `/tmp/test2/test3'

rmdir: removing directory, `/tmp/test2'

rmdir: removing directory, `/tmp'

rmdir: failed to remove directory `/tmp': Directory not empty    因為/tmp 不為空目錄,所以不能刪除。

1.3 cp 復制命令:

1.3.1 cp [Option] …[-T] SRC(源) DEST(目的)

(如果目標不存在,則新建DEST, 并將SRC中的內容填充至DEST中。

如果目標存在:如果DEST是文件,將SRC內容覆蓋至DEST中。此時建議為cp命令使用-i選項。

如果DEST是目錄,在DEST下新建與原文件同名的文件,并將SRC中內容填充至DEST中)

實例:~]# cp /etc/fstab  /tmp/fstab.txt  (fstab.txt 為文件)

~]# cp /etc/fstab   /tmp/test  (/tmp/test 為目錄)

~]# ls /tmp/test/

 fstab 

1.3.2 cp [Option] … SRC(原文件)…(可多個文件) DIRECTORY(新目錄)(表示復制到哪個目錄中)如src 為多個文件,Directory必須存在,且為目錄,其它情形均為錯。

cp SRC DEST src是目錄:

此時使用選項: -r (recursive 遞歸)

如果DEST目標不存在則創建指定目錄,復制源SRC目錄中所有目錄至目標中

如果目標存在:

如果目標是文件,則報錯

如果dest是目錄,則復制到此目錄中

常用選項:

-i: 交互式

-r: 遞歸復制目錄及其內部所有內容

-a: 歸檔, 相當于 -dR –preserv=all (即保留源文件或目錄的屬性,包括所有者、所屬組、權限與時間)

-d: –no-dereference –preserv=links (如果原文件是鏈接,則保留原鏈接格式)

–preserv=[Attr_list](保留屬性)

mode:權限

ownership:屬主屬組

timestamp:時間戳

links: 鏈接

xattr:特殊屬性

context: 上下文

all:所有

-p =–preserve=mode, ownership, timestamp

-v 顯示詳細信息

-t 復制時可把目標放在前面

-f –force 強制復制 (危險)

實例:

~]# cp -Pv /tmp/{lines.sh,fstab.txt}  /tmp/test/  

`/tmp/lines.sh' -> `/tmp/test/lines.sh'

`/tmp/fstab.txt' -> `/tmp/test/fstab.txt'

~]# ll /tmp/test/

total 8

-rw-r–r– 1 root root 805 Oct  7 16:08 fstab.txt

-rwxr-xr-x 1 root root 197 Oct  7 16:08 lines.sh

1.4  mv 命令(move縮寫) 用來移動文件或者將文件改名

1.命令格式:

mv [選項] 源文件或目錄 目標文件或目錄

2.命令功能:

mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它將所給的源文件或目錄重命名為給定的目標文件名。當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將各參數指定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。

3.命令參數:

-b :若需覆蓋文件,則覆蓋前先行備份。

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

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

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

-t  :–target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。

4.命令實例:

實例一:文件改名

命令:

mv test.log test1.txt

實例二: 移動文件

]# mv ./{test1.txt,yum.log} ./test  

]# ls ./test/

test1.txt  yum.log

1.5 rm 命令: remove

刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對于鏈接文件,只是刪除了鏈接,原有文件均保持不變。rm是一個危險的命令,使用的時候要特別當心,尤其對于新手,否則整個系統就會毀在這個命令(比如在/(根目錄)下執行rm * -rf)

1.命令格式:

rm [選項] 文件…

2.命令功能:

刪除一個目錄中的一個或多個文件或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。

3.命令參數:

-f, –force    忽略不存在的文件,從不給出提示。

-i, –interactive 進行交互式刪除

-r, -R, –recursive   指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。

-v, –verbose    詳細顯示進行的步驟

–help     顯示此幫助信息并退出

–version  輸出版本信息并退出

4.命令實例:

一: 刪除文件,系統會詢問是否刪除

~]# rm test1.txt   

rm:是否刪除普通空文件 "test1.txt"?

說明:

輸入rm test1.txt  命令后,系統會詢問是否刪除,輸入y后就會刪除文件,不想刪除則數據n。

二:強行刪除file,系統不再提示。

命令:

]# rm -f test1.txt

三: 刪除文件時進行交互式詢問

命令:

~]# rm -i {test1.log,test.log}

rm:是否刪除普通空文件 "test1.log"?y

rm:是否刪除普通空文件 "test.log"?y

四:將 test子目錄及子目錄中所有檔案刪除

命令:

~]# rm -r ./test

rm:是否進入目錄"./test"? y

rm:是否刪除普通空文件 "./test/test1.txt"?y

rm:是否刪除普通空文件 "./test/yum.log"?y

rm:是否刪除目錄 "./test"?y

五: 自定義回車站功能:

命令:

~]# alias rm='myrm'

 ~]# cd /tmp/

tmp]# myrm(){ D=/tmp/$( date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }

tmp]# touch 1.log 2.log 3.log

 tmp]# ls

1.log  2.log  3.log  

 tmp]# rm [123].log

moved to /tmp/20161007180817 ok

tmp]# ll /tmp/20161007180817/

總用量 0

-rw-r–r–. 1 root root 0 10月  7 18:07 1.log

-rw-r–r–. 1 root root 0 10月  7 18:07 2.log

-rw-r–r–. 1 root root 0 10月  7 18:07 3.log

[root@localhost tmp]# ll

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

bash 的基礎特性: 命令的執行狀態結果:

bash 通過狀態返回值來輸出此結果:

成功 : 0

失敗: 1 – 255

命令執行完成功之后,其狀態返回值保存于bash 的特殊變量$?中;

]# echo $?

引用命令的執行結果:

$(COMMAND)或 $`COMMAND`

例如 : 創建以時間的目錄

]# date +%H-%M-%S

17-46-47

]# mkdir $(date +%H-%M-%S)

17-47-51

bash 的基于特性: 引用

強引號: ‘ ’單引號

弱引用: “ ” 雙引號

命令引用: · · 反引號,建議用$() , 替代;

bash基礎特性: 快捷鍵

Ctrl + a : 跳轉到命名行首部。

Ctrl + e : 跳轉到命名行首尾;

Ctrl + u: 刪除行首至光標所在處之間的所有字符;

Ctrl + k: 刪除光標所在處至行尾的所有字符;

Ctrl + l : 相當于clear 清除鍵。

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

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

]# mkdir {a,b}_{c,d}

]# 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

命令:

~]# mkdir -pv /tmp/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}

mkdir: 已創建目錄 "/tmp/mylinux"

mkdir: 已創建目錄 "/tmp/mylinux/bin"

mkdir: 已創建目錄 "/tmp/mylinux/boot"

mkdir: 已創建目錄 "/tmp/mylinux/boot/grub"

mkdir: 已創建目錄 "/tmp/mylinux/dev"

mkdir: 已創建目錄 "/tmp/mylinux/etc"

mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d"

mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d"

mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig"

mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/network-scripts"

mkdir: 已創建目錄 "/tmp/mylinux/lib"

mkdir: 已創建目錄 "/tmp/mylinux/lib/modules"

mkdir: 已創建目錄 "/tmp/mylinux/lib64"

mkdir: 已創建目錄 "/tmp/mylinux/proc"

mkdir: 已創建目錄 "/tmp/mylinux/sbin"

mkdir: 已創建目錄 "/tmp/mylinux/sys"

mkdir: 已創建目錄 "/tmp/mylinux/tmp"

mkdir: 已創建目錄 "/tmp/mylinux/usr"

mkdir: 已創建目錄 "/tmp/mylinux/usr/local"

mkdir: 已創建目錄 "/tmp/mylinux/usr/bin"

mkdir: 已創建目錄 "/tmp/mylinux/usr/bin/sbin"

mkdir: 已創建目錄 "/tmp/mylinux/var"

mkdir: 已創建目錄 "/tmp/mylinux/var/lock"

mkdir: 已創建目錄 "/tmp/mylinux/log"

mkdir: 已創建目錄 "/tmp/mylinux/log/run"

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

元數據包含文件的權限,大小,擁有者,組以及修改時間等信息,可用ls -l命令查看。用touch命令修改時間戳信息。如:touch -t [YYYYMMDDhhmm] FILE

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

使用alias定義個別名,alias aliasname = Command + option

使用管道引用另一個命令執行結果, 如 ps -ef |grep httpd

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

命令:

]# ls /var/l*[[:digit:]]*[[:lower:]]

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

命令:

]# ls /etc/[[:digit:]]*[^[:digit:]]

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

命令:

]# ls /etc/[^[:alpha:]][[:alpha:]]*

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

]# touch tfile$(date +%Y-%m-%d-%H-%M-%S)

]# ls

  tfile2016-10-07-20-46-51

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

mkdir -p /tmp/mytest1

cp /etc/p*[^[:digit:]]  /tmp/mytest1/

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

]# mkdir -p /tmp/mytest2

cp -r /etc/*.d  /tmp/mytest2

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

mkdir -p /tmp/mytest3

cp /etc/[lmn]*.conf  /tmp/mytest3/

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

(0)
goodwingoodwin
上一篇 2016-10-09
下一篇 2016-10-09

相關推薦

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

    1、描述計算機的組成及其功能。   計算機由五個部分組成:運算器、控制器、存儲器、輸入設備、輸出設備。   控制器和運算器合稱為中央處理單元,即CPU。   功能:     運算器:也稱為算術邏輯單元,是計算機的核心,在控制器的控制下,對取自內存或內部寄存器的數據進行算術運算和邏輯運算。   &nb…

    Linux干貨 2016-07-07
  • Linux網絡管理&腳本編程之執行流程、循環

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋(Bridge):是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,不是共享一條背板總線,可隔離沖突域。網橋比集線器(Hub)性能更好,集線器上各端口都是共享同一條背板總線的。后來,網橋被具有更多端口、同時也可隔離沖突域的交換機(Switc…

    Linux干貨 2016-11-14
  • N28-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
    2、取出最后登錄到當前系統的用戶的相關信息。
    3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
    4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
    5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
    6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
    7、顯示/var目錄下一級子目錄或文件的總個數。
    8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
    9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
    10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:
    (1)、創建組distro,其GID為2016;
    (2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
    (3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
    (4)、給用戶mageia添加密碼,密碼為mageedu;
    (5)、刪除mandriva,但保留其家目錄;
    (6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
    (7)、修改slackware的默認shell為/bin/tcsh;
    (8)、為用戶slackware新增附加組admins;

    Linux干貨 2017-12-19
  • Linux文件查找工具之find “大寶劍”

    一、文件查找工具常用軟件 locate:     locate命令其實是find -name的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫/var/lib/locatedb,這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令…

    Linux干貨 2016-03-12
  • GRUB

    GRUB(Boot Loader):  grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2 grub legacy: stage1: mbr stage1_5: mbr之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統; s…

    Linux干貨 2016-04-12
欧美性久久久久