标签 bash 下的文章

有些时候, 我们在 Shell 脚本中, 添加 Yes or No 选项, 便于用户决策某些流程, 可以使用下面的示例逻辑.

while true
do
    echo -n "请确认您的选择是或否。 (Y(y)表示是,N(n)表示否): "
    echo ' '
    read CONFIRM
    case $CONFIRM in
        y|Y) break ;;
        n|N)
        echo "你选择了 : " $CONFIRM
    exit
;;
*) echo "请只输入 Y(y)/N(n)"
esac
done

- 阅读剩余部分 -

我们在 Linux 环境中常用的 Shell 环境大多都是 Bash Shell, 即使是 MacOS , 默认 Shell 环境也是 Bash Shell, 了解 Bash Shell 的快捷键将有助于我们快速和 Shell 环境交互.

光标移动

  • Ctrl + b 向后移动一个字符
  • Ctrl + f 向前移动一个字符
  • Alt + b or Ctrl + ← 向后移动一个单词
  • Alt + f or Ctrl + → 向前移动一个单词
  • Ctrl + a 移动到行首
  • Ctrl + e 移动到行尾

- 阅读剩余部分 -

Shell 环境一般在我们输入之前, 会有部分提示信息, 快速让使用者知道当前环境的信息,比如当前用户/当前路径等. Bash Shell 同样给我们提供了定制这部分的逻辑,在 Bash Shell 下使用 PS1 来设置 Shell 提示信息.

PS 原意是 Prompt String, 当然有 PS1, 至少还会有其他的, 比如 PS2.

  • PS1 默认 Shell 提示符
  • PS2 多行命令的默认提示符, 一个非常长的命令可以通过在末尾加 \ 使其分行显示 , 多行命令提示默认值是 >
  • PS3 选择输入时的提示符, 默认值为 #?
  • PS4 配合set -x用来修改跟踪输出的前缀, set -x 一般用在调试过程, 显示整个脚本的执行过程, 默认值为 ++

- 阅读剩余部分 -

了解 Bash Shell 环境初始化流程的最好的办法是查看 man bash, 中间有部分专门描述 Bash Shell 相关的环境配置文件.如下:

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bashrc
              The systemwide per-interactive-shell startup file
       /etc/bash.bash.logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

我们看到 bash man page 中提到 login shells的概念, 我们先来了解下, 什么是 login shells? 什么是 no login shells.

- 阅读剩余部分 -