1. 程式人生 > >Linux 基礎知識(三)

Linux 基礎知識(三)

mem string 小寫 int 時間戳 通配 基礎 test str

一、定義一個對所有用戶都生效的命令別名
alias td=‘tcpdump -i ens192 -nnv not port 65022‘

二、顯示/etc/passwd文件中不以/bin/bash結尾的行
grep -v "/bin/bash$" /etc/passwd

三、找出/etc/passwd文件中,包含二位數字或者三位數字的行
grep "\<[0-9]{2,3}\>" /etc/passwd
grep "\<[[:digit:]]{2,3}\>" /etc/passwd

四、顯示/proc/meminfo文件中以大寫或小寫S開頭的行;用三種方式實現


grep -i "^s" /proc/meminfo
grep "^[s|S]" /proc/meminfo
sed -n "/^[s|S]/p" /proc/meminfo

五、使用echo輸出一個絕對路徑,使用egrep取出路徑名,類似執行dirname /etc/passwd的結果
echo /etc/sysconfig | grep -E -o "[^/]+/?$"

六、找出ifconfig中的ip地址。要求結果只顯示IP地址。
ifconfig | sed -En ‘s/.inet (addr:)?(([0-9].){3}[0-9]).

/\2/p‘

七、vim定制自動縮進四個字符
vim .vimrc
set ai
set ts=4

八、編寫腳本,實現自動添加三個用戶,並計算這三個用戶的uid之和。
#!/bin/bash
#
sum=0
for account in user1 user2 user3
do
if id $account &> /dev/null
then echo "$account exists"
else
useradd $account
fi
uid=$(id -u $account)
sum=$[$sum+$uid]
done
echo "sum_id = $sum"

九、find用法及常用用法的實例演示


-name string:根據文件名精確查找,可用glob通配符。
-iname string:不區分大小寫的-name。
-regex PATTERN:根據正則查找,匹配範圍是整個路徑,比如要查找./fubar3,應該用.bar.或.b.3’,而不是f.r3。
-user USERNAME/UID:查找指定屬主的文件。
-group GNAME/GID:查找指定屬組的文件。
-uid UID:查找指定屬主的文件
-gid GID:查找指定屬組的文件。
-nouser:查找沒有屬主的文件。
-nogroup:查找沒有屬組的文件。
-type [fdcblps]:根據文件類型查找。
-size [+-]n:根據文件大小查找,可用單位[bcwkMG];+表示大於,-表示小於,不加表示精確匹配(也沒那麽精確,10M表示9-10M都符合條件)
-mtime [+-]days:-表示days內修改過,+表示days前修改過,不加表示正好在days修改過。
-ctime [+-]days:改變時間,+-含義同-mtime。
-atime [+-]days:訪問時間,+-含義同-mtime。
-mmin n:n分鐘前修改過文件內容,
-cmin n:n分鐘前文件改變過。
-amin n:n分鐘前文件被訪問過。
-perm [=-/] MODE:按權限查找,-表示文件權限是MODE超集,/和+表示權限中只要有一位能匹配就符合,不指定任何符號表示精確匹配。

根據文件的類型查找:
typeTYPE:
f:普通文件
d:目錄文件
l:符號鏈接文件
b:塊設備文件
c:字符設備文件
p:管道文件
s:套接字文件

組合測試:
與:-a,默認組合邏輯;
或:-o
非:-not,!
根據文件的大小查找:
-size[+|-]#UNIT
常用單位:k,M,G

#UNIT:(#-1,#]
-#UNIT:[0,#-1]
+#UNIT:(#,oo)

根據時間戳查找:
以“天”為單位:
-atime[+|-]#訪問時間
#:[#,#-1)
-#:(#,0]
+#:(oo,#-1]
-mtime修改時間–n +n 按文件更改時間查找 –n n天內, +n n天前
-ctime修改時間

以“分鐘”為單位:
-amin
-mmin
-cmin

根據權限查找:
-perm[/|-]mode
mode:精確權限匹配;/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足;

處理動作:
-print:輸出至標準輸出;默認的動作;
-ls:類似於對查找到的文件執行“ls-l”命令,輸出文件的詳細信息;
-delete:刪除查找到的文件;
-fls/PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
-okCOMMAND{}\;:對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶進行確認;
-execCOMMAND{}\;:對查找到的每個文件執行由COMMAND表示的命令;

實例演示

查找root目錄下所有文件名為test.txt的文件
find /root -name test.txt

查找文件忽略文件名的大小寫
find /root -iname test.txt

根目錄下查找目錄名為test的目錄
find / -type d -name test

查找root目錄目錄下的所有txt文件
find /root -type f -name "*.txt"

查找權限為664的文件
find / -perm 644

查找大小為10M的文件
find / -size 10M -ls

查找文件大小在1M-10M之間的文件
find / -size +1M -size -10M -ls

查找最近7天修改過的文件
find / -mtime 7
查找最近7天被訪問過的文件
find / -atime 7

找到txt類型的文件並刪除
find . -type f -name "*.txt" -exec rm -f {} \;

找到權限為755的目錄並改為777find /root -type d -perm 755 -print -exec chmod 777 {} \;

Linux 基礎知識(三)