Linux常用命令指南 - set命令 高效命令行终端技巧

Linux常用命令指南 - set 命令 高效命令行终端技巧


set 命令 高效命令行终端技巧

  • Linux常用命令指南 - set 命令 高效命令行终端技巧
  • 前言
  • 一、set 是什么?
  • 二、set help 中文手册
  • 三、 set 启用 vi 风格的行编辑界面
  • 四、终端使用Bang(!)提高效率
  • 总结


前言

程序员经常在终端上进行执行各种命令,提高终端下的工作效率是很有必要的。本文主要介绍在终端下使用set 启动vi编辑模式 来快速输入命令的技巧,同时也会涉及 Bang(!) 命令。


一、set 是什么?

set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。

二、set help 中文手册

以下是 set --help 的输出:

$ set --help 
set: set [-abefhkmnptuvxBCEHPT] [-o 选项名] [--] [-] [参数 ...]
    设定或取消设定 shell 选项和位置参数的值。
    
    改变 shell 属性和位置参数的值,或者显示 shell 变量的名称和值。
    
    选项:
      -a  标记修改的或者创建的变量为导出变量。
      -b  在任务终止时立即进行通知。
      -e  如果一个命令以非零状态退出,则立即退出。
      -f  禁用文件名生成(通配符匹配)。
      -h  查找命令时记住它们的位置。
      -k  所有的赋值参数都会进入命令的环境,而不仅仅是命令名称
          之前的参数。
      -m  启用任务控制。
      -n  读取命令但不执行。
      -o 选项名
          设定与 <选项名> 对应的变量:
              allexport    与 -a 相同
              braceexpand  与 -B 相同
              emacs        使用 emacs 风格的行编辑界面
              errexit      与 -e 相同
              errtrace     与 -E 相同
              functrace    与 -T 相同
              hashall      与 -h 相同
              histexpand   与 -H 相同
              history      启用命令历史
              ignoreeof    shell 读取到 EOF 时不会退出
              interactive-comments
                           允许交互式命令中出现注释
              keyword      与 -k 相同
              monitor      与 -m 相同
              noclobber    与 -C 相同
              noexec       与 -n 相同
              noglob       与 -f 相同
              nolog        目前可接受,但会被忽略
              notify       与 -b 相同
              nounset      与 -u 相同
              onecmd       与 -t 相同
              physical     与 -P 相同
              pipefail     流水线的返回值是最后一个以非零状态退出的命令的退出
                           状态,或者如果没有命令以非零状态退出,则返回零。
              posix        改变 bash 中默认操作和 Posix 标准不同的行为,
                           以符合标准
              privileged   与 -p 相同
              verbose      与 -v 相同
              vi           使用 vi 风格的行编辑界面
              xtrace       与 -x 相同
      -p  只要真实用户 ID 和有效用户 ID 不匹配时就会被打开。
          禁用对 $ENV 文件的处理以及 shell 函数的导入。关闭此选项
          会导致有效 uid 和 gid 被设定为真实 uid 和 gid。
      -t  读取并执行一个命令之后退出。
      -u  替换时将未设定的变量视为错误。
      -v  读取 shell 输入行时将其打印。
      -x  执行命令时打印命令及其参数。
      -B  shell 会执行大括号展开。
      -C  设定之后,禁止以重定向输出的方式覆盖普通文件。
      -E  设定之后,ERR 陷阱会被 shell 函数继承。
      -H  启用 ! 风格的历史替换。当 shell 是交互式的时候这个标志默认打开。
      -P  设定之后,当执行会改变当前目录的命令,例如 cd 时,不解析符号链接。
      -T  设定之后,DEBUG 和 RETURN 陷阱会被 shell 函数继承。
      --  将所有剩余的参数赋值给位置参数。
          如果没有剩余的参数,则取消设定位置参数。
      -   将所有剩余的参数赋值给位置参数。
          关闭 -x-v 选项。
    
    使用 + 而不是 - 会关闭标志。标志也可以在 shell 被启动时使用。当前已设定的
    标志可以在 $- 变量中找到。剩余的 n 个 <参数> 是位置参数,并且会被按顺序
    赋值给 $1, $2, .. $n。如果没有给定 <参数>,则打印所有的 shell 变量。
    
    退出状态:
    返回成功,除非使用了无效的参数

三、 set 启用 vi 风格的行编辑界面

以下是默认的终端命令行移动,但是实际上使用起来速度很慢,有一定局限性。

// 1. Esc相关,通过此种方式可以不用每次更改alt,这样alt就可以操作菜单栏了
M + b // 先单击 Esc 键,然后再按 b 键,往回(左)移动一个单词
M + f // 往后(右)移动一个单词
M + d // 由光标位置开始,删除单词,直到该单词结束。
M + num + cmd // 这种格式可以重复多次cmd命令,如 M + 4 + ctrl + f 向右移动4个字符
M + Ctrl + ] + char // 向左搜索char字符, M + ctrl + ] + b 向左搜索b字符

// 2. Ctrl相关
Ctrl + u // 由光标所在位置开始,剪切左方所有的字符,直到该行开始。
Ctrl + k // 由光标所在位置开始,剪切右方所有的字符,直到该行结束。
Ctrl + y // 复制已剪贴的字符串
Ctrl + a // 移到行首
Ctrl + e // 移到行尾
Ctrl + b // 往回(左)移动一个字符
Ctrl + f // 往后(右)移动一个字符
Ctrl + ] + char // 向右搜索char字符, ctrl + ] + b 向右搜索b字符

为了提高光标移动速度,因此有了以下解决方案:

$ set -o vi on # 启用 vi 编辑模式,跳转和 vi 一致

四、终端使用Bang(!)提高效率

Bang(!)命令,可以减少键盘输入,大大提高程序员的工作效率。

$ !! # 上一条命令
$ !* # 使用上一条命令的所有参数
$ !$ # 使用上一条命令的最后一个参数
$ !:- # 使用上一条命令中除了最后一个参数的部分,在ps -ef | grep pid中使用很高效
$ ^foo^bar  # 替换上一条命令中的一个部份,仅替换第一个
$ !!:gs/foo/bar  # 替换上一条命令中的一个部份,替换所有

总结

以上就是今天要讲的内容,本文介绍了set 启动vi编辑模式 来快速输入命令的技巧,同时也会涉及 Bang(!) 命令。

你可能感兴趣的:(linux,linux,运维,服务器)