Missing-Semester : The Shell 笔记

Missing-Semester : The Shell 笔记

课程地址

视频

讲义

课程内容

由于我用的是 windows,可以安装一个 WSL 安装 Ubuntu 18.04 LTS。很多功能都可以用,有一些不行。

date:可获得当前时间

echo hello:把自己的参数一个一个打印到 stdout,中间用一个空格隔开;最后一个换行

echo 是一个程序,shell 借助环境变量来找到这个程序所在的位置。

echo $PATH:输出环境变量。

which echo:输出 echo 程序的位置。

windows路径:用反斜杠,分盘
Linux路径:用斜杠,文件系统全部起源于 /
路径分为相对路径、绝对路径
相对路径:方便相对调用;绝对路径:方便全局调用。

pwd:输出当前路径

cd:改变当前目录

(后面的一个参数指定路径,可以是相对路径,也可以是绝对路径。特殊地,. 表示当前目录,..表示父目录,~ 表示用户目录,- 表示上一个目录)

ls:列出所有文件(目录),后接一个参数

option / flag:一般用 --- 开头

只带一个形式,后面不接值的叫 flag
后面接=xxx 的值的叫 option
大部分程序有 flag --help 获得帮助

ls -l

列出详细信息
drwxrwxrwt 1 root root 512 Jul 2 16:01 tmp
第一个字母:d表示目录,-表示文件,l表示链接
后面 3 * 3 的符号,每三个分别表示文件主、用户组、其他人的权限。
r 表示读。文件:看内容;目录:看目录里有哪些文件。(仅包括文件名,如果是 ls -l 其实已经遍历了目录,要 x 权限)
w 表示写。文件:编辑;目录:(整个地)重命名、新建、删除文件,即改变目录这张表。
x 表示执行。文件:执行;目录:进入一个目录。(要进入一个目录,要求所有父目录都有 x 权限)
- 表示这个权限没有

mv old_path/file new_path/file:移动、重命名文件

cp old_path/file new_path/file:复制

rm file:删除文件,不删除目录。

需要加 -r 进行递归删除。

rmdir dir:删除目录

mkdir dir:创造目录

man xxx:显示命令文档

Ctrl + L:清空终端

< input_file > output_file:重定向 stdin, stdout,默认是终端

cat file:输出文件内容(注意这里 file 是参数)

cat:将标准输入输出到标准输出

cat < a.txt > b.txt

“复制”文件(注意这里是 cat 的第二种用法)

>> file:特殊的重定向,即“追加”。

| 管道。将左边程序的 stdout 变成右边程序的 stdin。

tail -n1:输出 stdin 的最后一行(1可以变成其他)

root 用户:用户代号0,可以干任何事。

sudo:以 root 执行命令

sys 包含计算机核心部分(硬件)的一个“目录”

echo 500 > brightness:返回 Permission denied:没有root 权限

sudo echo 500 > brightness:仍然如此。

原因是重定向的设定与 echo 无关,这些重定向、管道是 shell 提供的,而 shell 并没有 root。
让 shell root 的方法是 sudo su。但这样做比较危险

不 root shell也可以:

echo 500 1060 | sudo tee brightness:tee 把 stdin 同时输出到参数代表的文件和 stdout

xdg-open file:用相应格式打开文件(在 WSL 上失效)

课后练习

  1. 输入 echo $SHELL,确实输出 /bin/bash
  2. 方法是
    cd /tmp
    mkdir missing
    
  3. 输入 man touch,阅读手册,大概知道它是个更新时间的东西,相当于“摸”一下这个文件但不修改。
  4. 从手册知道,只需要
    cd missing
    touch semester
    
  5. 嘛,这里它说了要用单引号,那就可以这样写:
    echo '#!/bin/sh' > semester
    echo 'curl --head --silent https://missing.csail.mit.edu` >> semester
    
  6. 使用 ./semester,失败。再用 ls -l semester,发现它根本没有 x 权限
  7. man chmod,了解它是给文件/目录加减权限的。
  8. 那就只需要 chmod u+x semester,即可。然后 ./semester 输出一堆信息。
  9. 类似地,用
    ./semester | tail -n2 > last-modified.txt
    cat last-modified.txt
    
    我好像不会删末尾空格
  10. 第一个任务输入
    cat /sys/class/power_supply/battery
    
    有一堆文件,那个 capacity 就是容量吧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日居月诸Rijuyuezhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值