前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7个实用的Bash历史快捷方式【Linux-Command line】

7个实用的Bash历史快捷方式【Linux-Command line】

作者头像
QRosie
修改2019-11-21 10:45:12
8170
修改2019-11-21 10:45:12
举报

这些必不可少的Bash快捷键可作用在命令行上以节省时间。

图片来源:opensource.com
图片来源:opensource.com

大多数Bash历史快捷方式指南都详尽列出了每个可用的条目。 这样做的问题是,我只使用一次快捷方式,当我尝试所有可能性时,我变得目光呆滞。 然后,我将投入工作并完全忘记它们,只保留著名的!! trick,那些我第一次开始使用Bash时就学到的技巧。

因此,快捷键中的大部分都未被记住。

本文概述了我每天实际使用的快捷方式。 它基于我的书--《Learn Bash the hard way》中的某些内容。 你可以预览本书以了解更多信息。

当人们看到我使用这些快捷方式时,他们经常问我:“你在那做了什么!?” 操作只需花少量的精力或智力,但是要真正学会它们,我建议每天一次,连续使用一周,然后再继续学习下一个。 花时间让它们听命于你的手指是值得的,因为从长远来看,节省的时间不容小觑。

1. The "last argument" one: !$

如果你仅从本文中选择一种快捷方式,请选择该项。 它会将最后一个命令的最后一个参数替换为你的行。

考虑这种情况:

算了,我在命令中输入了wrongfile文件名。 我应该放置rightfile。

你可能决定重新键入最后一个命令,并用rightfile完全替换错误的文件。 相反地,你可以键入:

这命令仍将生效。

在Bash中还有其他快捷方式可以实现相同的目的,但是重用last命令的last参数的技巧是我最常用的。

2. The "nth argument" one: !:2

曾经有过这样的尝试吗?

像许多其他人一样,我很容易弄错tar(和ln)参数。

当你像这样混合参数时,可以运行:

那么你的声誉可以被挽回。

最后一个命令的项目索引为零,并且可以用“!:”之后的数字代替。

显然,你也可以使用它来重用上一个命令中的特定参数,而不是所有参数。

3. The "all the arguments" one: !:1-$

想象一下,我运行如下命令:

这些参数是正确的。 但是,我想在文件中匹配ping或pong,但是我使用了grep而不是egrep。

我开始输入egrep,但是我不想重新输入其他参数。 因此,我可以使用“!:1 $”快捷方式询问上一个命令的所有参数,从第二个(记住它们为zero-indexed)到最后一个(以$符号表示)。

你无需选择“1-$”; 你可以选择一个子集,例如“1-2”或“3-9”(如果上一个命令中有那么多参数)。

4. The "last but n" one: !-2:$

当我迅速地知道如何更正我的上一条命令时,上面的快捷方式非常有用。但我通常在原始命令之后运行命令,这意味着最后一条命令不再是我要引用的命令。

例如,使用之前的mv示例,如果我通过对文件夹内容的ls检查来跟踪错误:

我就不能再使用!$快捷方式了。

在这些情况下,我可以在“!”之后插入“-n”:(其中n是要在历史记录中返回的命令数)。 从旧命令中获取最后一个参数:

同样,一旦学习了它,你可能会惊讶于你需要它的频率。

5. The "get me the folder" one: !$:h

从表面上看,它似乎不太理想,但我每天都要使用数十次。

想象一下,我运行如下命令:

我想做的第一件事可能是转到/etc文件夹,查看其中的内容并找出哪里有错。

我可以通过以下方法来做到这一点:

它显示:“获取最后一个命令(/etc/system)的最后一个参数,并删除其最后一个文件名组件,仅保留/etc。”

6. The "the current line" one: !#:1

多年来我偶尔想知道,是否可以在最终查询和学习之前在当前行引用一个自变量。 我觉得我早该如此。 我最常使用它制作备份文件:

但是一旦掌握,它可以快速替代......

7. The "search and replace" one: !!:gs

这将搜索引用的命令,并将前两个“/”字符替换为后两个。

假设我想告诉世界我的“s”键无效,而是用“f”代替输出:

然后我意识到我只是偶然地按下了“f”键。 要用所有“s”替换所有“f”,我可以输入:

它不仅对单个字符起作用。 我也可以替换单词或句子:

测试

只是为了向你展示如何组合这些快捷方式,你能想出这些琐屑东西将输出什么吗?

结论

对于日常的命令行用户,Bash可以作为快捷方式的简明来源。 虽然有成千上万的技巧要学习,但这些都是我最爱的常用技巧。

如果你想更深入地了解Bash的全部知识,拿起我的书,《Learn Bash the hard way》或查看我的在线课程Master Bash shell

这篇文章最初发布在Ian的博客,Zwischenzugs.com上,本文已获使用许可。

本文系外文翻译,前往查看

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

本文系外文翻译前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. The "last argument" one: !$
  • 2. The "nth argument" one: !:2
  • 3. The "all the arguments" one: !:1-$
  • 4. The "last but n" one: !-2:$
  • 5. The "get me the folder" one: !$:h
  • 6. The "the current line" one: !#:1
  • 7. The "search and replace" one: !!:gs
  • 测试
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档