栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux实验笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux实验笔记

lab2
  1. 编写 shell 脚本 p1.sh,完成向用户输出“Hello!”的问候语。并根据实验的时间,分别给出:“上午好!”或者“下午好!”或者“晚上好!”的问候。 提示:使用 date 取得当前的时间,并对 date 进行格式化取得当前时间中的小时, 根据当前的小时来判断上午、下午还是晚上。1-11 点上午,12-18 点下午,19-24 点晚上。
  • 等号两边不能有空格
  • 与数字比较时数字也要加" "
  • 记得fi
  1. 编程完成 shell 脚本 p2.sh:如果存在 p1.sh 文件,则输出信息:p1.sh 文件已 经存在,并询问是否允许?如果用户回答:要运行,那么给出运行结果;如回到 不要运行,则退出程序。如果 p1.sh 不存在,则提示用户先创建文件并退出。

  2. 编写 shell 脚本,按要求打印输出乘法口诀表,输出用两种方式完成:一种是 直接在控制台输出;另一种是输出至文件 result.txt。
    1x1=1
    1x2=2 2x2=4
    1x3=3 2x3=6 3x3=9
    1x4=4 2x4=8 3x4=12 4x4=16
    1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
    1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
    1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
    1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
    1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

  • 输出重定向就是>> result.txt
  • 注意需要用到c实现不换行以及echo换行
lab3
  1. 生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
    猜小了或猜大了,直至用户猜对脚本结束。(提示:RANDOM 为系统自带的系统变量,
    值为 0‐32767 的随机数,使用取余算法将随机数变为 1‐100 的随机数)
  • 注意要再次读取输入
  1. 使用 shell 脚本编写一函数 add 求两个数的和,要求这两个数用位置参数传入,最后
    输出结果。
  • 注意要在sh文件末尾调用函数并传入参数
  1. 编写一个 shell 脚本,实现如下功能:把第二个位置参数及其以后的各个参数指定的
    文件复制到第一个位置参数指定的目录中。
  • 用到了shift。位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。
  • 用到了“$@”获取所有输入参数
  1. 编写脚本模拟实现交互式文件目录操作,实现命令包括:dir-列出当前目录下的文件和子目录;cd-切换目录;wcd-显示当前工作目录;create-创建一个文件;delete-删 除一个文件;rename-重命名文件;newdir-创建目录;deldir-删除目录;exit-退出系统。(提示:可使用 select 命令实现交互操作,题目中要求实现的命令可用 Linux shell中相关的命令模拟实现,如 dir 可用使用 ls 命令实现)。

  • 读取所需要的参数即可
lab4 awk教程

awk入门教程-阮一峰

  • 基本用法
  • 变量
    • NR 当前处理行
    • FILENAME:当前文件名
    • FS:字段分隔符,默认是空格和制表符。
    • RS:行分隔符,用于分割每一行,默认是换行符。
    • OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
    • ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
    • OFMT:数字输出的格式,默认为%.6g。
  • 函数
    • tolower():字符转为小写。
    • length():返回字符串长度。
    • substr():返回子字符串。
    • sin():正弦。
    • cos():余弦。
    • sqrt():平方根。
    • rand():随机数。
  • 条件
  • if语句
  1. 针对以下文本内容的操作,请写出相关的 awk 命令
    Beth 4.00 0
    Dan 3.75 0
    Kathy 4.00 10
    Mark 5.00 20
    Mary 5.50 22
    Susie 4.25 18
    (1) 当第 3 列大于 0 时,输出文本中对应行的第 1 列和第 2 列与第 3 列之积
  • 将数据存入data.txt 用输入重定向读取

(2) 统计第 3 列大于 15 的行数,记为 X,并以下列格式输出 “X
employees worked more than 15 hours.”

  • 直接作为awk的参数传入data.txt也行
  • 创建了变量X 并设置了X增长的条件
  • BEGIN{} (执行前运行) {}(执行中运行) END{}(执行后运行) 是awk常用的三个环节

(3) 使用特殊变量 NR、NF,统计输出整个文本的行数、单词数和字符数

awk '{words=words+NF;chars=chars+length($0)} END{print "行数:",NR,"单词数:",words,"字符数目:",chars}' data.txt

  • 变量初始化为0
  1. 使用 awk 统计/etc/passwd 文件中,
    (1) 登陆 shell 为“/sbin/nologin”的用户个数
 cat /etc/passwd | awk -v i=0  -F ':' '{if ($NF=="/sbin/nologin") i=i+1} END{print i}'
  • $NF就是一行数据最后一列的那个值
  • 注意-F 和-v之间要用空格分开 不然会有错
cat /etc/passwd | awk -F ':'-vi=0 '{if ($NF=="/sbin/nologin")i=i+1}END{print i}'
#wrong
cat /etc/passwd | awk -F ':' -vi=0 '{if ($NF=="/sbin/nologin")i=i+1}END{print i}'
# true

(2) 用户名包含’g’的用户,打印出用户名和 UID

$ cat /etc/passwd | awk -F : '{print $1,$3}'|awk -F : '/g/{print $1$2}'
  • 先将用户名和UID提取出来,再对用户名做正则匹配
  1. 使用 awk 统计当前文件夹下,文件总的大小
ls -l | awk -vdata=0 '{data+=$5}END{print"total size:",data,"Bytes"}'
  • 将ls的输出用管道输入awk

sed菜鸟教程
Linux sed 命令是利用脚本来处理文本文件,主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e