shell编程

1. 在 /tmp 下新建一个名为 missing 的文件夹。

mkdir /tmp/missing

2. 用 man 查看程序 touch 的使用手册

man touch

3. 用 touch 在 missing 文件夹中新建一个叫 semester 的文件

touch用于修改文件的时间属性,如果没有目标文件,则会新建一个目标文件

touch /tmp/missing/semester

4. 将以下内容一行一行地写入 semester 文件:

#!/bin/sh
curl --head --silent https://missing.csail.mit.edu

第一行可能有点棘手, # 在Bash中表示注释,而 ! 即使被双引号(")包裹也具有特殊的含义。 单引号(')则不一样,此处利用这一点解决输入问题。更多信息请参考 Bash quoting 手册

cd /tmp/missing

echo \#\!/bin/sh > semester 或 echo '#!/bin/sh' > semester
echo curl --head --silent https://missing.csail.mit.edu >> semester

5. 尝试执行这个文件。例如,将该脚本的路径(./semester)输入到您的shell中并回车。如果程序无法执行,请使用 ls 命令来获取信息并理解其不能执行的原因。

./semester

ls -l  semester

ls -l后会发现

r-read(读),w-write(写),x-execute(执行)
可以发现是semester少了执行权限

6. 使用 chmod 命令改变权限,使 ./semester 能够成功执行

chmod +x semester 或 chmod 777 semester(777是直接把rwx全加上)

7. 使用 | 和 > ,将 semester 文件输出的最后更改日期信息,写入主目录下的 last-modified.txt 的文件中

./semester | grep last-modified > ~/last-modified.txt

grep:正则表达式,会把匹配的行找出来。

这个命令的意思是,在semester的输出中找到匹配last-modified的行,将这些行写入~/last-modified.txt

8. 写一段命令来从 /sys 中获取笔记本的电量信息,或者台式机 CPU 的温度

cat /sys/class/power_supply/BAT1/capacity

8. 编写两个bash函数 marco 和 polo 执行下面的操作。 每当你执行 marco 时,当前的工作目录应当以某种形式保存,当执行 polo 时,无论现在处在什么目录下,都应当 cd 回到当时执行 marco 的目录。 为了方便debug,你可以把代码写在单独的文件 marco.sh 中,并通过 source marco.sh命令,(重新)加载函数。通过source 来加载函数,随后可以在 bash 中直接使用。

#!/bin/bash

marco() {
        export MARCO=$(pwd)
        echo "current : $(pwd)"
}

polo() {
     cd "$MARCO"
     echo "jump $MARCO"
}

posted @ 2024-02-01 15:35  拾墨、  阅读(29)  评论(0编辑  收藏  举报