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

你可能感兴趣的:(shell脚本(一))