实习目的
- 学习shell的功能及相关配置文件,及Bash常用命令
- 学习shell脚本的编写格式
- 学习编写简单的Bash脚本
- 实习要求
- 了解Bash相关配置文件:/etc/profile、$HOME/.bash_profile、$HOME/.bashrc、$HOME/.bash_logout
- 掌握Bash常用命令:history、alias、输入输出重定向
- 了解shell脚本的格式
- 掌握Bash中常见元字符的功能
- 掌握Bash中变量的概念:用户变量和环境变量的区别、变量的复制与引用及Bash的常用内置变量和环境变量
- 掌握Bash内置命令:eval、echo、exec
- 掌握Bash中的算术运算let、条件测试test和[ ]及各种测试和逻辑运算
- 掌握Bash的控制结构:if、for、case
- 了解Bash的函数、点命令
- 实习内容
- 练习课本中有关shell的命令
- 修改Bash的配置文件,让所有用户登录后首先显示用户主目录中的所有内容,并致欢迎词。
Vim .bash_profile 启动vi编辑器并在其后输入内容;
Ls -a 显示用户主目录下的所有文件;
Echo “welcome to come in!” 显示欢迎词。
3.将某用户最近使用过的20条命令行保存到一个文件中,并用vi编辑,删除命令行前的序号。
history 20 >>one.txt 将某用户最近使用过的20条命令行保存到one.txt中;
vim one.txt 启动编辑器并删除序号;
cat one.txt 查看文件信息。
4.为某个用户添加命令5个别名(具体命令自定),并使其在每次登录后就可以直接使用。
alias a='ls -a'
alias l='ls -l'
alias mk=mkdir
alias e=echo
alias w=wc
5.分析如下脚本功能(注释每条语句,并描述脚本功能):
username=$1//将第一个位置参数赋值给变量username。
[ -z $username ]&&read -p “Please Input Username:” username
//如果username值为空,则通过键盘再次给username赋值,并提示信息“Please Input Username:”。
w -h|grep -q “^$username” || { echo $username do not login;exit 1;}
//检查用户名为username值的用户是否登录,若没有登录,则输出“username do not login;exit 1;”。
echo -n Input Message to Send://在屏幕上显示“Input Message to Send:”且不换行。
read msg//读取键盘输入,并保存到msg变量中。
if echo $msg|write $username 2>/dev/null //将msg变量中的内容发送给username值指定的用户,并将错误信息存入/dev/null里,屏幕上不显示。
then echo Send Message successfully!!//若发送成功,则屏幕上显示该信息。
else echo Send Message fail!!//若发送失败,则显示该信息。
fi//脚本功能,给指定的用户发送指定信息,若用户没有登录,则显示用户未登录,否则将指定信息发送给用户,且显示成功与否。
6、编写脚本统计指定目录中普通文件的个数、目录的个数、链接文件的个数。
#!/bin/bash
[ $# -eq 0]&&{
echo 指定待统计目录的列表
exit 1;
}
fa=`ls -l"$@"|grep "^-"|wc -l`
fb=`ls -l "$@"|grep "^d"|wc -l`
fc=`ls -l "$@"|grep "^l"|wc -l`
echo "普通文件:$fa 目录文件: $fb 链接文件:$fc"
- 编写一个脚本名称为backup.sh,将第二个位置参数及其以后各参数所指定目录中的以.c和.sh结尾的,且文件大小不为0的文件复制到第一个位置参数所指定的目录中。 (注:要求检查位置参数的合法性)
8、编写脚本mytar.sh,将位置参数指定的所有文件(目录)进行归档并压缩,文件名格式:年月日(xxxx-xx-xx).tar.gz。要求检测位置参数个数,若为0,给出错误信息。
vim mytar.sh 启动vi编辑器并将脚本命名为mytar.sh;
在vi编辑器中输入命令代码;
在命令行中输入chmod a+x mytar.sh;
./mytar.sh feb.c将文件进行归档压缩。