一、定義一個對所有用戶都生效的命令別名,例如:lftps='lftp 172.168.0.1/pub’
#使用管理員賬戶root(僅管理員賬戶可以管理全局配置文件)在/etc/bashrc下定義全局配置文件。
[root@localhost ~]#echo "lftaps=’lftp 172.16.0.1/pub’" >>/etc/bashrc
[root@localhost ~]# . /etc/bashrc
注意:source:在當前bash環境下讀取並執行FileName中的命令
.:打開一個子shell來讀取並執行FileName中命令
bash:在當前bash環境下讀取並執行FileName中的命令
二、顯示/etc/passwd文件中不以/bin/bash結尾的行`
[root@localhost ~]# grep -v '/bin/bash' /etc/passwd
三、找出/etc/passwd文件中,包含兩位數或者三位數的行
[root@localhost ~]# grep -E '\<[0-9]{2,3}\>' /etc/passwd
四、顯示/proc/meminfo文件中以大寫或小寫S開頭的行;用三種方式實現
#第一種方式
[root@localhost ~]#grep '^[sS]' /proc/meminfo
#第二種方式
[root@localhost ~]#grep -E '^(s|S)' /proc/meminfo
#第三種方式
[root@localhost ~]#grep -i '^s' /proc/meminfo
五、使用echo輸出一個絕對路徑,使用egrep取出路徑名,類型執行 dirname /etc/passwd的結果
#第一種方式
[root@localhost ~]#echo “/etc/sysconfig/network” | grep -Eo "./\<" /etc/sysconfig/
#第二種方式
[root@localhost ~]#echo "/etc/sysconfig/network" |sed -r 's@(^/./)([^/]+/?)@\1@' /etc/sysconfig/
六、找出ifconfig中的ip地址,要求結果只顯示IP地址
#第一種方式
[root@localhost ~]#ifconfig |grep -Eo "\<(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
#第二種方式
[root@localhost ~]#ifconfig ens33 |sed -r '2!d;s@(.*inet )(.*)( net.*)@\2@'
七、vim定製自動縮進四個字符
在/etc/vimrc配置文件底部增加如下字符:
set ts=4 #設置縮進4個字符
八、編寫腳本,實現自動添加三個用戶,並計算這三個用戶的UID之和
[root@localhost ~]# vim summation.sh
#!/bin/bash
useradd user1
useradd user2
useradd user3
echo "$[$(id -u user1)+$(id -u user2)+$(id -u user3)]"
[root@localhost ~]# bash summation.sh
15045
九、find用法以及常用用法的實例演示。
Linux文件中查找文件是一件相當繁瑣的事情,因爲Linux系統中所有的文件可以以任何的後綴名進行命名,所以Linux中有許多工具用來進行查找文件,例如find命令。
find的命令是一種實時查找工具,通過遍歷指定起始路徑下的文件系統層級機構完成文件查找
工作特點:查找速度略慢,精確查找,實時查找。
find命令:
用法:
find [OPTIONS] [查找起始路徑] [查找條件] 【處理動作】
查找起始路徑:指定具體搜索目標起始路徑;默認爲當前目錄
查找條件:指定的查找標準,可以根據文件名,大小,類型,屬主,屬組,權限等等標準進行,默認爲找出指定路徑下的所有文件
處理動作:對符合查找條件的文件做出的操作,例如:刪除等操作,默認爲輸出至標準輸出。
查找條件:
根據文件名查找:
-name "pattern":
-inmae "pattern":不區分大小寫
支持glob風格的通配符:*,?,【】,【^】
示例:
[root@localhost ~]# find . -name "*fstab*"
./fstab
#在當前目錄下查找含有“fstab”字符串的文件
根據文件的從屬關係查找:
-user USERNAME:查找屬主指定用戶的所有文件
-group GRPNAME:查找屬組指定組的所有文件
-uid UID:查找屬主指定UID的所有文件
-gid GID:查找屬組指定GID的所有文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
示例:
[root@localhost ~]# find /tmp -user ydong -ls
#查找tmp目錄下屬主爲ydong的所有文件和目錄
[root@localhost ~]# find ./ -group white -ls
206703397 4 -rw-r--r-- 1 ydong white 541 2月 22 11:57 ./fstab
#查找當前文件目錄下屬組爲white的所有文件和目錄
[root@localhost ~]# find /tmp -uid 1000 -ls
#在tmp目錄下查找屬主UID號爲1000的所有文件和目錄
[root@localhost ~]# find ./ -gid 5015
#在當前路徑下查找屬組GID號爲5015的所有文件和目錄
[root@localhost ~]# find /etc -nouser -ls
137888778 0 -rw-r--r-- 1 5010 5011 0 2月22 22:22 /etc/test2
137888780 0 -rw-r--r-- 1 5010 5011 0 2月22 22:22 /etc/test3
#查找etc目錄下沒有屬主的所有文件和目錄
[root@localhost ~]# find /etc -nogroup -ls
137888693 0 -rw-r--r-- 1 white 5014 0 2月22 22:22 /etc/test1
#查找etc目錄下沒有屬組的所有文件和目錄
根據文件的類型查找:
-type TYPE:
TYPE
↓
f:普通文件
d: 目錄文件
l:符號鏈接文件
b:塊設備文件
c:字符設備文件
p:管道文件
s:套接字文件
示例:
[root@localhost ~]# find /dev -type l -ls
#查找dev目錄下所有符號鏈接文件
[root@localhost ~]# find /dev -type b
/dev/dm-2
/dev/dm-1
#查找dev目錄下所有塊設備文件
組合測試:
與:-a,默認組合邏輯;
或:-o ,只要符合二者其一
摩根定律:
!A -a !B=!(A -o B)
!A -o !B=!(A -a B)
示例:
[root@localhost ~]# find /tmp/test -not -user root -a -not -name "*fstab*" -ls
68957951 0 -rw-r--r-- 1 white blue 0 2月23 00:01 /tmp/test/test1
68958014 0 -rw-r--r-- 1 white blue 0 2月23 00:01 /tmp/test/test2
#查找/tmp/test下屬主不是root,而且也不包含“fstab”字符串的文件
第二種寫法:
[root@localhost ~]# find /tmp/test -not \( -user root -o -name "*fstab*" \)
根據文件的大小查找:
-size【+|-】#UNIT
常用單位UNIT:k,M,G、
範圍區間:
#UNIT:#-1<文件<=# 如: 6k 表示(5k,6k]
-#UNIT:0<=文件<=#-1 如:-6k 表示[0,5]
+#UNIT: #>文件<無窮大 如:+6k 表示(6,∞]
示例:
[root@localhost ~]# find /var -size +10M -exec ls -lh {} \;
-rw-r--r--. 1 root root 72M 2月 22 12:09 /var/lib/rpm/Packages
-rw-r--r--. 1 root root 30M 11月 26 00:00 /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite
...
#查找/var目錄下大於10M的文件
根據時間戳查找:
以“天”爲單位:
-atime:支持【+|-】#
-mtime:
find /usr -mtime -4 查找文件更新日時在距現在時刻4天以內的文件
find /usr -mtime +4 查找文件更新日時在距現在時刻5天以上的文件
find /usr -mtime 4 查找文件更新日時在距現在時刻4天以上5天以內的文件
-ctime
以“分鐘”爲單位:
-amin:
-mmin:
-cmin:
示例:
[root@localhost ~]# find /etc -mtime -4 -ls
137888693 0 -rw-r--r-- 1 white 5014 02月22 22:22 /etc/test1
....
[root@localhost ~]# stat /etc/test1
文件:"/etc/test1"
大小:0 塊:0 IO 塊:4096 普通空文件
設備:fd00h/64768d Inode:137888693 硬鏈接:1
權限:(0644/-rw-r--r--) Uid:( 5014/ white) Gid:( 5014/ UNKNOWN)
環境:unconfined_u:object_r:etc_t:s0
最近訪問:2019-02-22 22:22:30.330480989 +0800
最近更改:2019-02-22 22:22:30.330480989 +0800
最近改動:2019-02-22 23:39:33.344090312 +0800
#查找/etc目錄下4天以內修改過的文件
根據權限查找:
-perm【/|-】mode:
mode:精確權限查找
/mode: 任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足
9位權限之間存在“或”關係
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足
9位權限之間存在“與”關係
示例:
[root@localhost ~]# find ./ -perm -222 -ls
#u,g,o三類用戶都必須有寫權限才能匹配
[root@localhost ~]# find ./ -perm /222 -ls
#u,g,o三類用戶中只要有一位有寫權限就能匹配
處理動作:
-print: 將查找的路徑輸出至標準輸出。默認動作
-ls: 類似於對查找到的文件執行“ls -l”命令,輸出文件的詳細信息
-delete:刪除查找到的文件,,
-fls /PATH/TO/SOMEFILE: 把查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; (固定格式) :對查找到的每個文件執行由COMMAND表示的命令,每次都由用戶確認
-exec COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令
示例:
[root@localhost ~]# find ./ -name "test1" -ok rm -rf {} \;
< rm ... ./test1 > ? y
#匹配查找到test1文件之後進行刪除操作,並向用戶確認
[root@localhost ~]# find ./ -name "*test*" -fls ./hello.txt
[root@localhost ~]# cat hello.txt
206703362 0 -rw-r--r-- 1 5011 5012 0 2月23 00:48 ./test2
206701816 4 -rwxr-xr-x 1 root root 42 2月16 23:10 ./test3.sh
3401882 0 drwxr-xr-x 2 root root 6 2月23 00:00 ./test
#把匹配查找到的含有“test”字符串的文件以長格式信息存儲在hello文本中