1. 程式人生 > >Linux學習之例項應用-1

Linux學習之例項應用-1

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傳遞查詢到的檔案路徑至後面的命令時,是先查找出所有符合條件的檔案路徑,並一次星傳遞給後面的命令
	但是此命令不能接受過長的引數,若引數過長命令執行會失敗,換另一種方式可規避此問題