1. 程式人生 > 實用技巧 >shell指令碼(一)

shell指令碼(一)


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

#建立使用者user2,並指定uid為1112,所屬群組為2222(test),並且建立家目錄

useradd user2 -g 2222 -u 1112

ls /home

id user2

#userdel,預設不會刪除家目錄

#刪除使用者user1和user3(但不會刪除家目錄),刪除user2並且刪除家目錄

userdel user1

userdel user3

userdel user2 -r

ls /home

#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

#groupadd,新增群組test1,指定id=2223

groupadd test1 -g 2223

grep test1 /etc/group

#groupmod,重新命名群組test1為test2,id=3333

groupmod test1 -n test2 -g 3333

grep test /etc/group

#groupdel,刪除群組時必需確認群組沒有其他成員

#刪除包含成員的群組將會出錯

#刪除群組test和test2,test群組有成員刪除會出錯

groupdel test2

groupdel test

#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

#chgrp,更改檔案或者目錄群組,將mount.sh群組由root改為test

(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

#ls預設以1行顯示所有檔案和目錄,但不包含子目錄

ls /home

#前者1行顯示完,後者每一個檔案或者目錄佔1行

ls -1 /home

#在目錄後加反斜槓

ls -p /home

ls -lp /home

#遞迴式顯示,UID和GID以數值代替,並按字母逆序排序

#-R:遞迴顯示,-n:uid,gid數值顯示,-r:按字母逆序排序

ls -R -n -r -al /home

#cp,預設不加引數無法複製目錄

#-a:保留連結、檔案屬性,並遞迴複製目錄

#-d:保留連結,-f:覆蓋目標檔案並且不提示,-p:附帶複製修改時間和訪問時間

#-r:遞迴複製目錄,目標必需為目錄,-l:不復制檔案,只是連結檔案

#將/home複製到/tmp,附帶所有屬性,並且強制覆蓋目標檔案

cp -apf /home /tmp

ls /tmp

#mv,-f:強制覆蓋目標檔案並且不提示,新版本已經預設保留許可權

#將/home/aaa檔案移動到/tmp,並且保留許可權,如目標檔案存在同樣覆蓋

ls -kl /home/aaa

mv -f /home/aaa /tmp

ll /tmp/aaa

#兩者比較,目標檔案被覆蓋,並且保留了許可權

#rm,刪除檔案或者目錄

#強制刪除檔案或者目錄,如果目錄有子目錄一併刪除

rm -rf /tmp/home

ll /tmp


#mkdir,建立目錄,-p:如果路徑某些目錄不存在一併建立,-m:設定許可權

#建立目錄/home/bbb/ccc,並指定許可權為777

mkdir -p -m 777 /home/bbb/ccc

#-m指定的是最深層目錄許可權,而缺少的目錄許可權是當前使用者預設許可權

#此處需要注意的是root的umask為0022,所以bbb許可權為755,而不是777

#rmdir,只能刪除空目錄,-p:遞迴刪除空目錄,如果父目錄為空一併刪除

#加上-p後,如果父目錄不為空,則提示錯誤,注意區別

mkdir -p bbb/ccc

mkdir -p bbb/ddd

rmdir -p bbb/ccc

ls bbb

rmdir -p bbb/ddd

ls

#stat,檢視檔案目錄access、modify和change時間

#access為訪問時

#modify為修改過內容時間,

#change為修改過狀態時間,比如chmod、chown命令更改過許可權等等

stat mount.sh

#touch,建立空檔案,-a:只修改訪問時間,-m:只修改修改時間

#-t:使用指定日期,-r:將指定檔案日期修改為參考檔案日期

#將訪問時間改為20140102030405,修改時間改為20150102030405

touch -a -t 201401020304.05 bbb

touch -m -t 201501020304.05 bbb

stat bbb

#再將bbb改為參考檔案ccc時間

stat ccc

touch -r ccc bbb

stat bbb

#file,測試檔案型別,-b:不顯示檔案或目錄名稱

file mount.sh

file -b mount.sh

file test

file -b test

#ln,-b:覆蓋目標檔案前先備份,會在備份檔案後面加字串,-S:指定備份字串

#-s:建立軟連結,-d:建立硬連結

#軟連結:相當於快捷方式,刪除對原檔案不影響

#硬連結:相當於原檔案的一個"特殊"副本,刪除對原檔案不影響

#但修改內容同樣指向原檔案

#為bbb建立軟連結,並且覆蓋目標檔案,指定備份字串為".bk"

ln -s -b -S .bk bbb lnb

#刪除軟連結:原檔案不受影響,但如果寫入內容的話會寫入到原檔案

cat bbb

echo "test">lnb

cat bbb

#為bbb建立硬連結,可以看到ccc連結數值由1變為2

ln -d ccc ccchard

ll ccc


#刪除硬連結:刪除之後對原檔案不造成影響,只是原檔案連結數值減1

ll ccc

echo "ccchard">ccchard

rm -f ccchard

ll ccc*

#刪除原檔案,硬連結同樣可以用, hardccc連結數值由2變1

轉載於:https://blog.51cto.com/1055745601/1659230