Linux目錄指令
mkdir 目錄創建
mkdir [option] [parameter]
選項
-
-p
遞歸創建(創建/Gumdan/...
)
[root@localhost~]#mkdir ~/Desktop/Gumdan
[root@localhost~]# mkdir ~/Desktop/Gumdan/season
mkdir: /Users/Gumdam/Desktop/Gumdan: No such file or directory
[root@localhost~]# mkdir -p ~/Desktop/Gumdan/season
當要創建/Gumdan/season
的時候/Gumdan
不存在的話要是用-p
才可以進行創建。
cd 切換目錄
簡化指令 | 功能 |
---|---|
cd / | 進入根目錄 |
cd ~ | 進入家目錄 |
cd | 進入家目錄 |
cd - | 進入上一次目錄(切換前) |
cd .. | 進入上一級目錄 |
cd . | 進入當前目錄(沒有用) |
可以利用pwd
查看自己的目錄位置,cd
值得一說的一點是它是shell原本內建(自帶)的命令,可以使用搜索指令查詢得知:
[root@localhost~]# which cd
cd: shell built-in command
除了cd
是shell自帶命令以外,其實還有很多指令是自帶的,例如:alias
、bg
、fg
、echo
使用cd
指令的時候需要考慮路徑的問題,路徑分為相對路徑和絕對路徑,相對路徑是參照目前目錄位置去執行的路徑,絕對路徑是則可以因為不用參照路徑,所以可以在任何目錄中執行。
相對路徑 | 絕對路徑 |
---|---|
../usr/local/src |
/usr/local/src |
[root@localhost~]# pwd
/root # 參照目錄為 /root
[root@localhost~]# cd ../usr/local/src
[root@localhost src]# pwd
/usr/local/src ## 參照目錄為 /usr/local/src
[root@localhost~]# cd ../usr/local/src
cd: no such file or directory: ../usr/local ## 無法辨認 /usr、/local
[root@localhost src]# cd /usr/local/src ## 絕對路徑可以在任何位置使用
相對路徑要注意一點,當我當前目錄位置發生變化,原本可以執行的命令,就有可能不能執行,相對的絕對路徑就不會有這個問題,所以使用網路上面複製的指令時,要特別注意路徑是否正確。
在Linux當中有Tab
補全的功能,建議使用Tab
避免打字錯誤的狀況發生,在一些發行版本作業系統雖然指令使用方法雖然相同,但是可能會有一些小問題,比如我在Mac OS裡面的空格(blank space)在終端機上會顯示為\
,所以在不使用Tab
的狀況之下,打錯的可能性很高,使用Tab
可以減少不必要的錯誤。
[root@localhost ~/Desktop]# cd ## 按下 Tab 鍵會出現下方補全
\$RECYCLE.BIN/ Project.logicx/ Tools/ icircuit/
Gumdan/ Rmd\ to\ pptx/ cpp\ text/
[root@localhost ~/Desktop]# cd Rmd\ to\ pptx/ ##按 Tab 選出要的
rm 刪除文件或是目錄
rm [option] [file or directory]
選項:
-
r
刪除目錄 -
f
強制刪除
[root@localhost ~/Desktop]# mkdir abc
[root@localhost ~/Desktop]# rm abc
rm: abc: is a directory
[root@localhost ~/Desktop]# rm -r abc
rm: remove directory 'abc'? n
[root@localhost ~/Desktop]# rm -rf abc
在Linux上面的rm
指令不是Windows上面的刪除,它並不會把檔案送到回收桶,你刪了他就消失了,一般在使用rm
指令的時候都會直接使用rm -rf
來刪除檔案,因為刪除目錄的時候要有-r
、不加-f
的話有會被問是否刪除,所以一般常用rm -rf
。
[root@localhost ~/Desktop]# rm -rf /
rm
有一個要小心的地方,上面的這個指令真的不要打上去,這個指令會讓系統99%的數據被刪除,但是系統並不會崩潰,如果沒有raid陣列或是其他的保護檔案的措施的話文件是無法還原的,說簡單一點數據恢復牽涉的條件非常的廣,要盡量避免這種事情發生。
這是讓Linux自殺的指令,但是Linux卻會不誤的去執行它,令人不安心的是,在輸入路徑的時候這個是很可能不小心出現的錯誤,但是這也側面說明了在Linux上面使用者擁有很高的系統權限。
[root@localhost /]# rm -rf /bin
[root@localhost /]# rm -rf /bin/*
使用rm -rf
的時候還要注意一個地方不要刪錯一些系統目錄或是系統的掛載點,上面的指令中的/bin/*
是指/bin
目錄下面的內容,這個指令如果刪除/bin
的話會刪除/bin
這個系統目錄,這個是我們不希望發生的,如果刪除了像是/proc
、/sys
之類的掛在點可能就出大事情了。
cp 複製指令
cp [option] [source file] [target file]
選項
-
-r
複製目錄 -
-p
連帶文件屬性一起複製 -
-d
如果複製的文件是鏈接文件,複製鏈接屬性 -
-a
相當於-pdr
全部,一般使用-a
[root@localhost~]# cp install.log /tmp # 沒寫檔案名稱會原名複製
[root@localhost~]# cp install.log /tmp/knps # 複製后為knps
[root@localhost~]# cp Gumdan ~/Desktop # 要複製目錄要使用 -r
cp: Gumdan is a directory (not copied).
[root@localhost~]# cp -r Gumdan ~/Desktop # 保險一點使用 -a
在使用cp
指令的時候,如果只有給目標目錄位置,沒有給檔案名稱的話cp
指令會原名複製。
cp -a
[root@localhost~/Desktop]# date
2017年 3月 9日 周四 21時03分15秒 CST
[root@localhost~/Desktop]# ll a.out
-rwxr-xr-x 1 Gumdam staff 15K 3 6 21:51 a.out
[root@localhost~/Desktop]# cp a.out ~
[root@localhost~/Desktop]# cp -a a.out ~/b.out
[root@localhost~]# cd ~
[root@localhost~]# find *.out -exec ls -lh {} \;
-rwxr-xr-x 1 Gumdam staff 15K 3 9 21:13 a.out
-rwxr-xr-x 1 Gumdam staff 15K 3 6 21:51 b.out
如果單只是使用cp
的話其他的屬性是不會被複製的例如日期、鏈接...,所以只要記得使用-a
就可以了。如上面的指令有使用-a
複製出來的文件日期是3月6日,而沒有使用的話,日期就是今天的日期。
mv 搬移指令
mv [file or directory] [target directory]
[root@localhost~/Desktop]# mv -r Gumdan
mv: illegal option -- r
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
[root@localhost~/Desktop]# mv Gumdam ~
mv
和之前的rm
還有cp
不一樣,需要注意的之有它搬移目錄的時候不需要也不行使用-r
,這個是因為Linux是分散式的開發,所以會有這種開發上面是有興趣人去開發的,所以有些指令會有這種選項不一的問題存在。
Linux 目錄功用
[root@localhost~/Desktop]# cd /
[root@localhost~/Desktop]# ls
bin cgroup etc lib media mnt opt root
selinux sys usr boot dev home lost+found
misc net proc sbin srv tmp var
[root@localhost~/Desktop]# cd /usr
[root@localhost~/Desktop]# ls
bin etc games include lib libexec local sbin
share src tmp
[root@localhost~/Desktop]#
根目錄和/usr
目錄中的/bin
目錄和/sbin
是用來儲存系統命令用的目錄,/boot
目錄是放開機啟動數據的,/dev
目錄裡面放的是硬體相關的文件,這幾個文件沒事不用去動它,裡面是一般的使用者用不到的內容,其中/bin
和/sbin
的區別就是/bin
儲存一般使用者的指令,是所有使用這都可以使用的指令、/sbin
儲存超級使用者的指令。
/etc
目錄儲存系統的一些設定檔案,是很常用到的目錄。
/home
普通使用者的家目錄。
/root
是最高權限使用者的家目錄。
/lib
是Linux函數庫儲存的目錄,在Linux裡面啟動的時候所有函數都加載的話,啟動和執行的速度將會無比的緩慢,所以會把一些不常使用的函數庫放在/lib
裡面要是用的時候再調用,不使用就算了。
/mnt
、/media
、/misc
是Linux準備的三個掛載目錄,這三個目錄只要是空目錄就可以了,是留給使用者掛載設備用的,三個都可以使用,但是大部分人一般只使用/mnt
,因為在比較早的Linux裡面只有/mnt
這個掛載目錄。
/sys
、/proc
是儲存內存數據資料的,是內存記憶體的掛載點,是不能直接操作的,我們是不能在裡面寫資料的,第一,如果重新啟動會資料丟失、第二,如果丟太大的檔案記憶體又不夠,會系統崩潰。
/var
儲存特定於此系統的可變數據,在系統啟動之間保持永久性。動態變化文件(如:資料庫、緩存目錄、日誌文件、印表機後台處理文檔和網站內容等)。
一般可以隨便放檔案的目錄只有三個/home
、/root
、/tmp
,其他的目錄如果不清楚就不要去動它,還有不建議把所有的檔案儲存在根目錄/
下面,就像是把檔案全部放在Windows的桌面一樣,在使用上根目錄是非常常訪問的目錄,為操作方便,不要把所有的檔案放在根目錄。