第九天 檔案屬性與鏈結

2021-10-03 18:51:21 字數 4771 閱讀 5219

習題1: 使用awk取出系統的ip位址,思路如下:

1.我要取的ip值在** ifconfig yum install net-tools -y

2.如何縮小取值範圍(行)

3.如何精確具體內容(列)

方式1:

[root@localhost ~]# ifconfig ens32 | head -2 | tail -1 | awk ''

10.0.0.200

方式2:

[root@localhost ~]# ifconfig ens32 | grep 'netmask' | awk ''

10.0.0.200

方式3:

[root@localhost ~]# ifconfig ens32 | awk '/netmask /'

10.0.0.200

方法4:

命令sed 過濾

選項-n 取消原本預設輸出

p 匹配

-r 從檔案中讀

語法:sed -n '/匹配的內容/對匹配的內容做什麼動作' 匹配字串

示例:sed -n '/netmask/p'

sed -n '2p' 調出第二行的內容

[root@localhost ~]# ifconfig ens32 | sed -n '/netmask/'p | awk ''

10.0.0.200

方法5:

sed 's#替換檔案中什麼內容#替換成什麼#g' <<<<==擴充套件

inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255

() () () <--如何將內容塞到括號中去呢? 通過匹配的方式

<--又該如何呼叫()中的內容呢? \1

後向引用

[root@localhost ~]# ifconfig ens32 | sed -n 『2p』

inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255

[root@localhost ~]# ifconfig ens32 | sed -n 『2p』 | sed -r 『s#(^.et)(.)(net.katex parse error: expected 'eof', got '#' at position 2: )#̲\1#g' i…)#\2#g』

10.0.0.200

[root@localhost ~]# ifconfig ens32 | sed -n 『2p』 | sed -r 's#(^.et)(.)(net.$)#\3#g』

netmask 255.255.255.0 broadcast 10.0.0.255

[root@localhost ~]#

習題2:

將/etc/passwd檔案中的第一行中的第一列和最後一列位置進行交換。(自行指定以:為分隔符)

原始檔:root❌0:0:root:/root:/bin/bash

改變後:/bin/bash❌0:0:root:/root:root

awk:

[root@localhost ~]# head -1 /etc/passwd | awk -f 『:』 『』

/bin/bashx00root/rootroot

[root@localhost ~]# head -1 /etc/passwd | awk -f 『:』 『』

/bin/bash❌0:0:root:/root:root

習題3: 將/etc/sysconfig/selinux 檔案中的selinux=enforcing替換成selinux=disabled (sed)

過濾:grep

替換:sed

取什麼:awk

[root@localhost ~]# sed 『s#enforcing#disabled#g』 /etc/sysconfig/selinux

selinux=disabled

selinuxtype=targeted

[root@oldboy ~]# sed -i 『s#selinux=enforcing#selinux=disabled#g』 /etc/sysconfig/selinux

-rw-r–r--. 1 root root 26 mar 9 11:11 oldboy.txt

rw-r–r-- 2:許可權

1 3:表示硬鏈結數

root 4:這個檔案的擁有人是誰

root 5:這個檔案的擁有組是誰

26 6:檔案大小

mar 9 11:11 7、8、9:檔案建立或修改的時間

oldboy.txt 10:檔案的名稱

[root@oldboy ~]# ll -d /etc/hosts /tmp /bin/ls /dev/vda /dev/tty1 /etc/grub2.cfg /dev/log

-rwxr-xr-x. 1 root root 117680 10月 31 2018 /bin/ls

srw-rw-rw-. 1 root root 0 11月 13 23:03 /dev/log

crw–w----. 1 root tty 4, 1 11月 13 23:04 /dev/tty1

brw-rw----. 1 root disk 253, 0 11月 13 23:03 /dev/vda

lrwxrwxrwx. 1 root root 22 6月 4 2019 /etc/grub2.cfg -> …/boot/grub2/grub.cfg

-rw-r–r--. 1 root root 159 6月 4 2019 /etc/hosts

drwxrwxrwt. 11 root root 4096 3月 10 11:21 /tmp

使用ll 或者 ls -l 能夠區分出來的效果

-: 表示是乙個檔案( 普通檔案、指令碼檔案、壓縮檔案、命令檔案)

s: socket,程序與程序之間的通訊協議

c: 字元裝置(終端、鍵盤)

b: 塊裝置(磁碟)

l: 軟鏈結(快捷方式)

d: 表示乙個目錄

如何更精準的判斷他是乙個什麼型別的檔案?

使用file命令

1.ls -l 檢視

3.如果通過ls -l 或者是檔名稱的字尾無法定位檔案是乙個什麼型別,那麼我們可以使用file命令來確定?

因為 file命令判斷最準確

inode包含檔案的元資訊,具體來說有以下內容:

* 檔案的位元組數

* 檔案擁有者的user id

* 檔案的group id

* 檔案的讀、寫、執行許可權

* 檔案的時間戳

* 鏈結數,即有多少檔名指向這個inode

* 檔案資料block的位置

每個inode都有乙個號碼,作業系統用inode號碼來識別不同的檔案。

linux系統內部不使用檔名,而是使用inode號碼來識別檔案。對於系統來說,檔名只是inode號碼便於識別的別稱或者綽號。

表面上,使用者通過檔名,開啟檔案。實際上,系統內部這個過程分成三步:

首先,系統找到這個檔名對應的inode號;

其次,通過inode號,獲取inode資訊;

最後,根據inode資訊,找到檔案資料所在的block,讀出資料。

1.準備**1.1版本**

[root@localhost ~]# mkdir /data/rainbow-v1.1 -p

[root@localhost ~]# echo 「123」 > /data/rainbow-v1.1/index.html

#2.建立軟鏈結

[root@localhost ~]# ln -s /data/rainbow-v1.1/ /data/rainbow

[root@localhost ~]# ll /data/

total 0

lrwxrwxrwx. 1 root root 19 mar 10 16:47 rainbow -> /data/rainbow-v1.1/

drwxr-xr-x. 2 root root 24 mar 10 16:47 rainbow-v1.1

#3.檢查**程式

[root@localhost ~]# cat /data/rainbow/index.html

123#4.新更新乙個**的程式**

[root@localhost ~]# mkdir /data/rainbow-v1.2

[root@localhost ~]# echo 「456」 > /data/rainbow-v1.2/index.html

#5.公升級

[root@localhost ~]# rm -f /data/rainbow && ln -s /data/rainbow-v1.2/ /data/rainbow

[root@localhost ~]# cat /data/rainbow/index.html

456#6.回退

[root@localhost ~]# rm -f /data/rainbow && ln -s /data/rainbow-v1.1/ /data/rainbow

[root@localhost ~]# cat /data/rainbow/index.html

1235.硬鏈結與軟鏈結區別

ln命令建立硬鏈結,ln -s命令建立軟鏈結。

2)目錄不能建立硬鏈結,並且硬鏈結不可以跨越分割槽系統。

3)目錄軟鏈結特別常用,並且軟鏈結支援跨越分割槽系統。

4)硬鏈結檔案與原始檔的inode相同,軟鏈結檔案與原始檔inode不同。

5)刪除原始檔及其硬鏈結檔案,整個檔案會被真正的刪除。

集訓第九天

今天就看了乙個迪傑斯特拉演算法,他的方法就是從乙個頂點出發,找出這個到與它相關頂點的所有路徑,然後在找出其中最小的,作為基量,一次類推 如下 include define inf 0x7fffffff define maxn 50 int matrix maxn maxn void dijkstra...

開課第九天

畫布 1今天是開課第九天,上午講了關於方法的題,下午講了新知識,嗯,今天有點熱,下面就是本寶寶今天的收穫 1 過載 方法名相同,引數列表不同叫做過載,和返回值型別無關。過載方法名必須一致,引數列表不同,和返回值型別無關。引數列表不同 個數不同,順序不同,型別不同 方法過載的時候編譯器會自動找到最適合...

學習第九天

怎麼沒有題面?我怎麼知道?換個鏈結吧!向洛谷勢力低頭 我們畫一下這個小螞蟻走出來的圖形,我們就會發現,是乙個類似長城的形狀 這個題,求最大值,我們應該能很容易想到用動態規劃 那麼對於乙個路徑圍成的圖形,我們需要描述的是它的位置和形狀,所以這顯然是個高維的dp 位置很好描述,但是形狀太複雜了,我們怎麼...