echo的參數、date的參數、PATH、開關機、 vim快捷鍵
作者:George
歸檔:學習筆記
2017/12/28
本章正題:了解硬鏈接數、 echo的參數、date的參數、PATH、開關機、 vim快捷鍵
1.1 第三關剩余練習題
1.1.1 取出ip地址,awk 指定多把分割符,用 |
[root@georgekai oldboy]# ifconfig eth0 | awk -F "addr:| Bc" 'NR==2{print $2}'
10.0.0.203
1.1.2 找出網卡配置文件中IPADDR的行
方法一:
[root@georgekai oldboy]# grep -i 'ipaddr' /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.203
註: -i #進行過濾不區分大小寫 == igone
方法二:
[root@georgekai oldboy]# sed -n '/^IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.203
方法三:
[root@georgekai oldboy]# awk '/IPADDR/' /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.203
方法四:
[george@georgekai ~]$ egrep '^I.*[0-9.]{1,3}' /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.203
方法五:
[george@georgekai ~]$ awk --re-interval '/^I.*[0-9]{1,3}/' /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.203
註:awk 默認不認識 {} , 需要--re-interval 參數的輔助
方法六:
[george@georgekai ~]$ sed -nr '/^IP.*[0-9]{1,3}/p' /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.203
註:sed 默認不認識擴展正則的符號,需要 -r 參數的輔助
1.1.3 linux下通過mkdir創建一個新目錄/oldboy/ett,ett的連接數是為多少,為什麽?
例1:
[root@georgekai oldboy]# ls -ldi /oldboy/ett
261648 drwxr-xr-x. 2 root root 4096 Dec 28 08:58 /oldboy/ett
[root@georgekai oldboy]# ls -ldi /oldboy/ett/.
261648 drwxr-xr-x. 2 root root 4096 Dec 28 08:58 /oldboy/ett/.
註:1. . 表示當前目錄,所以他的Inode號和ett目錄本身一樣
2. ls -a 查看隱藏文件和目錄
例2:
[root@georgekai oldboy]# ls -ldi /oldboy/
261636 drwxr-xr-x.3 root root 4096 Dec 28 08:58 /oldboy/
[root@georgekai oldboy]# ls -ldi /oldboy/ett/..
261636 drwxr-xr-x. 3 root root 4096 Dec 28 08:58 /oldboy/ett/..
註:他的子目錄裏面都包含一個.. 表示上一級沒有,也就是oldboy 所有Inode號一樣
1.1.4 請給出redhat默認情況eth0網卡配置文件的路徑及客戶端DNS的路徑
[root@georgekai oldboy]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 網卡配置文件
[root@georgekai oldboy]# vim /etc/resolv.conf DNS配置文件
1.1.5 【企業案例】:查找當前目錄下所有文件,並把文件中的www.etiamtian.org字符串替換換成www.oldboyedu.com
方法一:
[root@georgekai oldboy]# find -type f | sed 's#www.etiantian.org#www.oldboyedu.com#g' -i
方法二:
[george@georgekai ~]$ sed 's#www.etiantian.org#www.georgekai.com#g' $(find -type f) -i
1.1.6 企業案例:企業網站中病毒
從發現到解決的過程:
1、運營人員、網站用戶發現問題,網站有彈窗廣告。
2、運營人員報給開發人員,開發聯系運維人員。開發和運維共同解決。
3、開發發現的問題原因就是所有站點目錄被嵌入了一段JS代碼。
4、運維人員解決問題:
a) 備份原始出問題的原始文件。
b) 歷史備份覆蓋。
c) find+sed替換。
5、詳細查看日誌,尋找問題發生來源。
6、提供亡羊補牢解決方案
1.1.7 echo 常用的參數 -n \n \t
例1; -n 表示取消了默認的回車,可以在一行顯示
[root@georgekai oldboy]# echo -n "oldboy"
oldboy[root@georgekai oldboy]#
例2:\n 表示回車鍵(換行) , -e 表示使echo能識別轉義 符號系列(\n \t)
[root@georgekai oldboy]# echo -e "a\nb"
a
b
例3: \t 表示加一個tab鍵
[root@georgekai oldboy]# echo -e "a\nb\tc"
a
b c
1.1.8 問題:請給出如下格式的 date 命令
例:11-02-26。在給出實現按周輸出 比如:周六輸出為 6,請分別給出命令。
例1:顯示年-月-日
[root@georgekai ~]# date +%F
2017-12-28
註:1. date + 表示按什麽格式來顯示,如date +%F ,表示年月日 == date +%Y-%m-%d
2. man date 一般格式都在最後面
例2:顯示時:分:秒
[root@georgekai ~]# date +%T
10:14:56
註:1. date +%T === date +%H:%M:%S
例3:顯示時-分-秒_星期
[root@georgekai ~]# date +%F_%w
2017-12-28_4
註; 1. man date 後面有顯示,0 代表周日
例4:顯示當前日期的10天之前是哪一天
[root@georgekai ~]# date -d "-10day" +%F
Wed Dec 27 10:29:16 CST 2017
註:1. -d 安裝你的描述顯示日期
2. +%F 不能放到-d 和"-10day"中間
例5:顯示3天前的日期,格式為:年-月-日_小時_星期
[root@georgekai ~]# date +%F_%H_%w -d "-3day"
2017-12-25_10_1
註:建議使用%H顯示小時就可以了,%T會顯示冒號,避免與其他特殊字符沖突
1.1.9 修改當前時間
例1:臨時修改時間
[root@georgekai ~]# date -s "20171212 12:12:12"
Tue Dec 12 12:12:12 CST 2017
例2:自動向時間服務器更新時間
[root@georgekai ~]# ntpdate ntp1.aliyun.com
28 Dec 10:44:39 ntpdate[5955]: step time server 182.92.12.11 offset 1377013.589035 sec
註:1. ntp1.aliyun.com 是阿裏雲的時間服務器
2. pool.ntp.org 國外的官方時間服務器
3. 如果時區不對,時間也是不一樣的, PTS 世界標準時間,CUT 中央標準時間
例3:如果時間不對,使用下面倆條命令查看/etc/service
修改時區的配置, 用sz rz 將其他虛擬機的配置文件替換一份。
[root@georgekai ~]# file /etc/services
/etc/services: ASCII English text
[root@georgekai ~]# ls -lh /etc/services
-rw-r--r--. 1 root root 626K Mar 22 2017 /etc/services
date命令總結:
1. 按照制定格式顯示時間
#%F 年月日
#%T 時分秒
#%w 星期
2. 按照你說的說明顯示日期 -d
3. 臨時修改時間,自動同步時間,修改時區
1.2 問題:當從 root 用戶切到普通用戶時,執行 ifconfig 會提示。
1.2.1 臨時——修改PATH環境變量
[root@georgekai ~]# export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
註:1. 這些只是外部命令,內置命令還可以使用
2. 有些命令即屬於外部命令,也屬於內部命令。如echo
1.2.2 永久——修改PATH環境變量
註:將臨時修改的命令放在最後面,然後用source /etc/profile 使配置文件生效即可
[root@georgekai ~]# vim /etc/profile
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
1.3 下列路徑的內容是做什麽的?
/var/log/messages 系統默認的日誌
/var/log/secure 用戶登錄信息
/etc/fstab 開機自動掛載 (在開機的時候設備對應什麽入口)
/etc/hosts 解析主機名 (ip地址與主機名的對應關系)
註:man hosts 還可以查看系統的配置文件使用方法
/etc/profile 存放環境變量(PS1 PATH)、別名
/var/spool/cron/root 定時任務的配置文件
1.4 用命令找出ifconfig的全路徑。
例1:which
[root@georgekai ~]# which ifconfig
/sbin/ifconfig
例2:find
[root@georgekai ~]# find / -type f -name "ifconfig"
/sbin/ifconfig
例3:whereis 可以找出命令的位置和相關信息
[root@georgekai ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
例4:locate 根據名字找出文件所在的位置,會根據數據庫查找,所以很慢
[root@georgekai ~]# locate ifconfig
/sbin/ifconfig
/usr/sbin/pifconfig
/usr/share/man/de/man8/ifconfig.8.gz
註:uodatedb 更新數據庫 (不常用,因為很慢,消耗比較大)
1.5 關機和重啟服務器的命令
1.5.1 重啟
例1:shudown -r now
[root@georgekai ~]# shutdown -r now
註:1. -r 重啟
2. now 立刻,馬上
3. 建議使用,不會立馬重啟
4. -r 後面加10 ,表示10分鐘後重啟
例2:reboot
[root@georgekai ~]# reboot
例3:init 6
[root@georgekai ~]# init 6
註:有可能丟失數據
1.5.2 關機
例1:shutdown -h now
[root@georgekai ~]# shudown -h now
註:1. -h 關機
2. now 立刻,馬上
3. -h 後面加 10 ,表示10分鐘後關機
4. 建議使用,不會立馬關機
例2:poweroff
[root@georgekai ~]# poweroff
例3:init 0
[root@georgekai ~]# init 0
註:有可能丟失數據
例4:halt
[root@georgekai ~]# halt
註:關閉系統,不會關閉電源,風扇還會轉
1.6 linux命令行的快捷鍵
Ctrl + a 把光標移動到行首
Ctrl + e 把光標制動到行尾
Ctrl + c 中斷當前命令的執行, 特殊情況yum install 中,需要連續多按幾次
Ctrl + d 退出當前用戶 / 刪除光標所在位置後一個字符
Ctrl + l 清屏
Ctrl + u 把光標所在位置到行首的內容剪切
Ctrl + k 把光標所在位置到行尾的內容剪切
Ctrl + y 粘貼
Ctrl + r 查找歷史命令,相當於 history | grep
Ctrl + s 鎖屏
Ctrl + q 解鎖
Ctrl + → 向右移動單詞的寬度
Ctrl + ← 向右移動單詞的寬度
1.7 vi /vim 快捷鍵
移動:
G 移動到文件的最後一行
gg 移動到文件的第一行
$ 把光標移動到行尾
0或^ 把光標移動到行首
編輯:
o 在當前行下一行插入空行並進入編輯模式
O 在行前行上一行插入空行並進入編輯模式
C 把光標所在位置到行尾的內容刪除並進入編輯模式
復制剪切粘貼:
yy 復制當前行的內容
p 粘貼 paste
dd 刪除當前整行內容
100gg 移動第100行
操作:
u 撤銷
ctrl+ r 恢復
特殊符號:
:set nu 顯示行號
:set nonu 取消顯示行號
/george 默認向下搜索,繼續往下搜索 n , 繼續向上搜索 N
?george 默認向上搜索
:noh 取消高亮顯示
echo的參數、date的參數、PATH、開關機、 vim快捷鍵