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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章