实验三 shell命令(1)

四、实验结论

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命令中的特殊字符,我还学会了使用一些命令工具。

原文地址:https://www.cnblogs.com/linux-homework-njm/p/8981679.html

时间: 2024-10-29 21:12:27

实验三 shell命令(1)的相关文章

实验三 shell 编程(1)

一.shell命令应用练习 1.简述以下几个文件的用途 ① /etc/passwd passwd为密码文件,用来管理用户的密码.普通用户通常只能修改自己的密码信息. ② /etc/shadow shadow是一个影子化的密码文件,它包含系统账户的密码信息和可选的年龄信息.只有管理员能查看修改. ③ /etc/group group文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组:同一用户组的用户之间具有相似的

Linux实验三 shell编程(1)

1. 练习 shell 中命令历史.别名.特殊字符用法(第 4 章 4.2 节~4.5 节) (1)定义别名 定义别名是,往往用单引号将它所代表的内容括起来,以防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释. (2)特殊字符用法 1.一般通配符 *(星号):匹配任意字符的0次或多次(文件名中的圆点和路径名中的斜线必须显示匹配) ?(问号):匹配任意一个字符 [字符组]:匹配该字符组所限定的任何一个字符 !(惊叹号):如果它紧跟在一对方括号的左方括号[之后,表示不在此字符组的所列出

Linux学习笔记(三)-Shell命令机制

切换命令行:ctrl+alt+f1-f6 切换到图形界面:ctrl+alt+f7 ls-list(win下的dir) 白色:普通文件 蓝色:目录文件 绿色:可执行文件 执行步骤: 输入ls 在相关目录下去找命令程序(path,环境变量:/etc/environment),whereis+命令:查找该命令的可执行文件的位置 基于shell的基本类库Bash 底层的交互 GNU,FSF,Bash,Coreutils 来自为知笔记(Wiz)

实验一 用户界面与Shell命令

一.实验课时:2学时 二.实验目的 v  熟悉redhat_linux的用户界面,会进行常用的系统设置. v  掌握常用的shell命令. 三.实验环境 v  运行Windows xp\2000\2003等操作系统的计算机: v  VMware虚拟机上运行redhat enterprise 5 四.实验过程 点击桌面上的VMware文件夹,找到VMware快捷方式图标. 2.  双击快捷方式图标启动虚拟机,选择redhat enterprise 5 虚拟机并启动. 在虚拟机启动后的redhat

[SHELL进阶] (转)最牛B的 Linux Shell 命令 (三)

1. 更友好的显示当前挂载的文件系统 mount | column -t 这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt 的用法. 下面是单单使用 mount 命令的结果: $ mount /dev/root on / type ext3 (rw) /proc on /proc type proc (rw) /dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

python 调用shell命令三种方法

#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里. python调用shell命令的方法有许多 1.1   os.system(command) 在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态.这实际上是使用C标准库函数system()实现的.这个函数在执行comman

实验三、shell编程

一.实验内容 1. 练习 shell 中命令历史.别名.特殊字符用法(第 4 章 4.2 节~4.5 节) 2.  shell 命令应用练习(具体见实验步骤) 3. 编写一个 shell 脚本,使用 4 种方式分别执行(具体见实验步骤) 4. 结合个人学习进度条,选择在 linux 环境下进行的新尝试和新探索 二.实验步骤 1.练习shell中命令历史,别名,特殊字符用法. 2.shell命令应用练习 (1)通过帮助信息查看,简述以下文件的用途 ① /etc/passwd  (提示:通过 man

bash shell命令与监测的那点事(三)

bash shell命令与监测的那点事之df与du 前两篇介绍了bash shell的进程监控指令,但是有时候你需要知道在某个设备上还有多少磁盘空间.首先介绍df命令: df命令 df命令就是用来轻松查看所有已挂载磁盘的使用情况的: 1 [[email protected] ~]# df 2 Filesystem 1K-blocks Used Available Use% Mounted on 3 /dev/sda2 39219648 10728028 26499380 29% / 4 tmpf

Linux实验三: shell 编程(1)

hell 命令应用练习 ①    /etc/passwd  ' etc/passwd 为每个用户账户包含一行,包含使用冒号 (":")分隔的七个字段,分别是:登录名,选的加密后的密码,字用户ID ,字组 ID ,户名和注释字段,  用户主目录,可选的用户命令解释器 ② /etc/shadow shadow是一个文件,它包含系统账户的密码信息和可选的年龄信息.   如果没有维护好密码安全,此文件绝对不能让普通用户可读. ③ /etc/group 文件是用户组的配置文件,内容包括用户和用户