• Missing-Semester : The Shell 笔记


    Missing-Semester : The Shell 笔记

    课程地址

    视频

    讲义

    课程内容

    由于我用的是 windows,可以安装一个 WSL 安装 Ubuntu 18.04 LTS.

    date
    
    • 1

    获得当前时间

    echo hello
    
    • 1

    打印自己的参数 ‘hello’。

    但注意到完整的一个参数间不能有空格,所以输出 ‘hello world’ 可以用

    echo 'hello world'
    echo "hello world"
    echo hello\ world
    
    • 1
    • 2
    • 3

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

    echo $PATH
    
    • 1

    输出所有要搜素的环境变量。

    which echo
    
    • 1

    输出 echo 程序的位置。

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

    pwd
    
    • 1

    输出当前路径

    cd
    
    • 1

    改变当前目录

    (后面参数可以是相对路径,也可以是绝对路径。特殊地,. 表示当前目录,..表示父目录)

    ls 
    
    • 1

    列出所有文件(目录)

    特殊地,~表示用户目录文件夹

    cd - 返回上一次的目录

    参数
    
    • 1

    一般用 --- 开头

    只带一个形式,后面不接值的叫 flag

    后面接=xxx 的值的叫 option

    大部分程序有参数 --help 获得帮助

    `ls -l`
    
    • 1

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

    mv [old path] [new path]
    
    • 1

    移动、重命名文件

    cp [old] [new]
    
    • 1

    复制

    rm [path]
    
    • 1

    删除文件,不删除目录。

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

    rmdir [dir]
    
    • 1

    删除空目录

    mkdir [dir]
    
    • 1

    创造目录

    man [program]
    
    • 1

    显示文档(按 q 退出)

    Ctrl + L
    
    • 1

    清空终端

    < input_file > output_file
    
    • 1

    输入、输出流,默认是终端

    cat [file]
    
    • 1

    输出文件内容

    cat < a.txt > b.txt
    
    • 1

    “复制”文件

    >>
    
    • 1

    添加

    cat < a.txt >> b.txt
    
    • 1

    添加

    | 管道。将左边程序的输出变成右边程序的输入。

    tail -n1 [content]
    
    • 1

    输出content的最后一行(1可以变成其他)

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

    sudo
    
    • 1

    以 root 执行命令

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

    echo 500 > brightness
    
    • 1

    返回 Permission denied:没有root 权限

    sudo echo 500 > brightness
    
    • 1

    仍然如此。

    原因是重定向的设定 echo 并不知道,这些重定向、管道是 shell 提供的,而 shell 并没有 root。

    # echo 1 > /sys/net/ipv4_forward 可以运行的原因是它前面是 # 开头,表示当前shell已经root。

    shell root 的方法是 sudo su。但这样做比较危险

    不 root shell也可以:

    echo 500 1060 | sudo tee brightness
    
    • 1

    tee 把输入同时输出到文件和终端

    xdg-open [file]
    
    • 1

    用相应格式打开文件

    课后练习

    1. 输入 echo $SHELL,确实输出 /bin/bash
    2. 方法是
      cd /tmp
      mkdir missing
      
      • 1
      • 2
    3. 输入 man touch,阅读手册,大概知道它是个更新时间的东西,相当于“摸”一下这个文件但不修改。
    4. 从手册知道,只需要
      cd missing
      touch semester
      
      • 1
      • 2
    5. 嘛,这里它说了要用单引号,那就可以这样写:
      echo '#!/bin/sh' > semester
      echo 'curl --head --silent https://missing.csail.mit.edu` >> semester
      
      • 1
      • 2
    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
      
      • 1
      • 2
      我好像不会删末尾空格
    10. 第一个任务输入
      cat /sys/class/power_supply/battery
      
      • 1
      有一堆文件,那个 capacity 就是容量吧
  • 相关阅读:
    基于nfs动态供给pv搭建ELK集群
    【剑指】数组中的重复数字
    Spark 3.0 - 2.机器学习核心 DataFrame 应用 API 与操作详解
    寻找第k小的元素(线性时间复杂度)
    Redis_09_Redis集群实现Sentinel哨兵应对高可用
    浅谈压力测试的重要目标及意义
    浅谈线性基
    亚商投资顾问 早餐FM/1028华为海外推广5.5G
    Python 给视频添加水印
    JVM调优相关命令以及解释
  • 原文地址:https://blog.csdn.net/qq_41996523/article/details/125619539