shell脚本学习与总结

2019-09-23 09:50:26王振洲

`(esc下面的按键)用于执行某个命令或脚本并替换其输出结果,即命令替换,相同功能有$( )。此外,如果希望每次使用某个变量时重新读取它的值,也可使用它,如`$PWD`,则每次使用这个变量时都会重新读取它的新值。
12.文件权限和粘滞位(suid,sgid)
文件权限有读,写,执行三种权限。将文件操作模式设为总是作为某个特定的用户(suid),或总是作为某个特定的组成员(sgid)来执行称为设置粘滞位。可以用命令chmod进行修改文件权限。
13.在远程主机上运行命令
Ssh user@hostname command_to_execute
如:ssh jack@192.168.1.3 “uptime”
14.设置陷阱
当某个程序被迫中止时,会有一个退出信号,这个信号称为一个陷阱(trap)。这样我们可以在捕捉到退出信号时执行命令,如捕获到退出信号1,2,3,15时退出:
Trap `echo “nEXITTING on a TRAPPED SINGAL”; exit` 1 2 3 15
注意不能捕获到kill -9.的退出信号。
15.查看用户信息
Who 提供每个登录用户的用户名、tty、登录时间及用户登录地(IP)
W 对who的扩展,包括作业进程时间,总用户进程时间等,但没有用户登录地信息。
Last 显示自wtmp文件创建开始登录过的用户名单信息,包括登录时间,退出时间,tty等。
    16.ps命令
显示当前系统进程的信息。
17.与用户通信
Wall,rwall,write,talk
18.大小写文本
用tr或typeset命令。
VALUES = “AFCDLD”
Echo $VALUES | tr ‘[A-Z]' ‘[a-z]'  #将大写转换成小写;tr ‘[a-z]' ‘[A-Z]'则小写转换成大写

在VALUES前使用
Typeset -l VALUES  #将大写转换成小写;typeset -u 则小写转换成大写。
19.定时运行脚本cron
Crontab -e进入用户cron表添加定时脚本,如
在1月15日星期天0:12执行脚本/usr/bin/test.sh
#分(0-59) 时(0-23)日(1-31) 月(1-12) 星期(0-6for Sunday-saturday) 
12 0 15 1 0 /usr/bin/test.sh
定时任务还可作用at命令。
20.输出控制
静默运行,即不输出任何内容到屏幕上: 2>&1 > /dev/null
输出到系统指定的控制台: > /dev/console
21.解析命令行参数getopts
Getopts optionstring VARIABLE
Optionstring 是所需的各种参数,用冒号隔开,如果不需要参数,则冒号可以省略。如果optionstring前有一个冒号,则任何未匹配到时会在VARIBLE中加载一个?号
使用getopts的作用是解析出参数,然后作用此参数做不同的操作。如:
While getopts :s:m:h:d:p: TM
Do
Case $TM in
S)
Do something

M)
Do something

.
.
.
?)
Exit 1

Esac
22.逐行处理文件
While read LINE
Do
Echo “$LINE”
Done <$FILENAME
23.作用select命令创建菜单
Select menu in Yes No Quit
Do
Case $menu in
Yes)
Do something

No)
Do something