Linux命令基本格式
[root@localhost~]#
其中表示意義如下表:
標記 | 意義 |
---|---|
root: | 當前登錄的目錄 |
localhost | 主機名稱 |
~ | 家目錄(這個位置放當前所在目錄) |
|表示超級用戶(普通用戶為$)
pwd
[root@localhost~]# pwd
pwd
指令可以顯示當前的絕對路徑,所以如果我在~
的目錄下面使用pwd
的話,用該要顯示/root/home/
這個家目錄才對。
命令格式
命令 [option] [parameter]
其中選項(Option)又分為簡化選項和完整選項比如ls
中的簡化選項-a
的完整選項就是--all
,簡化選項和完整選項的功能是一樣的。
ls [Option] [file or directory]
選項:
-
-a
顯示所有文件,包括隱藏文件 -
-l
顯示詳細訊息 -
-d
查看目錄屬性 -
-h
人性化的顯示文件大小(2023389->1.9M) -
-i
顯示inode number
ls -a
[root@localhost~]# ls -a
anaconda-ks.cfg .bash_profile .cshrc
Linux裡面(.)開頭的文件就是隱藏文件,這個指令下了之後會顯示所有文件,包括隱藏的文件,在上面的範例之中.cshrc
就是隱藏文件。
ls -l
[root@localhost~/Desktop]# ls -l
-rwxrwxrwx@ 1 root staff 7056122 8 11 2015 the-swift.pdf
drwxr-xr-x 4 root staff 136 3 8 20:21 Rmd to pptx
# 權限 #軟連接次數 #所文件用者 ##檔案大小 ##日期 ##檔案名稱
#引用計數 ##檔案大小不人性化
權限
-
rw--r--r--
在說權限之前,要先比較一下Linux和Windows之間文件類型,Linux不像是Windows有明顯區分擴展名,Linux的軟體、硬體都是以文件形式儲存的,不管是目錄、設備...都是以文件的方式儲存的,他們的差別就只有權限。
權限默認一般有十位的字,其中第一位-
為文件類型,文件類型最常見的有三個分別是文件-
、目錄d
、軟連接文件l
,後面九個數字分別代表各種用戶所持有的權限,每三位數為一組,分別為檔案擁有者、加入此群組之帳號的權限、非本人且沒有加入本群組之其他帳號的權限,簡略的說有三個組:u所屬者、g所屬組、o其他人,而顯示的字符有讀(r)、寫(w)、執行(x)三種權限。
權限說白了就是文件和用戶之間的關係,明確各個身份所持有的權限(讀、寫、執行)
其實文件類型除了這些以外還有四種文件類型塊設備文件b
、字符設備文件c
、套接字文件s
、管道文件p
,但是並不常用只要大概知道就可以了,因為這些內容不需要普通用戶做操作。
最近的Linux權限有時候在十個位數後面會有一個(.
),例如:-
rw--r--r--.,這個(.
)官方並沒有明確定義,但是在使用經驗上面知道這個大概是代表(ACL權限),除此之外在Mac OS上面甚至還有@
,例如:-rw-r--r--@,這些類型大概知道一下就可以了。
- | rw- | r-- | r-- |
---|---|---|---|
- 、d 、l
|
u所屬者 | g所屬組 | o其他人 |
ls -d
[root@localhost~/Desktop]# ls -d
.
[root@localhost~/Desktop]# ls -ld
drwxr-xr-x+ 53 Gumdam staff 1802 3 11 16:46 .
-d
這個選項單獨使用時是沒有意義的,因為ls -l
並沒有辦法顯示當前目錄的資料,因為我的Desktop沒有檔案,所以沒有任何的資訊,Linux當中目錄也是檔案,而這個檔案的權限我們無法得知,而這個-d
可以讓我們可以查看目錄的屬性。
ls -h
[root@localhost~/Desktop]# ls -h
Adlm Downloads Untitled-figure
Applications Library Untitled.Rpres
[root@localhost~/Desktop]# ls -lh \dev
crw------- 1 root wheel 13, 1 3 7 21:10 afsc_type5
crw-rw-rw- 1 root wheel 18, 1 3 7 21:10 cu.Bluetooth-Incoming-Port
brw-r----- 1 root operator 1, 0 3 7 21:10 disk0
brw-r----- 1 root operator 1, 1 3 7 21:10 disk0s1
brw-r----- 1 root operator 1, 3 3 7 21:10 disk0s2
brw-r----- 1 root operator 1, 2 3 7 21:10 disk0s3
### ....etc
### 權限 ##檔案大小人性化
-h
這個選項單獨使用時是沒有什麼意義的,因為這個選項是讓我的ls
指令中的內容可以人性化的顯示檔案大小,但是單是在ls -h
這個指令下面並不會有檔案大小所以使用的效果和ls
是一樣的。
ls -lh 等於 ll
## ls -lh 等同 ll
[root@localhost~]# ls -lh
[root@localhost~]# ll
這兩個指令是等同的,可以使用搜索指令去查ll
會顯示如下:
## which 查詢命令的別名(wereis 可查詢命令、幫助文檔的位置)
[root@localhost~]# which ll
ll: aliased to ls -lh
除了這個樣子查詢以外,還可以使用alias
透過指令的別名查詢指令指令的全名,比如我看到一個叫做gstd
的指令,我不知道它是什麼指令,我就可以使用alias
來查詢:
[root@localhost~]# alias _
_=sudo
ls -i
[root@localhost~]# ls -i ~/Desktop
3355431 $RECYCLE.BIN
454344 -the-swift-programming-language-.pdf
4753760 Orphans no Namida.mp3
453557 Command_line.pdf
# inode number #filename
inode number 介紹
Unix的時候,利用inode來取資料的方式就已經有了,在Linux上面也是使用這種資料查找資料,在Linux上面每一個檔案都有一個inode number,就大家所知道的檔案儲存在硬碟的位置是不固定的,首先,假設你的硬碟被格式化成了ex4檔案系統,會建立一個inocde table查找表,你的硬碟被切成了好幾個等大小的數據塊,每一個數據塊可以儲存4KB的檔案,如果我有一個10KB的檔案儲存了進去,它並不會連續的儲存,假設它分別儲存了4KB在Proc A、4KB在Proc B、2KB在Proc C。
講到這裡有一個問題,我這個10KB的文件儲存了進去有一個區塊只有儲存2KB的資料,那麼這個區塊還可以儲存其他的資料嗎?答案是不行的,有興趣可以自己去研究,數據塊不是只能切成每4KB一個區塊,默認是4KB,但是其實是可以0KB、2KB、4KB三種的。
在查找表裡面會記錄inode nuber(ID號碼)、修改時間、權限以及要抓資料的區塊位置。Linux中檔案在開啟的時候就是利用這個概念去抓資料的,首先讀取到inode number,再確認權限,如果不匹配就直接拒絕,匹配的話就會把數據塊中的資料抓給使用者使用。