magedu第二周作业

 2. 创建一个文件,添加内容,并且演示课程命令cat,tail,more等等相关文本处理工具的用法,并且总结到博客,添加详细的注释信息

#创建一个测试文件
touch test.txt
#随机写入文本
root@rocky8:~# cat test.txt
Hello, this is a line of text.
This is another line.
abcdefg
1234567890
#1.CAT
#-e 显示行结束符
root@rocky8:~# cat -e test.txt
Hello, this is a line of text.$
This is another line.$
abcdefg$
1234567890$
#-n 对显示出的每一行进行编号
root@rocky8:~# cat -n test.txt
     1	Hello, this is a line of text.
     2	This is another line.
     3	abcdefg
     4	1234567890
#2.tail
#常用选项
#n|--lines=N 指定获取后N行,如果写成+N,表示从第N行开始到文件结束
root@rocky8:~# tail -n2 test.txt 
abcdefg
1234567890
#3.more
more [OPTIONS...] FILE...
#常用选项
-d #在底部显示提示
-s #压缩连续空行
#命令选项
#空格键 #翻页
#回车键 #下一行
#!cmd  #执行命令
#h  #显示帮助
#:f  #显示文件名和当前行号
#=  #显示行号



3. 总结正则表达式的语法

3.1 基本正则表达式元字符

  • .:匹配任意单个字符。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • {n}:匹配确定的n次。
  • {n,}:至少匹配n次。
  • {n,m}:最少匹配n次且最多m次。
  • []:匹配括号内的任意一个字符。
  • |:匹配两项之间的任意一项(或)。
  • \:转义特殊字符或表示特殊序列的开始。
  • \d:匹配任意数字(等同于 [0-9])。
  • \D:匹配任意非数字字符(等同于 [^0-9])。
  • \w:匹配任意字母数字字符(等同于 [a-zA-Z0-9_])。
  • \W:匹配任意非字母数字字符(等同于 [^a-zA-Z0-9_])。
  • \s:匹配任意空白字符(包括空格、制表符、换行符等)。
  • \S:匹配任意非空白字符。
  • [abc]:匹配任何一个字符 a、b 或 c。
  • [^abc]:匹配除了字符 a、b、c 之外的任意字符。
  • [a-z]:匹配任何一个小写字母。
  • [A-Z]:匹配任何一个大写字母。
  • [0-9]:匹配任何一个数字。

4. 文本三剑客相关的总结,grep的用法,sed的语法和awk的语法(还没看到awk)

grep 的用法

基本用法

  • grep "pattern" file:在 file 中查找包含 pattern 的行。
  • grep -i "pattern" file:忽略大小写搜索。
  • grep -v "pattern" file:显示不包含 pattern 的行。
  • grep -n "pattern" file:显示匹配行及行号。
  • grep --color "pattern" file:将匹配的文本高亮显示。

正则表达式和基本模式

  • grep "[a-z]" file:匹配任何小写字母。
  • grep "^pattern" file:匹配以 pattern 开始的行。
  • grep "pattern$" file:匹配以 pattern 结束的行。

递归搜索

  • grep -r "pattern" /path/to/dir/:递归地在指定目录下搜索包含 pattern 的文件。

sed 的语法

基本语法

  • sed 's/old/new/g' file:将 file 中的 old 替换为 new
  • sed -i 's/old/new/g' file:直接修改文件内容。

脚本命令

  • a\newline:在当前行后追加文本。
  • i\newline:在当前行前插入文本。
  • d:删除当前行。
  • s:替换文本。

模式匹配和替换

  • sed '/pattern/a\newline' file:在匹配 pattern 的行后追加文本。
  • sed '1,5d' file:删除文件的第1行到第5行。
  • sed 's/old/new/2' file:仅替换文件中第二次出现的 old

5. 总结程序的组成相关知识点
6. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用

1.命名要求 区分大小写 不能使程序中的保留字和内置变量:如:if, for 只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反
命名习惯 见名知义,用英文单词命名,并体现出实际作用,不要用简写,如:ATM 变量名大写 局部变量小写 函数名小写 大驼峰StudentFirstName,由多个单词组成,且每个单词的首字母是大写,其它小写 小驼峰studentFirstName ,由多个单词组成,第一个单词的首字母小写,后续每个单词的首字母是 大写,其它小写 下划线: student_name

2.变量类型以及使用

1.环境变量: 可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量 一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程 一般只在系统配置文件中使用,在脚本中较少使用

#声明并赋值
export name=VALUE
declare -x name=VALUE
#或者分两步实现
name=VALUE
export name
#变量引用:
$name
${name}

只读变量:只能声明定义,但后续不能修改和删除,即常量

#声明只读变量:
readonly name
declare -r name
#查看只读变量:
readonly [-p]
declare -r

位置变量:在bash shell中内置的变量, 在脚本代码中调用通过命令行传递给脚本的参数

$1, $2, ... 对应第1个、第2个等参数,shift [n]换位置
$0 命令本身,包括路径
$* 传递给脚本的所有参数,全部参数合为一个字符串
$@ 传递给脚本的所有参数,每个参数为独立字符串
$# 传递给脚本的参数的个数
注意:$@ $* 只在被双引号包起来的时候才会有差异

#清空所有位置变量
set --

退出状态码变量

当我们浏览网页时,有时会看到下图所显示的数字,表示网页的错误信息,我们称为状态码,在shell脚 本中也有相似的技术表示程序执行的相应状态。

#进程执行后,将使用变量 $? 保存状态码的相关数字
#不同的值反应成功或失败,$?取值范例 0-255
$?的值为0 #代表成功
$?的值是1到255   #代表失败
#用户可以在脚本中使用以下命令自定义退出状态码
exit [n]

7. 编写一个脚本猜数字,每次提示用户比目标数字是大还是小,直到猜成功位置

#!/bin/bash
number=$((RANDOM%100+1))
echo "一个1到100之间的数字,猜得到吗?"


for(( ; ; )) do
        read -p "请输入你的猜测" guess
        if ! [[ "$guess" =~ ^[0-9]+$ ]]; then
                echo "请输入一个有效的整数。"
        continue
    fi

    if [ "$guess" -lt "$number" ]; then
        echo "太小了,再试试看。"
    elif [ "$guess" -gt "$number" ]; then
        echo "太大了,再试试看。"
    else
        echo "恭喜你!你猜对了数字是 $number。"
        break
    fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值