实验三——shell编程

  shell除了能作为解释程序出现,还是一种高级程序语言,有变量、关键字,还有各种控制语句。

命令历史

history显示历史命令清单,包括本身的history命令

 

history 50显示最近50行历史命令

/ect/passwd 用户账户信息

/etc/shadow 可选的加密后的密码文件

/etc/passwd-  /etc/passwd的备份文件

/etc/group 定义系统上组的文本文件

/etc/gshadow 影子化了的组文件

扫描二维码关注公众号,回复: 102089 查看本文章

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

id -u  只打印有效的用户ID

which:显示系统命令所在目录,直接定位到这个命令的绝对路径,在查看命令所在的目录的同时,还可以看到命令的别名

whereis:显示命令所在的目录及该命令帮助文档的路径,在查看命令所在的目录的同时,还可以看到命令的帮助文档所在的位置

locate:查找文件和目录,比find速度快很多

find:是一个通用的查找文件的命令,它可以用来查找所有的文件所在路径

grep:使用正则表达式搜索文本,并把匹配的行打印出来

-n在显示符合范本样式的那一列之前,标示出该列的编号。

-E将范本样式转换为普通表示法来使用

gimp

显示文件目录信息,详细信息,时间按照iso标准输出

以空格为分隔符截取上一条指令的第一个和第八个域

 

 gzip

可以用来压缩大的,较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中的压缩文件格式。有两个好处,意识可以减少空间,二是通过网络传输文件时,可以减少传输的时间。

查找以d为开头的文件,并统计行数

添加一个新用户

(4)根据要求写出相应的 shell 命令

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

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

③ 在用户名密码文件/etc/passwd 中查找登录 shell 为 bash 的用户信息记录,并显 示行号 第 3 页 /共 5 页 (提示:使用 grep 和正则表达式中的$)

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

 

(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 'BEGIN{print "file t2"} {print "line" NR ":" $0} END {print "over"}' t2

 

(6)查阅网络或帮助,体验命令 curl 和 wget 用法。

1、curl(文件传输工具)

常用参数如下:
-c,--cookie-jar:将cookie写入到文件
-b,--cookie:从文件中读取cookie
-C,--continue-at:断点续传
-d,--data:http post方式传送数据
-D,--dump-header:把header信息写入到文件
-F,--from:模拟http表达提交数据
-s,--slient:减少输出信息
-o,--output:将信息输出到文件
-O,--remote-name:按照服务器上的文件名,存在本地
--l,--head:仅返回头部信息
-u,--user[user:pass]:设置http认证用户和密码
-T,--upload-file:上传文件
-e,--referer:指定引用地址
-x,--proxy:指定代理服务器地址和端口
-w,--write-out:输出指定格式内容
--retry:重试次数
--connect-timeout:指定尝试连接的最大时间/s

2、wget(文件下载工具)

常用参数如下:
2.1 启动参数
-V,--version:显示版本号
-h,--help:查看帮助
-b,--background:启动后转入后台执行
2.2 日志记录和输入文件参数
-o,--output-file=file:把记录写到file文件中
-a,--append-output=file:把记录追加到file文件中
-i,--input-file=file:从file读取url来下载
2.3 下载参数
-bind-address=address:指定本地使用地址
-t,-tries=number:设置最大尝试连接次数
-c,-continue:接着下载没有下载完的文件
-O,-output-document=file:将下载内容写入到file文件中
-spider:不下载文件
-T,-timeout=sec:设置响应超时时间
-w,-wait=sec:两次尝试之间间隔时间
--limit-rate=rate:限制下载速率
-progress=type:设置进度条
2.4 目录参数
-P,-directory-prefix=prefix:将文件保存到指定目录
2.5 HTTP参数
-http-user=user:设置http用户名
-http-passwd=pass:设置http密码
-U,--user-agent=agent:伪装代理
-no-http-keep-alive:关闭http活动链接,变成永久链接
-cookies=off:不使用cookies
-load-cookies=file:在开始会话前从file文件加载cookies
-save-cookies=file:在会话结束将cookies保存到file文件
2.6 FTP参数
-passive-ftp:默认值,使用被动模式
-active-ftp:使用主动模式
2.7 递归下载排除参数
-A,--accept=list:分号分割被下载扩展名的列表
-R,--reject=list:分号分割不被下载扩展名的列表
-D,--domains=list:分号分割被下载域的列表
--exclude-domains=list:分号分割不被下载域的列表

3. 编写一个 shell 脚本,使用 4 种方式(参见第 4 章教材/课件)分别执行。

练习一

练习二

猜你喜欢

转载自www.cnblogs.com/rayya/p/8944344.html
今日推荐