1. 程式人生 > >小白學Linux之檔案目錄管理

小白學Linux之檔案目錄管理

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

(1)目錄管理命令
——ls:列出指定目錄下的內容
格式:ls [OPTION]… [FILE]…
-a:顯示所有檔案包括隱藏檔案
-A:顯示除.和..之外的所有檔案
-l,–long:顯示檔案的詳細屬性資訊
-h:對檔案大小進行單位換算,可能影響精度
-d:檢視目錄本身而非其內部的檔案
-r:逆序顯示檔案
-R:遞迴顯示檔案
示例:ls -lah / –詳細顯示/目錄下的所有檔案(包括隱藏檔案)
ls -ldh /etc –詳細顯示/etc目錄本身
ls -lhv / –倒序顯示/目錄下所有檔案(包括隱藏檔案)
ls -R /etc    –遞迴顯示/etc下所有檔案
——mkdir:建立目錄
格式:mkdir [OPTION]… DIRECTORY…
-p:自動按需建立父目錄
-m:建立目錄時給定許可權
示例:mkdir -p /data/test/A/B –在/data目錄下遞迴建立/test/A/B三個目錄
mkdir -m 711 -p /data/MODE/A –在/data目錄下遞迴建立MODE/A兩個目錄同時指定目錄A的許可權為711
——rmdir:刪除目錄
格式:rmdir [OPTION]… DIRECTORY…
-p:刪除目錄後如果其父目錄為空,則一併刪除
示例:rmdir -p /data/test/A –刪除A目錄後,test目錄為空,一併刪除
——cd:切換目錄
示例:cd ..:切換到上級目錄
cd ~:切換回自己的家目錄
cd -:在上一次目錄與當前目錄直接來回切換
——pwd:顯示當前目錄
(2)檔案管理命令
——cp:複製
格式:單源複製:cp [OPTION]… [-T] SOURCE DEST(如果DEST不存在則建立,存在則覆蓋)
多源複製:cp [OPTION]… SOURCE… DIRECTORY(DEST必須為directory)
-i:互動式複製,即覆蓋前提醒使用者確認
-f:強制覆蓋目標檔案
-r,-R:遞迴複製目錄
示例:cp -if /data/[1-3].txt /data/test –test必須為目錄,把三個檔案一起復制到test中
cp -r /data /practice –把data目錄及目錄下的內容一起復制到practice中
——mv:剪下
格式:單源複製:mv [OPTION]… [-T] SOURCE DEST(如果DEST不存在則建立,存在則覆蓋)
多源複製:mv [OPTION]… SOURCE… DIRECTORY(DEST必須為directory)
-i:互動式複製,即覆蓋前提醒使用者確認
-f:強制覆蓋目標檔案
示例:mv -i /data/[1-3].txt /practice –把/data目錄下三個txt檔案剪下到/practice下
——rm:刪除
格式:rm [OPTION]… FILE…
-i:互動式複製,即覆蓋前提醒使用者確認
-f:強制覆蓋目標檔案
-r,-R:遞迴處理,將制定目錄下的所有檔案包括目錄一併刪除
示例:rm -rf /practice –遞迴刪除/practice目錄
(3)文字內容管理命令
——cat:正向檢視文字內容
格式:cat [OPTION]… [FILE]…
-n:給顯示的文字行編號
-E:顯示行結束符號$
示例:cat -n /etc/fstab –檢視/etc/fatab內容並顯示行號
——tac:倒敘檢視文字內容
格式:tac [OPTION]… [FILE]…
示例:tac /etc/passwd –倒敘檢視文字內容
——head:顯示文字內容,預設顯示頭10行
格式:head [OPTION]… [FILE]…
-n #:顯示文字頭#行內容
示例:head -5 /etc/passwd –顯示/etc/passwd檔案頭5行內容
——tail:顯示文字內容,預設顯示後10行
格式:tail [OPTION]… [FILE]…
-n #:顯示文字後#行內容
-f:檢視檔案尾部內容結束後不退出,跟隨顯示新增的行
示例:tail -8 /etc/passwd –顯示/etc/passwd檔案後8行內容
——more:分屏顯示文字內容,每次顯示一屏顯示完停止
格式:more [options] file […]
Space鍵:顯示文字下一屏內容
Enter鍵:只顯示文字下一行內容
b鍵:顯示文字上一屏內容
q鍵:退出
——less:分屏顯示文字內容,不主動退出
格式:less [options] file […]
Space鍵:顯示文字下一屏內容
Enter鍵:只顯示文字下一行內容
b鍵:顯示文字上一屏內容
q鍵:退出

 

 

 

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

1)bash命令執行後通過狀態返回值來確定執行結果:

成功:返回0

失敗:返回1-255

注意,命令執行完成後,其狀態返回值保存於bash的特殊變數“$?”中。

示例:

# ls
etcls.sh gentoo love.txt tmpmk.sh varls.sh
# echo $?
0
# lsss -l
bash: lsss: command not found…
# echo $?
127

(2)bash命令列展開:

~:自動展開為當前使用者的家目錄

~USERNAME:自動展開為指定使用者的家目錄

{}:{}內容可為一個用,隔開的路徑列表,將其展開為多個路徑

示例:

 

 

 

1

2

3

4

5

6

# cd ~walterhuang

# pwd

/home/walterhuang

# cd ~

# pwd

/root

 

 

本文福利:關注薇信工宗號:程式設計師交流互動平臺,回覆【大資料】可獲取大資料基礎視訊教程一套

 

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

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

 

小白學Linux之檔案目錄管理

[[email protected] /]# tree /tmp

/tmp

├── {a.b}_c

├── {a.b}_d

├── a_c

├── a_d

├── anaconda.log

├── b_c

├── b_d

├── hsperfdata_root

│ └── 3020

├── ifcfg.log

├── ks-script-I7ulJS

├── packaging.log

├── program.log

├── sensitive-info.log

├── ssh-ggmmcun7M2BM

│ └── agent.11391

├── storage.log

├── systemd-private-7cf910eca45f4f549e6aedea59621ea4-colord.service-8uAM7m

│ └── tmp

├── systemd-private-7cf910eca45f4f549e6aedea59621ea4-cups.service-pIEqBq

│ └── tmp

├── systemd-private-7cf910eca45f4f549e6aedea59621ea4-rtkit-daemon.service-mjBcd2

│ └── tmp

├── systemd-private-7cf910eca45f4f549e6aedea59621ea4-vgauthd.service-iJNR3j

│ └── tmp

├── systemd-private-7cf910eca45f4f549e6aedea59621ea4-vmtoolsd.service-218DG7

│ └── tmp

│ └── vmware-root

├── systemd-private-9f23cd16f00b4d20a1b3c420966121bf-colord.service-4x1aYA

│ └── tmp

├── systemd-private-9f23cd16f00b4d20a1b3c420966121bf-cups.service-u3q3ET

│ └── tmp

├── systemd-private-9f23cd16f00b4d20a1b3c420966121bf-rtkit-daemon.service-v8D8sb

│ └── tmp

├── systemd-private-9f23cd16f00b4d20a1b3c420966121bf-vgauthd.service-hxgT2L

│ └── tmp

├── systemd-private-9f23cd16f00b4d20a1b3c420966121bf-vmtoolsd.service-ZMqjfn

│ └── tmp

│ └── vmware-root

├── systemd-private-cafce9ab2e2743d19dd3e1671cc7d9e5-colord.service-xlXrbZ

│ └── tmp

├── systemd-private-cafce9ab2e2743d19dd3e1671cc7d9e5-cups.service-Brq3gW

│ └── tmp

├── systemd-private-cafce9ab2e2743d19dd3e1671cc7d9e5-rtkit-daemon.service-LphkWd

│ └── tmp

├── systemd-private-cafce9ab2e2743d19dd3e1671cc7d9e5-vgauthd.service-FQDYHD

│ └── tmp

├── systemd-private-cafce9ab2e2743d19dd3e1671cc7d9e5-vmtoolsd.service-rVcWpU

│ └── tmp

│ └── vmware-root

├── tracker-extract-files.1000

├── yum.log

├── yum_save_tx.2018-08-23.09-22.Sm_fbn.yumtx

└── yum_save_tx.2018-08-27.09-58.FnoJau.yumtx

 

 

(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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

# 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/local/bin"

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

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

mkdir: 已建立目錄 "/tmp/mylinux/lock"

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

mkdir: 已建立目錄 "/tmp/mylinux/run"

# tree /tmp/mylinux/

/tmp/mylinux/

├── bin

├── boot

│   └── grub

├── dev

├── etc

│   ├── rc.d

│   │   └── init.d

│   └── sysconfig

│   └── network-scripts

├── lib

│   └── modules

├── lib64

├── lock

├── log

├── proc

├── run

├── sbin

├── sys

├── tmp

├── usr

│   └── local

│   ├── bin

│   └── sbin

└── var

 


本文福利:關注薇信工宗號:程式設計師交流互動平臺,回覆【大資料】可獲取大資料基礎視訊教程一套

 

 

 

4、檔案的元資料資訊有哪些,分別表示什麼含義,如何檢視?如何修改檔案的時間戳資訊。

 

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

使用aliase可以檢視當前shell的的別名。aliase=value可以定義命令別名

 

(1) alias

顯示當前shell程序所有可用的命令別名;

(2) alias NAME='VALUE'

定義別名NAME,其相當於執行命令VALUE;

 

注意:在命令列中定義的別名,僅對當前shell程序有效;如果想永久有效,要定義在配置檔案中;

  僅對當前使用者:~/.bashrc

對所有使用者有效:/etc/bashrc

    撤消別名:unalias

unalias [-a] name [name …]

 

 

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

  [[email protected] ~]# ls -l  /var/1*[0-9]*[a-z]

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

[[email protected] ~]# ls -l  /etc/[0-9]*[^0-9]

8、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字元的檔案或目錄。

 [[email protected] ~]# ls /etc/[^a-zA-Z][a-zA-Z]*

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

 [[email protected] ~]# touch /tmp/tfile-date +%Y-%m-%d-%H-%M-%S

10、複製/etc目錄下所有以p開頭,以非數字結尾的檔案或目錄到/tmp/mytest1目錄中。

 [[email protected] ~]#cp /etc/p*[^0-9] /tmp/mytest1/

11、複製/etc目錄下所有以.d結尾的檔案或目錄至/tmp/mytest2目錄中。

 [[email protected] ~]#cp /etc/*.d /tmp/mytest2/ 

12、複製/etc/目錄下所有以l或m或n開頭,以.conf結尾的檔案至/tmp/mytest3目錄中。

 [[email protected] ~]#cp /etc/{1,m,n}*.conf /tmp/mytest3/

在這裡我還是要推薦下我自己建的大資料學習交流裙:805127855, 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴。