習題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 位置很好描述,但是形狀太複雜了,我們怎麼...