实验五:使用shell
实验步骤
- 登录系统。
a.使用实验一创建的用户名和密码登录系统。
b.打开终端应用。
- 分别使用单条echo命令输出如下信息:
a.Hello World
b.Hello
World
c.”Hello World”
d.?*[]&();><
e.Filename: file?Option:all
答案:
a.echo Hello World
b.echo -e “Hello\nWorld”
c.echo ‘”Hello World”’ 或 echo \"Hello world\"
d.echo ‘?*[]&();><’
e.echo ‘Filename: file?Option:all’
- 使用echo命令和其它命令输出如下信息:
a.Current Date Time: [当前的日期和时间]。
Current Directory Contents:
[当前目录内容]
答案:
echo “Current Date Time: `date`”; echo “Current Directory Contents:”; ls
(注意:使用到命令置换和单行多命令两个知识点)
b.延迟5秒钟之后显示:I woke up。
答案:
sleep 5; echo “I woke up”
- shell变量与环境变量
a.创建变量MyNAME,赋值为自己的姓名字母缩写。
b.显示变量MyNAME的值。
c.将该变量变为环境变量。
d.在shell中执行bash,然后显示变量MyNAME的值。
e.重新打开一个终端应用,显示变量MyNAME的值。
答案:
a.name=XXX
b.echo $name
c.export MyNAME
d.bash
echo $MyNAME
(显示结果为XXX)
e.新打开一个Terminal应用
echo $MyNAME
(显示结果为空)
- 登录配置文件
a.查看主目录中是否有.profile文件。
b.创建或修改.profile文件,以便每次登录时显示如下信息:
Hello World
Current Date and Time: [当前的日期和时间]
c.切换到虚拟终端3,登录后确认输出上述信息。
答案:
a.find $HOME -name .profile
b.如果没有:
cd
cat > .profile
echo Hello World
echo “Current Date and Time: `date`”
[ctrl-d]
如果有:
使用vi打开,在第一行前面加入:
echo Hello World
echo “Current Date and Time: `date`”
- 进程管理
a.创建后台进程sleep 120;echo “Job done”。
b.创建后台进程vi numbers,查看其ID。
c.关闭后台进程sleep 120;echo hi。
d.关闭后台进程vi numbers。
e.切换到虚拟终端2,使用nohup创建后台进程sleep 10;echo “Job done”。执行ps命令,查看后台进程。
f.用[Ctrl-d]或exit命令退出虚拟终端2。
g.重新切换到虚拟终端2,登录。
h.执行ps命令,查看后台进程状况。
i.在当前主目录下查找nohup.out,并查看其内容,确认有Job done存在。
答案:
a.(sleep 120;echo hi)&
b.vi numbers&
c.ps (查看sleep进程pid)
kill sleep进程pid
d.ps (查看vi进程pid)
kill -9 vi进程pid (只能强制关闭)
e.chvt 2
nohup bash -c ‘sleep 10;echo “Job done”’ &
ps
f.exit
g.chvt 2
h.ps
i.cd
find . -name nohup.out
cat nohup.out
- 高级命令
a.在主目录下创建文件contact,保存10个人的姓名、年龄和电话号码,姓和名之间用空格分隔,姓名、年龄、电话号码之间用Tab分隔。格式如下:
Zhang San 20 13504401234
Li Si 15 13522434856
Wang wu 9 15808465237
……
b.使用sort命令,分别按名、姓和电话进行正向排序和反向排序。
c.使用grep命令在contact中查找姓Zhang的同学,以及135开头的电话的同学。
答案:
a.vi contact
b.按姓排序:sort contact sort -r contact
按名排序:sort -k 2 contact sort -k 2 -r contact
按年龄排序:sort -k 3n contact sort -k 3n contact | tac
c.grep Zhang contact
grep -E “135[0-9]{8}” contact
- 环境变量
a.将PS1的值保存到文件ps1中,查看ps1内容。
b.修改shell提示符使之显示命令序号+”$”。
c.修改shell提示符使之显示shell名+”$”。
d.恢复PS1的值为ps1文件中的内容。
答案:
a.echo $PS1 > ps1
cat ps1
b.PS1=”\!$”
c.PS1=”\s$”
g.PS1=$(cat ps1)
- 别名
a.查看当前shell中已定义的别名。
b.为ls -l --color创建别名ls。
c.在命令行输入ls,如何确定执行的是ls命令和ls别名。
d.对比ls和\ls两个命令的执行效果,说明其原因。
答案:
a.alias
b.alias ls=ls -l --color
c.type ls
d.ls是别名,\ls是ls命令,斜线的作用是去转义