高效Bash的使用技巧有什么呢

发布时间:2021-10-21 14:04:47 作者:柒染
来源:亿速云 阅读:146

今天就跟大家聊聊有关高效Bash的使用技巧有什么呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

这是一篇 Bash 的使用技巧内容,部分内容需要先具备一些基础知识及 Linux 的基础操作能力
主要内容分两部分,一部分是关于 history 的,另一部分是关于操作的

我们在日常使用中,难免会使用到一些历史命令或者有时需要对历史命令进行更正,那么如何更加高效的来完成这些操作呢?

History

history 格式化

首先我们肯定会想到 history 命令,history 可以返回之前使用过的命令列表,就像这样:

(Tao) ➜  ~ history 10
    1  cd myzh
    2  cd zsh
    3  ls
    4  cat zshrc
    5  brew info tmux
    6  brew install tmux
    7  cd .tmux
    8  cd tmux
    9  cp tmux.conf ~/
   10  mv tmux.conf .tmux.conf

我们可以很方便的通过后面指定数字来返回固定数量的历史记录,但是这样得到的结果,我们也只是知道使用它们的先后顺序,我们想要得到更加详细的信息,例如执行时间,那么我们可以这样做:

(Tao) ➜  ~ export HISTTIMEFORMAT='%F %T '

(Tao) ➜  ~ history 10
    1 2016-02-09 15:38:40  cd myzh
    2 2016-02-09 15:38:44  cd zsh
    3 2016-02-09 15:38:51  ls
    4 2016-02-09 15:38:59  cat zshrc
    5 2016-02-09 15:39:04  brew info tmux
    6 2016-02-09 15:48:13  brew install tmux
    7 2016-02-09 15:48:17  cd .tmux
    8 2016-02-09 15:49:04  cd tmux
    9 2016-02-09 15:49:23  cp tmux.conf ~/
   10 2016-02-09 15:49:47  mv tmux.conf .tmux.conf

通过设置 HISTTIMEFORMAT 的环境变量,在历史记录中显示了时间。

使用指定历史命令

想要使用某条历史记录改如何操作呢? 我们使用 !序号, 比如我们想要执行第3条命令,那我们输入 !3 即可:

(Tao) ➜  ~ history 6
    1  cd myzh
    2  cd zsh
    3  ls
    4  cat zshrc
    5  brew info tmux
    6  brew install tmux

(Tao) ➜  ~ !3
(Tao) ➜  ~ ls

zshrc

重复执行了上面第 3 条命令。 如果我们想要执行倒数第n条,那就直接输入 !-n

使用上条命令

当想要使用上条命令的时候,我们有下面 4 种方式:

有兴趣的小伙伴可以试下,这几种用法都比较常见。

使用某些字符开头或者包含这些字符在内的命令

比如,我们想要使用之前执行过的一条导入环境变量的语句,那么我可以执行 !export:

# 当然export也可以不输完整
(Tao) ➜  ~ !export    
(Tao) ➜  ~ export HISTTIMEFORMAT='%F %T '

如果只记得命令中包含 xport 呢? 那当然也可以, 只要加个 ? 就可以:

(Tao) ➜  ~ !?xport    
(Tao) ➜  ~ export HISTTIMEFORMAT='%F %T '

获取上条命令中的参数

比如 touch 了某个文件,现在要编辑它,那么只要执行 !$ 或者 !!:$ 即可:

(Tao) ➜  ~ touch test.sh   
(Tao) ➜  ~ vi !$   
vi test.sh

(Tao) ➜  ~ vi !!:$
vi test.sh

这种方式只是获取到了最后一位的参数, 那么假如我们想要获取的不只是最后一个参数呢?使用 !* 或者 !!:* 即可:

(Tao) ➜  ~ touch a b c
(Tao) ➜  ~ vim !*
vim a b c
3 files to edit

(Tao) ➜  ~ vim !!:*
vim a b c
3 files to edit

对上条命令中的参数做替换

难免有手误的时候,那么如何快速进行替换呢? 我们可以使用 ^old^new 的命令,例如:

(Tao) ➜  ~ cp /usr/local/etc/redis-sen.conf .
cp: /usr/local/etc/redis-sen.conf: No such file or directory
(Tao) ➜  ~ ^sen^sentinel
cp /usr/local/etc/redis-sentinel.conf .

或者 我们还可以使用 !!:gs/old/new 这样进行操作,例如:

(Tao) ➜  ~ cp /usr/local/etc/redis-sen.conf .
cp: /usr/local/etc/redis-sen.conf: No such file or directory
(Tao) ➜  ~ !!:gs/sen/sentinel
cp /usr/local/etc/redis-sentinel.conf .

如果我们只是部分内容做替换呢? 该如何操作?

只要使用 !!:x-y 来选择上条记录中的参数范围,然后进行替换即可:

(Tao) ➜  ~ mkdir -p data/db1 data/dc2 data/dc3
(Tao) ➜  ~ mkdir -p !!:3-4:gs/c/b
mkdir -p data/db2 data/db3

组合使用

聪明的你应该已经发现, 上面我先写了如何使用历史命令,后来又介绍了如何对上条命令操作,那么把这两部分内容组合起来会产生什么样的效果呢?

(Tao) ➜  ~ mkdir -p data/db1 data/dc2 data/dc3
(Tao) ➜  ~ ls **/**
data/db1:

data/dc2:

data/dc3:
(Tao) ➜  ~ mkdir -p !mkdir:3-4:gs/c/b
mkdir -p data/db2 data/db3
(Tao) ➜  ~ ls **/**
data/db1:

data/db2:

data/db3:

data/dc2:

data/dc3:

对,就像上面这样,我们可以通过各种组合来是我们对以前命令的修改执行更加灵活方便! Enjoy it !

操作部分

操作快捷键(emacs 模式)

设置操作模式为 Vi 模式

set -o vi

搜索

Ctrl + r : 搜索历史中输入过的命令

看完上述内容,你们对高效Bash的使用技巧有什么呢有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. PyCharm比较高效率的使用技巧有哪些呢
  2. Bash使用技巧有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

bash

上一篇:JSLint和JSHint及ESLint的对比是什么

下一篇:C++语言常见函数调用约定有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》