標籤:
shell指令碼(一)
1、常用命令
(1)系統管理
#useradd,添加新使用者時預設會建立一個與使用者名稱相同的使用者組
#建立使用者user1,並指定uid為1111,所屬群組為2222(test),並且不建立家目錄
groupadd test -g 2222
grep test /etc/group
useradd user1 -g 2222 -u 1111 -M
id user1
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1VyudrjuwgvAADH3my4lO4986.jpg" />
#建立使用者user2,並指定uid為1112,所屬群組為2222(test),並且建立家目錄
useradd user2 -g 2222 -u 1112
ls /home
id user2
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1Vyu3rjSZC8AAFidnKEZB0473.jpg" />
#userdel,預設不會刪除家目錄
#刪除使用者user1和user3(但不會刪除家目錄),刪除user2並且刪除家目錄
userdel user1
userdel user3
userdel user2 -r
ls /home
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/12/wKiom1Vyudui426RAAB0wBXTqD4683.jpg" />
#usermod,更改user4(1114)id為2224,群組test變為root,家目錄變為/home/test
useradd user4 -u 1114 -g test
usermod -g root -u 2224 -d /home/test user4
id user4
grep user4 /etc/passwd
ll /home
chown -R user4:root /home/test
ll /home
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0E/wKioL1Vyu3vRN7_DAANToK76oVo088.jpg" />
#groupadd,新增群組test1,指定id=2223
groupadd test1 -g 2223
grep test1 /etc/group
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/12/wKiom1VyudyStq_6AABrAjZK-Ik564.jpg" />
#groupmod,重新命名群組test1為test2,id=3333
groupmod test1 -n test2 -g 3333
grep test /etc/group
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0E/wKioL1Vyu3ui2Jg7AAC5Rs9CAQ8049.jpg" />
#groupdel,刪除群組時必需確認群組沒有其他成員
#刪除包含成員的群組將會出錯
#刪除群組test和test2,test群組有成員刪除會出錯
groupdel test2
groupdel test
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1VyudzSaXndAABzGgK-ZPs681.jpg" />
#passwd,更改密碼,鎖定/解鎖使用者,指定密碼最短/最長/警告更改時間
#更改user4密碼為love,只有root使用者可以passwd 使用者名稱
passwd user4
輸入兩次密碼
#鎖定使用者user4和user5
passwd -l user4
#在/etc/shadow第2列前面加"!"表示使用者被鎖定
grep user4 /etc/shadow
#解鎖使用者user4
passwd -u user4
grep user4 /etc/shadow
#指定user4密碼最短更改時間2天,最長7天,到期前3天警告
passwd user4 -n 2 -x 7 -w 3
grep user4 /etc/shadow
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1Vyu3zxey_sAAJo-o0w3gk003.jpg" />
#chgrp,變更檔或者目錄群組,將mount.sh群組由root改為test
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/12/wKiom1Vyud3DD8CLAAGh6na92rY690.jpg" />
(2)檔案目錄管理
#ls,-l以長格式顯示,1-7列分別為:
#檔案類型和許可權、連結數、檔案屬主、檔案屬組、檔案大小、最近修改時間、檔案名稱
#ls,顯示指定目錄下所有檔案,包含隱藏檔案,大小以M為單位,並以修改時間排序
ls alc block-size=m /home
#不足1M以1M算,不足1G以1G算
#與-A與-a區別在於,前者不顯示"."(目前的目錄)和".."(上一級目錄)
ls Alc block-size=g /home
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0E/wKioL1Vyu33zEIrkAAHY2OuKKh0650.jpg" />
#ls預設以1行顯示所有檔案和目錄,但不包含子目錄
ls /home
#前者1行顯示完,後者每一個檔案或者目錄佔1行
ls -1 /home
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/12/wKiom1Vyud7Shj6sAAB5ONVETjw163.jpg" />
#在目錄後加反斜線
ls -p /home
ls -lp /home
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0E/wKioL1Vyu32RtegDAAEQCBCYtdk457.jpg" />
#遞迴式顯示,UID和GID以數值代替,並按字母逆序排序
#-R:遞迴顯示,-n:uid,gid數值顯示,-r:按字母逆序排序
ls -R -n -r -al /home
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1Vyud7RzEO9AAL9w_GzLsQ774.jpg" />
#cp,預設不加參數無法複製目錄
#-a:保留連結、檔案屬性,並遞迴複製目錄
#-d:保留連結,-f:覆蓋目標檔案並且不提示,-p:附帶複製修改時間和訪問時間
#-r:遞迴複製目錄,目標必需為目錄,-l:不複製檔案,只是連結檔案
#將/home複製到/tmp,附帶所有屬性,並且強制覆蓋目標檔案
cp -apf /home /tmp
ls /tmp
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1Vyud6iYjxWAADp0_5mfsk362.jpg" />
#mv,-f:強制覆蓋目標檔案並且不提示,新版本已經預設保留許可權
#將/home/aaa檔案移動到/tmp,並且保留許可權,如目標檔案存在同樣覆蓋
ls -kl /home/aaa
mv -f /home/aaa /tmp
ll /tmp/aaa
#兩者比較,目標檔案被覆蓋,並且保留了許可權
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1Vyu36xdsjxAAEBvs8XiMA610.jpg" />
#rm,刪除檔案或者目錄
#強制移除檔案或者目錄,如果目錄有子目錄一併刪除
rm -rf /tmp/home
ll /tmp
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/12/wKiom1Vyud6yBjp8AADZU9EmIz8091.jpg" />
#mkdir,建立目錄,-p:如果路徑某些目錄不存在一併建立,-m:設定許可權
#建立目錄/home/bbb/ccc,並指定許可權為777
mkdir -p -m 777 /home/bbb/ccc
#-m指定的是最深層目錄許可權,而缺少的目錄許可權是目前使用者預設許可權
#此處需要注意的是root的umask為0022,所以bbb許可權為755,而不是777
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1Vyu36Rk9ATAAEc6t5LAEQ148.jpg" />
#rmdir,只能刪除空目錄,-p:遞迴刪除空目錄,如果父目錄為空白一併刪除
#加上-p後,如果父目錄不為空白,則提示錯誤,注意區別
mkdir -p bbb/ccc
mkdir -p bbb/ddd
rmdir -p bbb/ccc
ls bbb
rmdir -p bbb/ddd
ls
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0E/wKioL1Vyu37BbLfCAADQp-1npFg462.jpg" />
#stat,查看檔案目錄access、modify和change時間
#access為訪問時
#modify為修改過內容時間,
#change為修改過狀態時間,比如chmod、chown命令更改過許可權等等
stat mount.sh
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/12/wKiom1Vyud-C3ENzAAC3B7ky0TM813.jpg" />
#touch,建立空檔案,-a:只修改訪問時間,-m:只修改修改時間
#-t:使用指定日期,-r:將指定檔案日期修改為參考檔案日期
#將訪問時間改為20140102030405,修改時間改為20150102030405
touch -a -t 201401020304.05 bbb
touch -m -t 201501020304.05 bbb
stat bbb
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0E/wKioL1Vyu3-RXY26AADJHz6XBHw731.jpg" />
#再將bbb改為參考檔案ccc時間
stat ccc
touch -r ccc bbb
stat bbb
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1VyueDjxu8eAAFELA0NCr4486.jpg" />
#file,測試檔案類型,-b:不顯示檔案或目錄名稱
file mount.sh
file -b mount.sh
file test
file -b test
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1Vyu3_zItgbAADiBJ0Y_Ek877.jpg" />
#ln,-b:覆蓋目標檔案前先備份,會在備份檔案後面加字串,-S:指定備份字串
#-s:建立軟連結,-d:建立永久連結
#軟連結:相當於捷徑,刪除對原檔案不影響
#永久連結:相當於原檔案的一個"特殊"副本,刪除對原檔案不影響
#但修改內容同樣指向原檔案
#為bbb建立軟連結,並且覆蓋目標檔案,指定備份字串為".bk"
ln -s -b -S .bk bbb lnb
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/13/wKiom1VyueDSnVkDAAI4ShMPmfw435.jpg" />
#刪除軟連結:原檔案不受影響,但如果寫入內容的話會寫入到原檔案
cat bbb
echo "test">lnb
cat bbb
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0E/wKioL1Vyu4DDam90AADDTiaHb8k720.jpg" />
#為bbb建立永久連結,可以看到ccc連結數值由1變為2
ln -d ccc ccchard
ll ccc
#刪除永久連結:刪除之後對原檔案不造成影響,只是原檔案連結數值減1
ll ccc
echo "ccchard">ccchard
rm -f ccchard
ll ccc*
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/13/wKiom1VyueDCwlq1AAEJ-1-1LxQ572.jpg" />
#刪除原檔案,永久連結同樣可以用, hardccc連結數值由2變1
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0E/wKioL1Vyu4DRSsnVAAEsI8_mLvg289.jpg" />
本文出自 “愛就行動” 部落格,請務必保留此出處http://1055745601.blog.51cto.com/5003160/1659230
shell指令碼(一)