Linux學習之例項應用-1
阿新 • • 發佈:2019-01-05
1、定義一個對所有使用者都生效的命令別名
[[email protected] ~]# vim ~/.bashrc ==>開啟.bashrc資料夾
alias ud='useradd' ==>新增別名
2、顯示/etc/passwd中不以/bin/bash結束的行
[[email protected] ~]# grep -v "/bin/bash\b" /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:997:996:User for polkitd:/:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin chrony:x:991:988::/var/lib/chrony:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin sssd:x:989:986:User for sssd:/:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin
3、找出/etc/passwd檔案中,包含二位或三位數字的行
[[email protected] ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:997:996:User for polkitd:/:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin chrony:x:991:988::/var/lib/chrony:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin sssd:x:989:986:User for sssd:/:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin
4、顯示/proc/meminfo檔案中以大寫或小寫s開頭的行;用三種方式實現
第一種
[[email protected] ~]# grep "^[s,S]" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 7344 kB
Slab: 102424 kB
SReclaimable: 52644 kB
SUnreclaim: 49780 kB
第二種
[[email protected] ~]# grep "\<[s,S]" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 7344 kB
Slab: 102432 kB
SReclaimable: 52644 kB
SUnreclaim: 49788 kB
第三種
[[email protected] ~]# grep "\b[s,S]" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 7344 kB
Slab: 102480 kB
SReclaimable: 52644 kB
SUnreclaim: 49836 kB
5、使用echo輸出一個絕對路徑,使用egrep取出路徑名,類似於執行dirname /etc/passwd的結果
[[email protected] ~]# echo "/recover/cptest/testcp" | grep -Eo "^/(.*)/"
/recover/cptest/
6、找出ifconfig中的ip地址,要求結果只顯示ip地址
[[email protected] ~]# ifconfig | grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}'
192.168.1.104
255.255.255.0
192.168.1.255
127.0.0.1
255.0.0.0
192.168.122.1
255.255.255.0
192.168.122.255
7、vim定製自動縮排四個字元
在末行模式下輸入 set ai——即首先保證此行再輸入命令前縮進了4個字元,當設定了自動縮排後,敲Enter時
就會按照此行縮排字元自動縮排
8、編寫指令碼,實現自動新增三個使用者,並計算這三個使用者的UID之和
useradd ur1 && useradd ur2 && useradd ur3
a=$(id -u ur1 | grep -o "^[0-9]\{1,4\}")
b=$(id -u ur2 | grep -o "^[0-9]\{1,4\}")
c=$(id -u ur3 | grep -o "^[0-9]\{1,4\}")
echo ${sum=$[$a+$b+$c]}
執行結果:
[[email protected] recover]# bash test.sh
15024
9、find用法以及常用用法的例項演示
find命令:- search for files in a directory hierarchy
find命令用於在檔案系統上查詢符合條件的檔案而不是檔案類容
1、工作特性
實時查詢工具,通過遍歷指定起始路徑下檔案系統層級結構
完成檔案查詢
查詢速度略慢
精確查詢
2、使用格式
find [option]…[path][查詢條件][處理動作]
例:
[[email protected] ~]# find ——>若沒加任何條件指查詢當前路徑下的所有檔案路徑
.
./Music
./.bash_profile
./.bash_logout
path——查詢條件:指定具體搜尋目標的起始路徑,預設為當前目錄
查詢條件:指定查詢條件——可以是檔名、大小、型別、從屬關係、許可權等——預設為找出指定路徑下的所有檔案
處理動作:對符合查詢條件的檔案作出的操作——刪除等——預設為輸出至標準輸出
3、查詢條件
表示式組成:表示式由選項(影響整體操作而不是特定檔案的處理,並始終返回true),測試(返回true或false值)和操作(具有副作用並返回a)組成。
A、據檔名查詢檔案
-name “patern”:區分檔名大小寫
例:
[[email protected] recover]# find ./ -name "Test.sh"
[[email protected] recover]# find ./ -name "test.sh"
./test.sh
-iname “pattern”:不區分檔名大小寫
例:
[[email protected] recover]# find ./ -iname "Test.sh"
./test.sh
-regex pattern:基於正則表示式查詢檔案,匹配範圍是整個路徑,而非其名字,且不忽略大小寫
-iregex pattern:基於正則表示式查詢檔案,匹配範圍是整個路徑,而非其名字,忽略大小寫
find . -regex ".*\(\.txt\|\.pdf\)$"
find . -iregex ".*\(\.txt\|\.pdf\)$"
例:
[[email protected] recover]# find / -regex ".*\(\.txt\)$" ==>查詢根目錄下以.txt結尾的檔案路徑
/root/.cache/tracker/db-locale.txt
/root/.cache/tracker/first-index.txt
B、根據檔案從屬關係查詢
-user username——>即查詢屬主指定使用者的所有檔案
例:
[[email protected] recover]# find /home -user hu
/home/hu
/home/hu/Music
-group Groupname——>即查詢屬組為指定組的所有檔案
-uid——>UID查詢指定UID的屬主的所有檔案
-gid——>GID查詢指定GID的屬組的所有檔案
-nouser——>查詢沒有屬主的檔案
-nogroup——>查詢沒有屬組的檔案
C、局檔案型別查詢
-type f——>查詢普通檔案
例:
[[email protected] recover]# find /home -type f -ls
791770 4 -rw-r--r-- 1 ur1 ur1 193 Nov 20 2015 /home/ur1/.bash_profile
-type d——>查詢目錄檔案
-type l——>符號連結檔案
-type b——>塊裝置檔案
-type c——>字元裝置檔案
-type p——>管道檔案
-type s——>套接字檔案
4、組合測試
A、與==> -a——>預設與組合邏輯,必須同時滿足兩個條件
例:
[[email protected] recover]# find /tmp -nouser -type f
[[email protected] recover]# find /tmp -nouser -a -type f
B、或==> -o——>或組合邏輯滿足其中條件之一即可
例:
[[email protected] recover]# find /tmp -nouser -o -type f
/tmp/mytest.TyTf
/tmp/.X0-lock
C、非==> -not 或!——>非組合邏輯與此條件相反的條件
例:
[[email protected] recover]# find . -not -nouser
.
./cptest
./cptest/testcp
5、根據檔案大小查詢
A、使用格式:find /path -size [+|-]#unit——#表示數值,unit為單位
常用單位有:K、M、G
a、當無 [+|-]號時;#unit表示範圍為(#-1,#]<==>#-1<#≤#
b、當有 [+|-]號時;
- #unit表示範圍為[0,#-1]<==>0≤#≤#-1
+ #unit表示範圍為(#,∞)<==>#<#≤∞
例:
[[email protected] recover]# find . -size -10
.
./cptest
./cptest/testcp
./cptest/cp.txt
./cptest/test.txt
./test.patch
./test1.sh
./tt
./test.sh
./io
./io/test1.txt
./io/test.txt
./cp.txt
[[email protected] recover]# find . -size 10
[[email protected] recover]# find . -size +10
./.cp.txt.swp
./.text.txt.swp
6、據時間戳查詢
A、以“天”為單位查詢
-atime [+|-]#
-mtime [+|-]#
-ctime [+|-]#
#:[#,#-1)——#≤#<#-1
+#:(#,0]——#<#≤0
-#:(∞,#)——∞<#<#
例:
[[email protected] recover]# find . -atime -7
.
./cptest
./cptest/testcp
B、以“分鐘”為單位
-amin [+|-]#
-mmin [+|-]#
-cmin [+|-]#
[+|-]#同上
7、據許可權查詢
-perm [/ | -]mode
A、mode —精確查詢
例:
[[email protected] recover]# find . -perm 755 -ls
261629 4 drwxr-xr-x 5 root root 4096 Dec 1 04:53 .
264277 4 drwxr-xr-x 2 root root 4096 Nov 29 08:46 ./cptest
261660 4 -rwxr-xr-x 1 root root 205 Nov 30 09:18 ./test1.sh
261653 4 drwxr-xr-x 2 root root 4096 Dec 1 01:14 ./tt
B、/mode —任何一類使用者(u、g、o)的許可權中的任何一位(r、w、x)符合許可權既滿足條件(許可權之間為或關係)
例:
[[email protected] recover]# find . -perm /755 -ls
261629 4 drwxr-xr-x 5 root root 4096 Dec 1 04:53 .
264277 4 drwxr-xr-x 2 root root 4096 Nov 29 08:46 ./cptest
264280 0 -rw-r--r-- 1 root root 0 Nov 24 10:01 ./cptest/testcp
261649 0 -rw-r--r-- 1 root root 0 Nov 29 08:46 ./cptest/cp.txt
261652 4 -rw-r--r-- 1 root root 39 Nov 29 08:46 ./cptest/test.txt
261633 4 -rw-r--r-- 1 root root 24 Nov 30 09:19 ./test.patch
261630 12 -rw-r--r-- 1 root root 12288 Dec 1 05:12 ./.cp.txt.swp
261660 4 -rwxr-xr-x 1 root root 205 Nov 30 09:18 ./test1.sh
261653 4 drwxr-xr-x 2 root root 4096 Dec 1 01:14 ./tt
261393 4 -rwxrwxr-x 1 root root 192 Nov 30 09:42 ./test.sh
261126 4 drwxr-xr-- 2 root root 4096 Nov 28 05:07 ./io
C、-mode—每一類使用者(u、g、o)的許可權中的每一位(r、w、x)對應於條件的每一位相同既滿足條件(許可權之間為與關係)
例:
[[email protected] recover]# find . -perm -755 -ls
261629 4 drwxr-xr-x 5 root root 4096 Dec 1 04:53 .
264277 4 drwxr-xr-x 2 root root 4096 Nov 29 08:46 ./cptest
261660 4 -rwxr-xr-x 1 root root 205 Nov 30 09:18 ./test1.sh
261653 4 drwxr-xr-x 2 root root 4096 Dec 1 01:14 ./tt
261393 4 -rwxrwxr-x 1 root root 192 Nov 30 09:42 ./test.sh
8、動作處理
-print——輸出至標準輸出,預設的動作
-ls——類似於對查詢到的檔案執行“ls -l”命令
-delete——刪除查詢到的檔案
-fls /path——將查詢到的所有檔案的詳細資訊儲存到指定路徑的檔案裡
-ok command {}\——對查詢到的每個檔案執行由command表示的命令,每次操作都由使用者確認( {}\為固定格式)
-exec command {}\——對查詢到的每個檔案執行由command表示的命令,每次操作不由使用者確認( {}\為固定格式)
例:
[[email protected] recover]# find / -nouser -a -nogroup -ok chown root:root {}\
-rw-r--r--. 1 root root 0 Dec 1 13:20 ttt
注意:find傳遞查詢到的檔案路徑至後面的命令時,是先查找出所有符合條件的檔案路徑,並一次星傳遞給後面的命令
但是此命令不能接受過長的引數,若引數過長命令執行會失敗,換另一種方式可規避此問題