实验三 shell命令
Posted linux-homework-njm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验三 shell命令相关的知识,希望对你有一定的参考价值。
四、实验结论
1. 练习shell中命令历史、别名、特殊字符用法(第4章4.2节~4.5节)
2. shell命令应用练习
(1)通过帮助信息查看,简述以下文件的用途
①/etc/passwd (提示:通过man 5 passwd查看此文件描述说明)
/etc/passwd存放密码文件,文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性,包括:登录名,可选的加密后的密码,数字用户id,数字组id,用户名和注释字段,用户主目录,可选的用户命令解释器。
②/etc/shadow(提示:通过man 5 shadow查看此文件描述说明)
/etc/shadow是passwd文件的一个影子,/etc/shadow文件中的记录行与/etc/passwd中的一一对应,但是只有系统管理员才能够进行修改和查看。
③/etc/group(提示:通过man 5 group查看此文件描述说明)
/etc/group存储有关本地用户组的信息
④/etc/gshadow(提示:通过man 5 gshadow查看此文件描述说明)
/etc/gshadow是/etc/group的加密资讯文件,比如用户组管理密码就存放在该文件中。
(2)依次输入如下命令,观察运行结果。结合man id查看到的帮助信息,指出每一条命令功能
①id
②id -u
③id -u root
④id -u hadoop
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。
-help 显示帮助。
-version 显示版本信息
id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在控制台输入id。 当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻。
(3)在shell命令终端依次输入以下命令,观察执行结果,理解每条命令实现的具体功能
①which python
whereis python
locate python
find /usr/bin -name python
(说明: which, whereis, locate,find都具有检索的功能,结合执行结果,查找帮助信息,总结其区别)
which查看可执行文件的位置
whereis查看文件的位置
locate配合数据库查看文件位置
find实际搜寻硬盘查询文件名称
②grep -n -E ‘root|jsj|^user*‘ /etc/passwd(提示:扩展正则表达式)
grep -n -E ‘[[:digit:]]‘ /etc/passwd
grep -n -E ‘[[:alpha:]]‘ /etc/passwd
grep -n ‘[0-9]\\{4,\\}‘ /etc/group(提示: 在用户组文件中查找GID是4位数及以上的组信息记录)
(说明:带选项-E的表示扩展的正则表达式;不带选项-E的是普通的正则表达式)
grep命令可通过正则表达式搜索文本,并打印匹配到的行;选项-n可打印行号,-E可使用多个正则表达式。
③sudo apt-get install gimp
which gimp
sudo apt remove gimp
which gimp
sudo apt-get install gimp命令可安装gimp
sudo apt remove gimp命令可卸载gimp
which gimp用于查看文件的位置。
④ls -dl/root --time-style=long-iso
ls -dl /root --time-style=long-iso | cut -d‘ ‘ -f1,8
(说明:cut命令的选项-d后引号里有空格;提示: 和前一行结果对比观察)
选项-d可自定义分隔符,-f显示指定的域中的内容,上述命令指定空格为分隔符,显示第1和第8个域中的内容。
⑤ls -l --time-style=long-iso
ls -l --time-style=long-iso -t
ls -l --time-style=long-iso -t -r (说明:依次执行,对比观察,结合帮助选项)
⑥ls /usr/share/man
ls /usr/share/man | grep man[1-8]
ls /usr/share/man/man1
file /usr/share/man/man1/ls.1.gz(结合执行结果,review2.8.1节gzip命令内容)
file命令可识别文件类型,然后创建新目录temp,将ls.1.gz拷贝至temp目录,gzip命令是进行解压。
mkdir~/temp; cp /usr/share/man/man1/ls.1.gz ~/temp
cd ~/temp; ls
sudo gzip -d ls.1.gz; ls
(说明:依次执行,结合前后指令执行结果,理解指令功能;关于gzip命令,可参考2.8.1节理解)
⑦ls –l /home | grep "^d" | wc –l
ls-l查找在 /home目录下的文件,grep “^d”过滤行开头为d的文件,wc -l统计行数
⑧sudo adduser user7
ls /home | tee users | wc -l (提示:输入cat users观察该文件内容)
sudo adduser命令是用来添加新用户的
(4)根据要求写出相应的shell命令
①在目录/usr/include下搜索文件signal.h是否存在(提示: find命令)
②在/usr/include目录下的所有文件中查找包含BUFSIZ的行,并显示所在行号。要求:屏幕上只显示查找到的结果,过滤错误信息。
(提示:①利用grep和通配符*;②利用错误信息重定向和特殊设备文件/dev/null)
③在用户名密码文件/etc/passwd中查找登录shell为bash的用户信息记录,并显示行号
(提示:使用grep和正则表达式中的$)
④从/etc/group文件中截取第1列(组名)和第3列(组id),并按照组id号的数值大小由小到大排序。(提示:综合使用cut, 管道线及sort命令)
(提交文档时,写出其实现的功能的命令及截图,包括命令和结果在内的截图)
(5)体验awk, sed用法:依次执行命令,观察执行结果
①cp/etc/apt/sources.listt1; less t1
②sed -e "s/#.*//g"t1
③sed -e "s/#.*//g"t1| awk ‘{if (length != 0) print $0}‘
④tail -5 /etc/passwd | awk -F: ‘{print $1}‘
⑤tail -5 /etc/group | tee t2
awk ‘BEGIN{print "file t2"} {print "line" NR ":" $0} END {print "over"}‘ t2
(提交文档时,查阅网络,总结如下内容:
① 文件/etc/apt/sources.list用途,理解其内容
/etc/apt/sources.list是包管理工具apt所用的记录
② 命令工具sed功能,截图显示2~3个自己尝试的sed命令练习,并对具体功能作必要陈述说明
sed可将字符进行替换,上图练习中将love替换为hate
③ 命令工具awk功能,截图显示2~3个自己尝试的awk命令练习,并对具体功能作必要陈述说明)
行匹配语句awk ‘ ’ 只能用单引号
每行按空格或tab分割,输出文本中的1,4项;
awk -F: -F相当于内置变量FS,指定分割字符,在上图练习中使用’,’分割
(6)查阅网络或帮助,体验命令curl和wget用法。
(提交文档时,查阅网络,总结如下内容:
② 命令工具curl功能,截图显示自己尝试的练习,并作必要陈述说明
在linux中curl是一个利用URL规则在命令行下工作的文件传输工具,是一款很强大的http命令行工具,它支持文件的上传和下载,是综合传输工具。
(1)安装curl
(2)不加任何选项使用curl时,如 curl http://www.baidu.com ,默认会发送GET请求来获取链接内容到标准输出。
(3)只显示http头,而不显示文件内容,使用-I选项
(4)同时显示http头和文件内容,使用-i选项。
(5)将链接保存到文件。使用 > 符号将输出重定向到本地文件中。
②命令工具wget功能,截图显示自己尝试的练习,并作必要陈述说明
wget是一个下载文件的工具,它用在命令行下.wget工具功能完善,支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。
(1) 使用wget下载单个文件,下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)
(2) 使用wget -O下载并以不同的文件名保存。下图练习中,下载一个文件并以名称download1保存
3. 编写一个shell脚本,使用4种方式(参见第4章教材/课件)分别执行。
(1)练习1
第1步,使用vi/vim/gedit或其它编辑器,编写shell脚本ex1.sh,内容如下:
该脚本的功能是,备份当前目录下最近1天以内(即24小时内)被修改过的普通文件。以backup系统当前日期时间为文件名,并压缩存档。备份过程中出错信息写入error_info。然后分别查看备份文档和报错信息。
第2步,尝试第4章介绍的四种方式,运行该脚本,并理解本例中综合使用的shell命令。
(2)练习2
第1步,使用vi/vim/gedit或其它编辑器,编写shell脚本ex2.sh,内容如下:
尝试第4章介绍的四种方式,运行该脚本。
若提示“找不到文件major_code.txt”,请将公邮实验文件夹中的major_code.txt拷贝至ex1.sh所在目录,重新执行一次。
注:文件major_code.txt,请不要做任何改动,包括格式。
结合运行结果,分析脚本代码,在实验报告中总结以下内容:
② 写出line3中read命令选项-n11功能
-n11表示输入11个字符后输入结束
②写出line14的功能
Line14:grep $code $filename >t1 && read x major < t1
功能:搜索code和filename重定向到t1,然后从t1输出到major
感想
这次实验我练习了shell命令中的特殊字符,我还学会了使用一些命令工具。
以上是关于实验三 shell命令的主要内容,如果未能解决你的问题,请参考以下文章