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"
}