linux文件属性和类型
1.linux文件屬性
第一種查看方式
[root@beua ~]# ls -l ks.cfg-rw-------. 1 root root 4434 May 30 13:58 ks.cfg
?
-rw-------. ①:第一個字符是文件類型,其他則是權限
1 ? ②:硬鏈接次數
root ③:文件屬于哪個用戶
root ④:文件屬于哪個組
4434 ? ⑤:文件大小
May30 13:58 ⑥⑦⑧:最新修改的時間與日期
ks.cfg ⑨:文件或目錄名稱
2.linux文件類型
-rwxr-xr-x. 1 root root 117680 Oct 31 03:16 /bin/lssrw-rw-rw-. 1 root root 0 Apr 3 16:57 /dev/log
brw-rw----. 1 root disk 8, 0 Apr 3 16:57 /dev/sda
crw--w----. 1 root tty 4, 1 Apr 3 16:57 /dev/tty1
lrwxrwxrwx. 1 root root 22 Mar 28 03:33 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Apr 1 18:09 /etc/hosts
prw-------. 1 root root 0 Apr 3 16:57 /run/dmeventd-client
drwxrwxrwt. 22 root root 4096 Apr 3 20:57 /tmp
#最前面那個字母含義:
- 通常指的是文件 s socket文件(mysql) b block 塊設備(磁盤\分區光盤) c 字符設備 l 鏈接文件(呈現淺藍色) p 管道文件 d 目錄文件(呈現藍色狀態)
第二種查看方式:
當無法通過ls -l的屬性識別該文件是什么類型時,可以通過file進行查看
我們會將文件標注對應的后綴. .txt .sh .mp3 .mp4 .exe .zip Linux的文件加上后綴能夠便于我們快速的識別.這個文件是什么類型.
3.linux系統鏈接文件
#軟鏈接使用場景 1.軟件升級 2.企業代碼發布 3.不方便目錄移動
#先執行刪除,然后執行ln操作, && (&&前面的命令執行成功,則立即執行&&后面的命令)
[root@beua ~]# rm -f /root/qq && ln -s /root/qq_v1.2/ /root/qq #版本升級[root@beua ~]# rm -f /root/qq && ln -s /root/qq_v1.1/ /root/qq
4.硬鏈接與軟鏈接區別
1)ln命令創建硬鏈接,ln -s命令創建軟鏈接。 2)目錄不能創建硬鏈接,并且硬鏈接不可以跨越分區系統。 3)目錄軟鏈接特別常用, 并且軟鏈接支持跨越分區系統。 4)硬鏈接文件與源文件的inode相同,軟鏈接文件與源文件inode不同。 5)刪除軟鏈接文件,對源文件及硬鏈接文件無任何影響。 6)刪除文件的硬鏈接文件,對源文件及鏈接文件無任何影響。 7)刪除鏈接文件的源文件,對硬鏈接無影響,會導致軟鏈接失效。 8)刪除源文件及其硬鏈接文件,整個文件會被真正的刪除。
總結: 軟鏈接就是快捷方式,不同的inode同時指向同一個block,刪除軟鏈接,源文件沒有任何影響,刪除源文件則軟鏈接失效.
硬鏈接是多個相同的inode指向同一個block,其實就是用于給文件做備份.(只有刪除所有文件,硬鏈接才會失效)
*當前的磁盤空間還剩余500GB,但就是無法往里面寫入數據.
No space left on device 要不是真的沒有磁盤空間(),要么就是inode被占滿
5.linux命令執行流程(擴展)
⑴ping 探測對端主機是否存活
1) 命令是否通過絕對路徑執行 2) 命令是否存在alias別名 3) 用戶輸入的是shell內置命令還是外置命令 type -a 4) Bash內部命令直接執行,外部命令檢測是否存在緩存 5) 查找系統全局$PATH,變量中保存的全部都是命令存放的路徑,有執行,無報錯command not found.
內部命令: shell程序自帶的命令。 外部命令: 在系統PATH變量的某個路徑下的可執行程序。
⑶如何檢查用戶輸入的命令是內部命令還是外部命令
#cd命令屬于shell內部命令
? type -a cdcd is a shell builtin
cd is /usr/bin/cd
#ping屬于外部命令, 同時會打印當前命令路徑
? type -a ping? ping is /bin/ping
⑷如果是外置命令,Bash可以通過查找PATH變量,獲取該命令的絕對路徑。
#打印當前環境變量目錄
? [root@beua ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PS: PATH由多個路徑組成,每個路徑值之間用冒號間隔,對這些路徑的增加和刪除操作都將影響到Bash解釋器對Linux命令的查找
⑸如果是外置命令還會涉及到一個內存緩存,也就是說,當我們出現重復執行相同的命令,會通過緩存調取執行,也就意味著不會搜索PATH路徑。
#表緩存命令所在位置
[root@beuai ~]# hashhits command
1 /usr/bin/tty
3 /sbin/ifconfig
#已緩存命令,如果移動位置會導致無法找到該命令
[root@beua ~]# mv /sbin/ifconfig /bin/[root@beua ~]# ifconfig
-bash: /sbin/ifconfig: No such file or directory
#刪除緩存過的ifconfig命令, 即可執行
[root@beua ~]# hash -d ifconfig[root@beua ~]# ifconfig
#當然可以清空緩存表
[root@beua ~]# hash -r#注意: 命令緩存hash需要注意如下情況:
1.只要執行外部命令1次就會對該命令進行緩存 2.如果將命令移動了位置,該如何執行 a.使用絕對路徑執行 b.刪除hash表的緩存指令
總結: 命令執行的流程
1) 檢查執行的命令是否使用的是絕對路徑執行的。 2) 檢查ping命令是否存在alias別名 3) 檢查ping命令是內部命令還是外部命令 4) 如果是內部命令Bash直接執行,如果是外部命令,首先檢查Hash緩存,存在則直接調取 5) 如果該命令不存在Hash緩存,則通過PATH路徑進行逐行查找該命令所在的位置 6) 如果PATH路徑沒有查找到該命令所在的路徑,則返回錯誤碼。command not found
6.符號: 通配符
. #代表當前目錄,但文件名以點開頭則代表隱藏文件 如果在grep時,使用.代表匹配任意的單個字符 .. #代表上一級目錄, 上級目錄的inode和..的inode是一致(硬鏈接) /usr/local cd .. ~ #回到當前用戶的家目錄 * #所有 \ #轉義字符 # #命令行是不執行命令,但會保留在history中,文件中有#代表不執行 $() #小括號中必須是命令,與其類似的還有 `` > #標準重定向,會覆蓋文件的內容 ^ #在匹配字符的時候,以什么開頭 $ #在匹配字符的時候,以什么結尾 | #將左邊命令的輸出,交給右邊命令的輸入 || #前者命令執行不成功,后者命令執行 && #前者命令執行成功,后者命令則執行
! #調用歷史history中的命令 !Number !string
轉載于:https://www.cnblogs.com/longren/p/10735096.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的linux文件属性和类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: random(随机模块)
- 下一篇: Vue基础进阶 之 实例方法--生命周期