Skip to content

Course-00 你可能需要的 shell 入门课程

本课程以 MacOS 为例。

0. 安装 iTerm2

bash
# 在命令行窗口中执行
brew install iterm2 --cask
# 在命令行窗口中执行
brew install iterm2 --cask

1. 准备工作,统一将默认的 zsh 改为 bash

txt
系统首选项 -> 用户和群组 -> 右击用户[高级选项] -> 登录shell改为/bin/bash
系统首选项 -> 用户和群组 -> 右击用户[高级选项] -> 登录shell改为/bin/bash

2. 改善视觉体验

备份并修改 ~/.bash_profile

  • 备份
bash
# 在命令行窗口中执行
cd
cp .bash_profile .bash_profile.bak
# 在命令行窗口中执行
cd
cp .bash_profile .bash_profile.bak
  • 变更命令行提示符:
bash
# 在 .bash_profile 文件中增加
export PS1='\[\033[01;32m\]wbc@mbp\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$  '
# 在 .bash_profile 文件中增加
export PS1='\[\033[01;32m\]wbc@mbp\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$  '
  • 修改 ls 配色方案:
bash
# 在 .bash_profile 文件中增加
export CLICOLOR=1
export LSCOLORS=gxfxcxdxbxegedabagacad
export TERM=xterm-256color
# 在 .bash_profile 文件中增加
export CLICOLOR=1
export LSCOLORS=gxfxcxdxbxegedabagacad
export TERM=xterm-256color
  • 修改后应用
bash
# 在命令行窗口中执行
source .bash_profile
# 在命令行窗口中执行
source .bash_profile

启用 vim 语法高亮和行号

bash
# 在命令行窗口中执行
vim ~/.vimrc
# 在命令行窗口中执行
vim ~/.vimrc

输入以下内容(先按 i 进入编辑模式)

txt
syntax on
set number
set ruler
syntax on
set number
set ruler

配置 iTerm 背景半透明

txt
iTerm2首选项 -> profiles(Default) -> Window -> Window Appearance -> Transparency 按自己喜好调整
iTerm2首选项 -> profiles(Default) -> Window -> Window Appearance -> Transparency 按自己喜好调整

3. 基本命令

  • 基本概念介绍
    • 用户目录、工作目录
    • 命令行自动补全:Tab+Tab
    • 光标定位
      • ctrl+A:行首
      • ctrl+E: 行尾
      • ctrl+U: 清除当前光标之前内容
      • ctrl+L: 清屏
      • ↑ ↓: 上下光标键可以调出之前执行过的命令
  • 文件系统基本操作命令
    • cd (short for change directory)切换工作目录

      bash
      cd            # 在任何目录下可以通过cd命令回到用户主目录
      cd ..         # 返回上一级目录,整个目录是一棵树
      cd Desktop/   # 进入当前目录(假设目前处于用户主目录)的 Desktop 子目录
      cd ~/Desktop/ # 在任何目录下可以通过 ~ 符号引用用户主目录,访问用户主目录下的子目录或者任何文件
      cd /var       # 在任何目录下,可以由 / 开始,指定绝对路径访问目录或者文件
      cd            # 在任何目录下可以通过cd命令回到用户主目录
      cd ..         # 返回上一级目录,整个目录是一棵树
      cd Desktop/   # 进入当前目录(假设目前处于用户主目录)的 Desktop 子目录
      cd ~/Desktop/ # 在任何目录下可以通过 ~ 符号引用用户主目录,访问用户主目录下的子目录或者任何文件
      cd /var       # 在任何目录下,可以由 / 开始,指定绝对路径访问目录或者文件
    • mkdir (short for make directory)创建目录,创建一个文本文件

      bash
      mkdir shell     # 创建一个名为 shell 的子目录
      cd shell        # 进入 shell 子目录
      touch 1.txt     # 生成一个空文件 1.txt
      echo abc > 2.txt # 重定向 echo 输出 abc 作为 2.txt 文件的内容
      echo 123 >> 2.txt # 对 2.txt 追加内容
      cat 2.txt       # 打印 2.txt 文件内容
      mkdir shell2    # 创建一个名为 shell2 的子目录
      rmdir shell2    # 删除 shell2 子目录, short for remove directory
      rm *.txt        # 删除 1.txt 和 2.txt 文件 short for remove
      mkdir shell     # 创建一个名为 shell 的子目录
      cd shell        # 进入 shell 子目录
      touch 1.txt     # 生成一个空文件 1.txt
      echo abc > 2.txt # 重定向 echo 输出 abc 作为 2.txt 文件的内容
      echo 123 >> 2.txt # 对 2.txt 追加内容
      cat 2.txt       # 打印 2.txt 文件内容
      mkdir shell2    # 创建一个名为 shell2 的子目录
      rmdir shell2    # 删除 shell2 子目录, short for remove directory
      rm *.txt        # 删除 1.txt 和 2.txt 文件 short for remove
    • 命令管道,将前一个命令的输出作为后一个命令的输入,用 | 符号连接起来

      bash
      seq 10          # 请自行操作体验
      seq 10 |sort     # 请自行操作体验
      seq 10 |sort -n  # 请自行操作体验
                      # 如何逆序?
      seq 10 |xargs -n 2 
      seq 10 |xargs -n 2 | sort -k2 -n
      seq 10          # 请自行操作体验
      seq 10 |sort     # 请自行操作体验
      seq 10 |sort -n  # 请自行操作体验
                      # 如何逆序?
      seq 10 |xargs -n 2 
      seq 10 |xargs -n 2 | sort -k2 -n

4. 如何寻求帮助资源

  • man 遇到困难,问 man(人)

  • man (short for manual,手册)查询帮助内容

    bash
    man sort # 找一找逆序的选项是什么
    man sort # 找一找逆序的选项是什么
  • --help-hh 命令一般都有帮助选项,或者帮助子命令h

5. vim 介绍

  • 命令模式和编辑模式切换:i Esc
  • 打开 vimtutor 练习前两节

6. 其他常用命令介绍

  • history, grep, ! :命令历史,关键词过滤,重新执行之前的命令

  • head, less:显示部分内容

  • top:查看电脑负载

  • curl:访问互联网

  • wget:下载文件

  • awk/sed:模式化处理文本、正则表达式(零宽断言)

  • jq:json文本解析

    bash
    wget https://app.im.alacps.com/swagger/v1/swagger.json
    cat swagger.json| jq 'keys'
    cat swagger.json| jq '.info'
    wget https://app.im.alacps.com/swagger/v1/swagger.json
    cat swagger.json| jq 'keys'
    cat swagger.json| jq '.info'

7. git 介绍

bash
mkdir project     # 建立 project 子目录
cd project        # 进入 project 子目录
git init          # 初始化版本库
echo HelloWorld > 1.txt
git add .         # 对当前目录及其子目录的所有文件添加跟踪
git diff          # 查看变更
git commit -am'init' # 提交变更
git status        # 查看当前状态
git log           # 查看提交日志
mkdir project     # 建立 project 子目录
cd project        # 进入 project 子目录
git init          # 初始化版本库
echo HelloWorld > 1.txt
git add .         # 对当前目录及其子目录的所有文件添加跟踪
git diff          # 查看变更
git commit -am'init' # 提交变更
git status        # 查看当前状态
git log           # 查看提交日志

8. 正则表达式、零宽断言

  • TODO:

9. 课后练习

  • 完成 vim 自带的教程 vimtutor
  • 尝试建立自己的 git 库,并进行 提交、查看变更、回滚、开设分支、推送提交到远程服务器,拉取 等练习
  • 了解 正则表达式、尝试使用 零宽断言 匹配