第二章 通過命令管理文件和目錄
課程目標:
認識重要的系統目錄
瞭解絕對路徑和相對路徑
通過命令創建,拷貝,移動,刪除文件和目錄
使用通配符匹配一個或多個文件
2.1 Linux文件系統的結構
Linux一切皆爲文件
目錄結構
常見的重要目錄說明:
/usr
安裝的軟件,共享庫,程序數據.重要的子目錄有
/usr/bin用戶命令
/usr/sbin管理員命令
/usr/local本地自定義安裝的軟件(一般爲通過源代碼安裝的軟件)
/etc
系統,軟件的配置文件
/var
存放系統引導啓動時產生的可變文件,文件通常動態更改的,例如數據庫文件,緩存目錄,日誌文件,打印池文件,網頁等
/run
系統啓動後期運行的程序的運行時數據,包括進程的pid文件,鎖文件等.這些文件一般在系統重啓後會重建
/home
一般用戶的主目錄都在該目錄下以用戶名爲名字的子目錄的形式存在
/root
系統管理員root的主目錄
/tmp
存放臨時文件,文件一般存放超過10天以上都會自動刪除,可以通過對系統的設定,更改刪除這些臨時文件的期限
/boot
存放系統引導時候需要的文件
/dev
存放設備文件
注意:
在rhel7中, /bin , /sbin , /lib , /lib64都以字符鏈接的形式鏈接到/usr/目錄下,例如
/bin --> /usr/bin
/sbin --> /usr/sbin
2.2 通過名字定位文件或目錄
介紹 pwd,cd,ls命令 cd =change directory 改變目錄 cd ~ 到根目錄,cd -上次的目錄 ,ctrl+l 或clear 是清屏
絕對路徑: 所有路徑描述都必須是以 "/" 開頭
相對路徑: 所有路徑直接以文件名字或者 "." 或者 ".."開頭 在當前絕對跟徑下的相對目錄。你的背景路徑在哪裏,相對路徑在哪裏。執行的結果是不同的,相對路徑不一定對,因爲依靠背景路徑,比如在etc下 ls ./run無結果,但是在根下執行同樣的命令就有輸出。
../ 上一級目錄 ls ../看上面一個目錄的內容
./當前目錄
etc/sysconfig/
路徑區分大小寫
2.3 通過命令行工具管理文件 ctrl+shift+T 再打開一個窗口,可以作遠程
命令作用需要掌握的參數
ls列表-l , -h , -a , -t ,d list列表命令
touch創建空白文件
cp拷貝文件-a 保留屬性 , -r
mv移動文件-f
rm刪除文件-f , -r
mkdir創建目錄-p , -f
練習:用student身份登陸desktop虛擬機上完成練習
在用戶家目錄下創建6個文件 song1.mp3 ~ song6.mp3
把上出創建的songX.mp3文件移動到Music目錄下
在用戶家目錄下創建三個目錄,分別爲 friends,family,work
切換到friends目錄下,把Music目錄下的song1.mp3 ~ song3.mp3 拷貝到當前目錄
切換到family目錄下,把Music目錄下的song4.mp3 ~ song6.mp3 移動到當前目錄
切換到用戶主目錄
刪除family目錄
切換到friends目錄,把目錄下的所有文件刪除
切換到主目錄,把friends目錄刪除.
2.4 使用正則表達式匹配一個或多個文件
$ mkdir glob;cd glob 建一個目錄並進入目錄
$ touch alfa bravo charlie delta echo able baker cast dog easy 建多個目錄
* 匹配零個或若干個任意字符
? 匹配一個任意字符
[ac]* 包含a或者c任意一個字符開頭的字符串
[ac]? 以a和c開頭,並且兩個字符組成的字符串 ls ./[ac]? 如 ab ac ca都可以匹配出來
{a..k}
如 touch a{1,2,3} 創建出 a1 a2 a3
touch b{1..5} 創建出b1 b2 b3 b4 b5
~
\ 轉義符,取消符號的特殊作用
ls ./a* ls a* 顯示當前目錄所有以a開頭的文件
ls *a* 有a的所有文件都會顯示
如:
[student@desktop0 ~]$ mkdir ex;cd ex
[student@desktop0 ex]$ ls
[student@desktop0 ex]$ touch d{1..5}{a,b,c}
[student@desktop0 ex]$ ls
d1a d1b d1c d2a d2b d2c d3a d3b d3c d4a d4b d4c d5a d5b d5c
========================================================
課堂聽講筆記:
1、lsblk看磁盤大小
nautilus /usr 顯示圖形界面
2、ls命令
[root@desktop0 home]# ls -l /home
total 4
drwx------. 17 student student 4096 Apr 29 10:31 student
[root@desktop0 home]# ls -l -h /home 可以看大小 命令:ls -lh /home h一定要和l一起用,區別就是單位變成K了。
total 4.0K
drwx------. 17 student student 4.0K Apr 29 10:31 student
ls -a 纔可以看到以.開頭的文件或文件夾,這是爲了保護一些重要文件,降低誤操作的機率。
[root@desktop0 home]# ls /etc/cron.d/ -l -d 只看一個文件,不會顯示很多
drwxr-xr-x. 2 root root 72 Jul 11 2014 /etc/cron.d/
3、cp命令
[root@desktop0 student]# cp /etc/hosts ./ copy到當前文件夾
[root@desktop0 student]# cp /etc/hosts ./newhosts copy到當前文件夾並改名 相對路徑
[root@desktop0 student]# cp /etc/hosts /home/student/hosts2 絕對路徑
[root@desktop0 student]# cp -a /etc/hosts /home/student/hosts3 保留文件的屬性,如ls -lh時可以看到時間還是原來最初生成的時間
[student@desktop0 ~]$ cp/home/student/hosts2 /tmp/
bash: cp/home/student/hosts2: No such file or directory
[student@desktop0 ~]$ cp /home/student/hosts2 /tmp/
[student@desktop0 ~]$ cp -a /home/student/hosts2 /tmp/hosts22
[student@desktop0 ~]$ ll /tmp/hosts*
-rw-r--r--. 1 student student 231 Apr 29 13:39 /tmp/hosts2
-rw-r--r--. 1 student student 231 Apr 29 13:34 /tmp/hosts22
備份時需要保留屬性,所以用這個-a參數 可以保留下組和名
拷目錄:
[student@desktop0 ~]$ cp /home/student /tmp/ 一般管理員不具有權限,需要加-r參數
cp: omitting directory ‘/home/student’
[student@desktop0 ~]$ ^C
[student@desktop0 ~]$ ^C
[student@desktop0 ~]$ cp -r /home/student /tmp/
[student@desktop0 ~]$ ls /tmp/student
Desktop Downloads hosts2 hostsnew Pictures tanpao.txt Templates
Documents hosts hosts3 Music Public Tanpao.txt Videos
[student@desktop0 ~]$ ls -ld /tmp/student
drwx------. 17 student student 4096 Apr 29 13:42 /tmp/student
4、移文件
[student@desktop0 ~]$ mv /home/student/tanpao.txt /tmp
[student@desktop0 ~]$ su - 切換成超級用戶
Password:
Last login: Sat Apr 29 10:55:59 CST 2017 on :0
[root@desktop0 ~]# mv /home/student/T
Tanpao.txt Templates/
[root@desktop0 ~]# mv /home/student/Tanpao.txt /tmp/tanpao.txt 超級用戶會提示是否覆蓋
mv: overwrite ‘/tmp/tanpao.txt’?
[root@desktop0 ~]# exit 退出超級用戶
logout
[student@desktop0 ~]$ ^C
5、刪除文件(相對跟徑和絕對跟徑)
[student@desktop0 ~]$ rm hosts2
rm: remove write-protected regular file ‘hosts2’? y
[student@desktop0 ~]$ rm /home/student/hosts
rm: remove write-protected regular file ‘/home/student/hosts’? y
[student@desktop0 ~]$ ls -lh /home/student/
total 8.0K
drwxr-xr-x. 2 student student 6 Jan 5 2015 Desktop
drwxr-xr-x. 2 student student 6 Jan 5 2015 Documents
drwxr-xr-x. 2 student student 6 Jan 5 2015 Downloads
-rw-r--r--. 1 root root 231 Jul 11 2014 hosts3
-rw-r--r--. 1 root root 231 Apr 29 13:33 hostsnew
drwxr-xr-x. 2 student student 6 Jan 5 2015 Music
drwxr-xr-x. 2 student student 6 Jan 5 2015 Pictures
drwxr-xr-x. 2 student student 6 Jan 5 2015 Public
-rw-r--r--. 1 root root 0 Apr 29 13:30 Tanpao.txt
drwxr-xr-x. 2 student student 6 Jan 5 2015 Templates
drwxr-xr-x. 2 student student 6 Jan 5 2015 Videos
6、創建目錄
[student@desktop0 ~]$ mkdir /tmp/test
[student@desktop0 ~]$ ls -ld /tmp/test
drwxrwxr-x. 2 student student 6 Apr 29 13:51 /tmp/test
[student@desktop0 ~]$
[student@desktop0 etc]$ cp /etc/hosts /tmp/test/
[student@desktop0 etc]$ ls /tmp/test
hosts
[student@desktop0 etc]$
刪除目錄
[student@desktop0 /]$ rm /tmp/test
rm: cannot remove ‘/tmp/test’: Is a directory
[student@desktop0 /]$ rm -r /tmp/test 刪除目錄需要-r,同時不提示,但是root用戶就會提示
如果需要提示
[student@desktop0 /]$ rm -i -r /tmp/test
rm: descend into directory ‘/tmp/test’? n
用超級管理員來作操作:
[root@desktop0 ~]# mkdir /tmp/test
[root@desktop0 ~]# cp /etc/host* /tmp/test
[root@desktop0 ~]# cd /tmp/test
[root@desktop0 test]# ls
host.conf hosts hosts.allow hosts.deny
刪除所有文件(千萬注意,不要在/目錄下作這個操作
[root@desktop0 ~]# cd /tmp/test
[root@desktop0 test]# ls
host.conf hosts hosts.allow hosts.deny
[root@desktop0 test]# pwd
/tmp/test
[root@desktop0 test]# rm ./*
rm: remove regular file ‘./host.conf’? y
rm: remove regular file ‘./hosts’? y
rm: remove regular file ‘./hosts.allow’? y
rm: remove regular file ‘./hosts.deny’? y
rm -rf ./* 這個可以不用提示一下刪除掉
一次性創建我個目錄
[root@desktop0 test]# mkdir /tmp/test/a/b
mkdir: cannot create directory ‘/tmp/test/a/b’: No such file or directory
[root@desktop0 test]# mkdir /tmp/test/a
[root@desktop0 test]# mkdir /tmp/test/a/b
[root@desktop0 test]# mkdir -p /tmp/test/a/b
=====================================
===============================================================================================
練習:用student身份登陸desktop虛擬機上完成練習
在用戶家目錄下創建6個文件 song1.mp3 ~ song6.mp3
[student@desktop0 Desktop]$ touch song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3
[student@desktop0 Desktop]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Apr 30 15:09 song1.mp3
-rw-rw-r--. 1 student student 0 Apr 30 15:09 song2.mp3
-rw-rw-r--. 1 student student 0 Apr 30 15:09 song3.mp3
-rw-rw-r--. 1 student student 0 Apr 30 15:09 song4.mp3
-rw-rw-r--. 1 student student 0 Apr 30 15:09 song5.mp3
-rw-rw-r--. 1 student student 0 Apr 30 15:09 song6.mp3
[student@desktop0 Desktop]$
把上出創建的songX.mp3文件移動到Music目錄下
[student@desktop0 Desktop]$ mkdir Music
mkdir: cannot create directory ‘Music’: File exists
[student@desktop0 Desktop]$ mv song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3 ./Music/
[student@desktop0 Desktop]$ ls
Music
在用戶家目錄下創建三個目錄,分別爲 friends,family,work
[student@desktop0 Desktop]$ mkdir friends family work
切換到friends目錄下,把Music目錄下的song1.mp3 ~ song3.mp3 拷貝到當前目錄
老師方法:
[student@desktop0 friends]$cp ../Music/song1.mp3 ../Music/song2.mp3 ../Music/song3.mp3 。、
我的方法:
[student@desktop0 friends]$ cp /home/student/Desktop/Music/song1.mp3 ./
[student@desktop0 friends]$ cp /home/student/Desktop/Music/song3.mp3 ./
[student@desktop0 friends]$ ls
song1.mp3 song3.mp3
切換到family目錄下,把Music目錄下的song4.mp3 ~ song6.mp3 移動到當前目錄
老師方法:
[student@desktop0 family]$mv ../Music/song1.mp4 ../Music/song1.mp5 ../Music/song1.mp6 ./
我的方法:
[student@desktop0 family]$ mv /home/student/Desktop/Music/song4.mp3 ./
[student@desktop0 family]$ mv /home/student/Desktop/Music/song6.mp3 ./
[student@desktop0 family]$ ls
song4.mp3 song6.mp3
[student@desktop0 family]$
切換到用戶主目錄
刪除family目錄
[student@desktop0 ~]$ rm -r /home/student/family
切換到friends目錄,把目錄下的所有文件刪除
[student@desktop0 friends]$ rm ./*
切換到主目錄,把friends目錄刪除.
[student@desktop0 ~]$ rm -r friends