Linux实验三

1.练习shell中命令历史、别名特殊字符用法

1.1显示历史命令

语法格式:history[opyion][arg...]

①如果不带参数,则显示历史命令清单

②如果后面给出一个正整数m,则显示最后m行

③如果后面给出一个文件名a1,则把a1作为历史文件名

1.2定义别名

语法格式:alias[name[value]]...

1.3 shell特殊字符

1.3.1 引号

引号分为三种:单引号、双引号和倒引号

① 倒引号内的字符会被当做shell命令,会进行置换处理
② 单引号内的字符都当做普通字符处理
③ 双引号内的字符除了$、倒引号(`)、反斜线(\)、感叹号(!)外,均作为普通字符处理

 

1.3.2 输入/ 输出重定向符

输入重定向:

输出重定向:

2.shell命令应用练习

2.1简述以下文件的用途

① /etc/passwd:用户账户信息

② /etc/shadow:安全用户账户信息

③ /etc/group:组账户信息

④ /etc/gshadow:安全组账户信息

2.2 指出每一条命令的功能

① id 打印真实有效的用户和组ID

② id -u 仅打印有效的用户ID

③ id -u root 仅打印root用户的ID

④ id -u wt 打印wt用户的ID

 2.3 观察以下命令执行结果,理解其功能

2.3.1

which       查看可执行文件的位置 
whereis    查看文件的位置 
locate       配合数据库查看文件位置 
find          实际搜寻硬盘查询文件名称 

2.3.2

grep -n -E 'root|jsj|^user*' /etc/passwd  显示目录下以root、jsj、user开头的记录
grep -n -E ' [[:digit:]] ' /etc/passwd  显示目录下数字字符记录
grep -n -E ' [[:alpha:]] ' /etc/passwd 显示目录下文字字符记录
grep -n '[0-9]\{4,\}' /etc/group 在用户组文件中查找GID 是4 位数及以上的组信息记录

2.2.3

gimp:Linux下的图形处理工具

2.3.4

2.3.5

ls -l --time-style=long-iso 按详细时间格式显示当前目录下详细信息
ls -l --time-style=long-iso -t  按详细时间从先到后排序
ls -l --time-style=long-iso -t -r 按详细时间从后到先排序

2.3.6

ls /usr/share/man 列出该目录下信息
ls /usr/share/man | grep man[1-8] 列出该目录下man1-man8的信息
ls /usr/share/man/man1 列出该目录下信息
file /usr/share/man/man1/ls.1.gz 列出目录下信息
mkdir ~/temp; cp /usr/share/man/man1/ls.1.gz ~/temp 在当前目录下创建目录并把压缩文档拷贝过去
cd ~/temp; ls 进入目录
sudo gzip -d ls.1.gz; ls 解压文件

2.3.7

统计/home目录下以d开头的记录的行数

2.3.8

sudo adduser user7 创建一个新用户
ls /home | tee users | wc -l  统计用户数量

2.4 根据要求写出相应的shell命令

2.4.1 在目录/usr/include 下搜索文件signal.h 是否存在(提示: find 命令)

2.4.2 在/usr/include 目录下的所有文件中查找包含BUFSIZ 的行,并显示所在行号。要求:屏幕上只显示查找到的结果,过滤错误信息。(提示:① 利用grep 和通配符*; ②利用错误信息重定向和特殊设备文件/dev/null)

 

2.4.3 在用户名密码文件/etc/passwd 中查找登录shell 为bash 的用户信息记录,并显示行号

 2.4.4 从/etc/group 文件中截取第1列(组名)和第3列(组id),并按照组id号的数值大小排序。(提示:综合使用cut,管道线及sort命令)

 

cut中 -d选择分隔符,-f选择分割后的域

sort中-t选择分隔符,-k选择分割后的域

2.4.5 体验awk,sed用法:依次执行命令,观察执行结果

① cp /etc/apt/sources.list t1; 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 'BRGIN{print "file t2"}{print "line" NR ":" $0} END {print "over"} t2

1.文件/etc/apt/sources.list是包管理工具 apt 所用的记录软件包仓库位置的配置文件

2.sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。

例1:删除空白行后显示

例2:删除第2行后显示

3.awk是一种编程语言,用于对文本和数据进行处理的,具有强大的文本格式化能力,利用命令awk,可以将一些文本整理成为我们想要的样子, 命令awk是逐行进行处理的。

例1:搜索/etc/passwd有root关键字的所有行

例2:统计/etc/passwd的账户人数

 

2.4.6 体验命令curl和wget用法

①curl:在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

②wget:wget是Linux系统中的一个下载文件的命令工具。

3 编写与执行shell脚本

3.1 编写并执行脚本ex1.sh

方式1:bash< 脚本名

 

方式2:bash filename [参数]

 

方式3:filename

方式4:. filename

3.2 编写并执行脚本ex2.sh

方式1:bash< 脚本名

方式2:bash filename [参数]

 

方式3:filename

方式4:. filename

3.3 总结脚本代码中以下内容

① ex2.sh的Line3中read命令选项-n11功能:从输入中读取11个字符,读取后自动结束输入。

② ex2.sh的Line14的功能:根据上面得出的专业代号code在filename("major_code.txt")中搜索对应的行并把结果重定向到他

中。然后将t1中的内容重定向到major中当做输入。

4.总结

  通过此次实验,我对Linux中的shell程序设计有了新的认识。知道了如何创建和执行shell脚本,知道了各种shell命令的功能和用法。shell命丰富多彩,将一些简单的命令拼接起来可以实现很多有趣的功能。但是我对shell命令刚刚认识,更多功能还要以后慢慢去探索。

 

posted @ 2018-04-25 11:39  擎天柱w  阅读(236)  评论(2编辑  收藏  举报