前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 > shell技巧分享(七)

shell技巧分享(七)

作者头像
俊采
发布2018-07-05 12:07:18
8480
发布2018-07-05 12:07:18
举报
文章被收录于专栏:LEo的网络日志LEo的网络日志

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

1 echo替换字符串

代码语言:javascript
复制
$ str="12121212"
$ echo ${str/1/a}
a2121212
$ echo ${str//1/a}
a2a2a2a2

在命令行将某些字符串替换成其他字符串,可以借助echo实现该功能。由示例中可以看到,使用一个斜杠(/)只替换首次出现的字符,使用2个斜杠(/)替换所有字符。

2 备份文件

lbak函数定义:

代码语言:javascript
复制
lbak(){
    if [[ $# -ge 1 ]]; then
        cp -rf $1 $1.bak
    fi
}

示例:

代码语言:javascript
复制
$ ls
$ touch test
$ echo 123 > test
$ cat test 
123
$ lbak test 
$ ls
test  test.bak
$ cat test.bak 
123

在linux上修改某些关键文件时,建议先将原文件备份再修改,不然修改后出问题,想恢复比较不易。通过定义一个lbak函数,自动实现文件备份,生成后缀名为bak的文件。由示例中可以看到,创建的test文件,在修改之前,通过lbak命令备份该文件,备份后会在当前目录自动生成一个test.bak文件,如果修改完文件test后,需要恢复该文件,直接将test.bak覆盖test文件即可,所以也可以定义一个lunbak函数,用于自动将备份文件恢复。

3 命令行子命令自动补齐

代码语言:javascript
复制
$ cat demo.bash 
_demo()
{
    COMPREPLY=()
    local cur=${COMP_WORDS[COMP_CWORD]};
    local cmd=${COMP_WORDS[COMP_CWORD-1]};
    case $cmd in

    'demo')
          COMPREPLY=( $(compgen -W 'foo bar help version' -- $cur) ) ;;
    '*')
          ;;
    esac
}

complete -F _demo demo
$ source demo.bash 
$ demo 
bar      foo      help     version  

linux的自动补齐功能非常强大,通过其提供的框架,可以给自己的命令行添加自动补齐功能。由示例中可以看到,首先创建一个demo.bash的shell脚本,该脚本需具有可执行权限,然后在当前终端source该脚本。此时,如果执行demo命令,按tab键会自动打印出相应的子命令,如果输入子命令的首字母按tab键,会自动补齐子命令,很方便就能实现命令的自动补齐功能。

LEo at 00:05

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 echo替换字符串
  • 2 备份文件
  • 3 命令行子命令自动补齐
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档