Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Linux目錄指令

More than 3 years have passed since last update.

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自帶命令以外,其實還有很多指令是自帶的,例如:aliasbgfgecho

使用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的桌面一樣,在使用上根目錄是非常常訪問的目錄,為操作方便,不要把所有的檔案放在根目錄。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away