1. 定義一個對所有使用者都生效的指令别名,例如lftps='lftp 172.168.0.1/pub'
[[email protected] ~]# echo "alias 123='ls -l'" >> /etc/bashrc
[[email protected] ~]# source /etc/bashrc
[[email protected] ~]# alias
alias 123='ls -l'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[[email protected] ~]# 123
total 9500
-rw-------. 1 root root 2005 Jun 24 15:02 anaconda-ks.cfg
-rw-------. 1 root root 25534464 Jun 24 15:08 core.12201
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Desktop
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Documents
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Downloads
-rw-r--r--. 1 root root 2053 Jun 24 15:06 initial-setup-ks.cfg
-rw-r--r--. 1 root root 34 Jul 13 21:32 lsetc.sh
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Music
-rwxr-xr-x. 1 root root 91 Jul 13 21:25 myfirst.sh
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Pictures
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Public
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Templates
-rw-r--r--. 1 root root 40 Jul 13 21:35 trvar.sh
drwxr-xr-x. 2 root root 6 Jun 24 15:08 Videos
drwxr-xr-x. 2 root root 6 Jun 24 23:13 y2
2. 顯示/etc/passwd檔案中不以/bin/bash結尾的行
[[email protected] ~]# grep -v bin/bash$ /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
。。。
3. 找出/etc/passwd檔案中不以/bin/bash結尾的行
[[email protected] ~]# grep "\<[[:digit:]]\{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-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
chrony:x:995:990::/var/lib/chrony:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
unbound:x:994:989:Unbound DNS resolver:/etc/unbound:/sbin/nologin
gluster:x:993:988:GlusterFS daemons:/run/gluster:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:992:986:User for geoclue:/var/lib/geoclue:/sbin/nologin
setroubleshoot:x:991:985::/var/lib/setroubleshoot:/sbin/nologin
saned:x:990:984:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:989: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
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
4. 顯示/proc/meninfo檔案中以大寫或小寫S開頭的行,用三種方式實作。
[[email protected] ~]# grep ^[Ss] /proc/meminfo
SwapCached: 0 kB
SwapTotal: 5111800 kB
SwapFree: 5111800 kB
Shmem: 37284 kB
Slab: 143400 kB
SReclaimable: 76584 kB
SUnreclaim: 66816 kB
[[email protected] ~]# grep -i ^s /proc/meminfo
SwapCached: 0 kB
SwapTotal: 5111800 kB
SwapFree: 5111800 kB
Shmem: 37284 kB
Slab: 143400 kB
SReclaimable: 76584 kB
SUnreclaim: 66816 kB
[[email protected] ~]# grep -E "^(S|s)" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 5111800 kB
SwapFree: 5111800 kB
Shmem: 37284 kB
Slab: 143400 kB
SReclaimable: 76584 kB
SUnreclaim: 66816 kB
5. 使用echo輸出一個絕對路徑,使用egrep取出路徑名,類型執行dirname /etc/passwd 的結果
[[email protected] ~]# echo /etc/passwd | egrep -o '^/.+/'
/etc/
6.找出ifconfig中的ip位址,要求結果隻顯示ip位址
[[email protected] ~]# ifconfig | grep "\<inet\>" | cut -d " " -f10
10.60.0.90
127.0.0.1
192.168.122.1
7. vim定制自動縮進四個字元
編輯/etc/vimrc 檔案,在末尾添加以下兩行
set expandtab
set tabstop=4
8. 編寫腳本,實作自動添加三個使用者,并計算這三個使用者的uid之和。
#! /bin/bash
echo "Please enter 3 names for the new 3 users:"
read -p "the first user's name: " user1
id $user1 &> /dev/null && echo "The username existed" && exit 1
read -p "the second user's name: " user2
id $user2 &> /dev/null && echo "The username existed" && exit 1
read -p "the third user's name: " user3
id $user3 &> /dev/null && echo "The username existed" && exit 1
useradd $user1
echo "created user $user1"
useradd $user2
echo "created user $user2"
useradd $user3
echo "created user $user3"
u1=`cat /etc/passwd | grep $user1 | cut -f3 -d ":"`
u2=`cat /etc/passwd | grep $user2 | cut -f3 -d ":"`
u3=`cat /etc/passwd | grep $user3 | cut -f3 -d ":"`
echo "$user1's uid is $u1"
echo "$user2's uid is $u2"
echo "$user3's uid is $u3"
val=`expr $u1 + $u2 + $u3`
echo "The sum of 3 users uid is $val"
9.find用法以及常用用法的執行個體示範
實時查找工具,通過周遊指定起始路徑下檔案系統層級機構完成查找
工作特性:
查找速度略慢
精确查找
實時查找
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find [opition] [起始查找路徑][查找條件][處理動作]
查找起始路徑:指定具體目标起始路徑;預設為目前路徑
查找條件:指定的查找标準,可以根據檔案名,大小,類型,從屬關系,權限等等,預設為查找指定路徑下的所有檔案
處理動作:對符合查找條件的檔案作出的動作,例如删除等操作,預設為輸出至螢幕
查找條件:
表達式:選項和測試
測試:結果通常為布爾型
根據檔案名查找:
-name “pattern”
-iname “pattern”
支援glob格式的通配符
-regex pattern:基于正規表達式查找檔案,比對的是整個路徑名,并非基名
根據檔案從屬關系查找:
-user USERNAME:查找屬主為指定使用者的檔案
-group GRPNAME:查找屬組為指定組的檔案
-uid UID:查找屬主為指定UID的檔案
-gid GID:查找屬組為指定GID的檔案
-nouser:查找沒有屬主的檔案
-nogroup:查找沒有屬組的檔案
根據檔案的類型來查找:
-type TYPE:
f:普通檔案
d:目錄檔案
l:符号連結檔案
b:塊裝置檔案
c:字元裝置檔案
p:管道檔案
s:套接字檔案
組合測試:
與:-a,預設組合邏輯
或:-o
非:-not,!
根據檔案大小查找:
-size [+,-]#UNIT
常用機關:K,M,G
根據時間戳查找:
以“天”進行查找:
-atime[+,-]#
以3天為例子:
#表示距現在3天内通路,但不超過4天
-#:表示3天内通路過,不超過3天
+#:表示距現在3天内沒有通路過檔案(不包含4天整)
-mtime
-ctime
以“分鐘”進行查找:
-amin
-mmin
-cmin
根據權限查找:
-perm[/|-]mode
mode:精确權限查找
/mode:任何一類使用者(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足
-mode:每一類使用者的權限中的每一位都符合條件
處理動作:
-print:預設動作,輸出至标準輸出
-ls:類似于對查找到的檔案執行“ls -l”指令,輸出檔案的詳細資訊
-delete:删除查找到的檔案
-fls /PATH/TO/SOMEFILE:把查找到的所有檔案的長格式資訊儲存至指定檔案夾中;
-ok COMMAND {} \; :對查找到的每個檔案執行由COMMAND表示的指令;每次操作由使用者進行确認。
-exec COMMAND {} \; :對查找到的每個檔案執行由COMMAND表示的指令;每次操作不需使用者進行确認。
注意:find傳遞查找到的檔案路徑至後面的指令時,是先查找出所有符合條件的檔案路徑,并一次性傳遞給後面的指令,但有些指令不能接受過長的參數,此時指令可能會執行失敗,另一種方式可以規避此問題
find | xargs COMMAND
示例:
1、查找/var目錄下屬主為root,且屬組為mail的所有檔案或目錄;
~]# find /var -user root -a -group mail -ls
2、查找/usr目錄下不屬于root, bin或hadoop的所有檔案或目錄;用兩種方法;
~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop
~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls
3、查找/etc目錄下最近一周内其内容修改過,且屬主不是root使用者也不是hadoop使用者的檔案或目錄;
~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls
4、查找目前系統上沒有屬或屬組,且最近一周内曾被通路過的檔案或目錄;
~]# find / \( -nouser -o -nogroup \) -atime -7 -ls
5、查找/etc目錄下大于1M且類型為普通檔案的所有檔案;
~]# find /etc -size +1M -type f -exec ls -lh {} \;
6、查找/etc目錄下所有使用者都沒有寫權限的檔案;
~]# find /etc -not -perm /222 -ls
7、查找/etc目錄至少有一類使用者沒有執行權限的檔案;
~]# find /etc -not -perm -111 -ls
8、查找/etc/init.d/目錄下,所有使用者都有執行權限,且其它使用者有寫權限的所有檔案;
~]# find /etc -perm -113 --ls