山东大学Linux应用实验四
本文属于原创,转载请注明出处。
实验步骤与内容:
一. shell环境
(一)命令和文件名补全功能
-
用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补齐命令的后半部分。
-
用mkdir命令创建新的目录newdir。首先输入第一个字母m,然后按tab键,由于以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。
-
再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列表。
-
在列表中查找mkdir命令,看看还需要多输入几个字母才能确定mkdir这个命令,然后输入需要的字母,再按tab键,让shell补齐剩下的命令。
-
最后输入要创建的目录名newdir,按回车键执行命令。
-
用ls命令查看newdir目录下的内容,看newdir是否可以用文件补全功能来输入?
可以
(二)命令别名功能
7.输入alias命令,显示目前已经设置好的命令的别名。
8.设置别名ls为ls –l,以长格形式显示文件列表:#alias ls=‘ls -l’。 -
显示别名ls代表的命令,确认设置生效:#alias ls。
-
使用别名ls显示当前目录中的文件列表。
-
在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命令列表:#\ls。
-
删除别名ls:#unalias ls。
-
显示别名ls,确认删除别名已经生效:#alias ls。
-
最后再用命令ls 显示当前目录中的文件列表。
l5. 写出定义别名cde为:cd /etc的命令( )。
二. 通配符的使用
16. 以tux1帐号登入系统,用ls /bin/*sh 命令显示系统中的shell种类?系统中共有哪些shell?ls /bin/sh命令的作用是什么?
找出所有以sh结尾的文件
17. 进入/etc目录并且列出该目录下的所有文件。
18. 使用带通配符的ls命令列出文件名:
(1) 文件名以conf结尾的文件
(2) 文件名以一个字母d或D开头的文件
(3) 文件名的第五位包含一个字母o的文件
(4) 文件名包含文字tab且不区分大小写字母的文件
(5) 文件名以一位数字结尾的文件
(6) 文件名不以一位数字结尾的文件
注意:通配符的匹配是由shell来做的。如果匹配的文件名是一个目录名,ls命令默认将列出那个目录的内容,而不是文件名本身。
可以使用-d参数来阻止该情况的发生。
19. 执行命令ls -d ?[!y][e-f]将会发生什么情况?匹配的最短的文件名会是什么?执行该命令来验证你的答案。
20. 返回到你的主目录。
三. 重定向
21. (1)使用cat命令重定向创建一个名为junk的文件,该文件包含了一些文本行。键入一些行以后,中止cat命令返回到shell提示符。查看你刚才创建的文件的内容。
(2)使用重定向在junk文件中再添加一些行。然后查看该文件的内容,检查你所输入的内容是否完整。
22. 对于命令
$cat junk junk2
(1) 将其标准输出重定向到文件cat.out,标准错误重定向到cat.err。
(2)如果显示输出信息、但不保留该命令的错误信息呢?
四. 管道
-
使用管道统计你的当前目录里的文件数,不要手动去计数。
-
执行ls -l> tempfile ; wc -l tempfile ; rm tempfile 命令与第7题作用一样吗?为什么一样或不一样?
一样,应用了管道; -
使用ls命令并把输出结果保存在名为tempfile2的文件中,然后统计并显示文件数。
五. 命令组
26. 在同一个命令行上,显示当前的系统日期和登入的所有用户,包括一些说明注释,结果存入到一个文件中。
六. 进程环境
27. 显示在你的当前进程环境中定义的所有变量。显示所有环境变量。
28. 用命令 $localvar=10 给本地变量localvar赋值。显示该变量的值,然后再显示当前所有的变量。
29. 用 $bash 命令启动一个子shell。再显示变量localvar的值。这次和28中显示的为什么不同?
它设置的是本地环境变量,只能在当前shell查看
30. 用什么命令可以将localvar的赋值带到子shell中去?
将其转化成全局环境变量
八. 使用grep和正则表达式
33. 复制/etc/passwd文件到你的主目录,并换名为lspasswd。
34. (1)搜寻在lspasswd文件中所有首字母是s的行。
(2)用wc,grep和管道组合成一条命令统计lspasswd文件中首字母是s的行数。
35. 重复上面的操作,但这次只显示符合条件的行的计数。
36. 尝试用grep 和正则表达式在lspasswd中查找其它你想要查找的信息。其中:
^ 用于匹配行首,用在字符串前面
$ 用于匹配行尾,用在字符串后面
X* 0个或多个字符X
. 匹配任意单字符
[字符表] 字符表中的任意字符
[^字符表] 任意不在字符表中的字符
\ 屏蔽其后的特殊字符的特殊含义
{n} 前导的正则表达式重复n次
{min,max} 前导的正则表达式重复min~max次
九.Shell程序及其三种运行方式
37.使用vi编辑器,编辑一个名为setdir的脚本文件:
dir1=/tmp
dir2=/usr
echo $dir1 $dir2
38.分别用学过的三种不同的运行方式运行该脚本,每次运行一种方式后,再次执行echo $dir1 $dir2
Shell脚本的三种运行方式:
sh方式
.方式
赋予执行权限方式
39.这三种运行方式有什么不同?执行echo $dir1 $dir2分别得到什么样的运行结果?为什么?
这种运行方式是启动了一个子Shell,setdir 文件中的Shell命令都是在子Shell中执行, Shell命令执行完后,退回到命令提示符下时,子Shell结束。
这种执行方式,Shell首先查找 PATH 变量中的各路径中是否有相应程序,若没有则会出错。因而需要在PATH变量中添加脚本所在的路径。这种方式也是在子Shell中执行脚本