shell技巧分享(四)

2018-04-20 LEo 更多博文 » 博客 » GitHub »

原文链接 http://reborncodinglife.com/2018/04/20/shell-tricks-4/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


这是一个系列文章,主要分享shell(部分功能仅适用于bash)的使用建议和技巧,每次分享3点,希望你能有所收获。

1 常用快捷键

  • Alt+Backspace:删除光标前的一个单词
  • Alt+F:移动光标到下一个空格处
  • Alt+B:移动光标到上一个空格后第一个字符处
  • Ctrl+R:搜索执行过的命令行
  • Ctrl+U:删除光标之前所有字符
  • Ctrl+K:删除光标之后的所有字符
  • Ctrl+A:移动光标到行首
  • Ctrl+E:移动光标到行尾

这8个快捷键在命令行操作时会经常用到,如果你没有使用过,多用几次就习惯了,另外,多记住几个快捷键没什么坏处。

2 bash调试模式

示例脚本:

#!/bin/bash -x

script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo script dir is "<$script_dir>"

运行脚本:

$ ./get_cur_dir.sh
+++ dirname ./get_cur_dir.sh
++ cd .
++ pwd
+ script_dir=/media/sf_share/git/bash_practice
+ echo script dir is '</media/sf_share/git/bash_practice>'
script dir is </media/sf_share/git/bash_practice>

通过在脚本顶部添加-x选项,运行脚本时会打印出每一行命令,输出的+号个数表示命令的嵌套层数,从输出可以清楚看到每条命令的执行情况,方便调试脚本。如果去掉-x选项,运行脚本只会打印:script dir is

3 获取脚本所在目录

示例脚本:

#!/bin/bash

script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo script dir is "<$script_dir>"

运行脚本:

$ . ./get_cur_dir.sh
script dir is </media/sf_share/git/bash_practice>
$ source ./get_cur_dir.sh
script dir is </media/sf_share/git/bash_practice>
$ sh ./get_cur_dir.sh
script dir is </media/sf_share/git/bash_practice>

在shell脚本内部,经常需要去获取脚本所在目录。示例中给出的方法,无论使用source、点号或者sh方式运行脚本,都可以正确获取脚本所在目录。