MIT计算机教育缺失一课之shell使用

Porcovsky Lv3

课程链接

刘黑黑a的个人空间-刘黑黑a个人主页-哔哩哔哩视频

MIT 计算机教育中缺失的一课 (中英双字幕)、时间顶级名校最详细计算机知识讲解…_哔哩哔哩_bilibili

计算机教育中缺失的一课

shell、工具、脚本

Bash 中的字符串通过 '" 分隔符来定义,但是它们的含义并不相同。以 ' 定义的字符串为原义字符串,其中的变量不会被转义,而 " 定义的字符串会将变量值进行替换。

eg:

1
2
3
foo = bar #打印barecho '$foo'
echo "$foo" # 打印 $foo

shell的通配(globbing)

  1. 通配符

    可以使用?或者*来匹配字符

    1
    例如,对于文件 foo, foo1, foo2, foo10 和 bar, rm foo? 这条命令会删除 foo1 和 foo2 ,而 rm foo* 则会删除除了 bar 之外的所有文件。
  2. 花括号

    当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    convert image.{png,jpg}
    # 会展开为
    convert image.png image.jpg

    cp /path/to/project/{foo,bar,baz}.sh /newpath
    # 会展开为
    cp /path/to/project/foo.sh /path/to/project/bar.sh /path/to/project/baz.sh /newpath

    # 也可以结合通配使用
    mv *{.py,.sh} folder
    # 会移动所有 *.py 和 *.sh 文件

    mkdir foo bar

    # 下面命令会创建 foo/a, foo/b, ... foo/h, bar/a, bar/b, ... bar/h 这些文件
    touch {foo,bar}/{a..h}
    touch foo/x bar/y
    # 比较文件夹 foo 和 bar 中包含文件的不同
    diff <(ls foo) <(ls bar)
    # 输出
    # < x
    # ---
    # > y

    shellcheck工具可以帮助查找sh/bash脚本中的错误

  3. shell的解释行(shebang)

    Linux - 认识shell的解释行(Shebang)-CSDN博客

    为脚本指定运行环境,无需在调用时由用户指定解释器,从而对用户和其它程序隐藏其实现细节

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/local/bin/python
    # 第一行就是把该脚本的运行环境指定到python上去
    import sys
    for arg in reversed(sys.argv[1:]):
    print(arg)

    # 如下列出了一些典型的shebang解释器指令:

    #!/bin/sh—使用sh,即Bourne shell或其它兼容shell执行脚本
    #!/bin/csh—使用csh,即C shell执行
    #!/usr/bin/perl -w—使用带警告的Perl执行
    #!/usr/bin/python -O—使用具有代码优化的Python执行
    #!/usr/bin/php—使用PHP的命令行解释器执行
  4. tldr网站与GUI工具

    too long ,don’t read!

    man命令的简易替代版本(man命令显示的过于长和多了)

    tldr InBrowser.App

    1
    sudo apt install tldr #直接sudo apt安装就可以用的
  • 标题: MIT计算机教育缺失一课之shell使用
  • 作者: Porcovsky
  • 创建于 : 2025-02-07 09:34:08
  • 更新于 : 2025-02-07 09:38:11
  • 链接: https://pocro.github.io/2025/02/07/MIT计算机教育缺失一课之shell使用/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论
此页目录
MIT计算机教育缺失一课之shell使用