专栏首页LEo的网络日志shell技巧分享(四)

shell技巧分享(四)

20 Apr 2018 shell技巧分享(四)

这是一个系列文章,主要分享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 </media/sf_share/git/bash_practice>

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方式运行脚本,都可以正确获取脚本所在目录。

LEo at 00:05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • go获取机器的mac地址和ip

    songleo
  • 如何调试Windows的stackdump文件

    songleo
  • shell技巧分享(七)

    songleo
  • 面试中碰到的坑之包含漏洞专题

    lonelyvaf
  • vue -- 跨域cookie 丢失的问题

    小蔚
  • Python基础之运算符

    1 算术运算符2 位运算符3 比较运算符4 赋值运算符5 身份运算符6 成员运算符7 逻辑运算符

    用户7886150
  • 自建ceph yum源

    新手小白教程之如何在内网环境构建yum源 准备好一台新安装好的CentOS7 机器,不要安装任何软件包。

    用户1260683
  • GAEA:通过强化学习实现公平获取的图形增强(CS ML)

    在社会和社会技术网络中,不同亚群体获取资源的机会不均是一个普遍的问题。 例如,城市基础设施网络可能使某些种族群体更容易获得资源,如高质量的学校、杂货店和投票站。...

    栾博舒
  • 一个例子理解数据同步的重要性

    竞态条件可能会导致错误的结果,对于这样的问题都很难调试,因为只有在非常特定的条件下,才会出现这种情况。

    jeff xie
  • Junit5系列-Junit5中@DisplayName自定义名称

    测试类和测试方法可以声明自定义显示名称 ,可以包含空格,特殊字符,甚至是表情符号 ,自定义名称将由测试运行者和测试报告显示。 上述功能的实现使用的就是juni...

    洋仔聊编程

扫码关注云+社区

领取腾讯云代金券