这些必不可少的Bash快捷键可作用在命令行上以节省时间。
大多数Bash历史快捷方式指南都详尽列出了每个可用的条目。 这样做的问题是,我只使用一次快捷方式,当我尝试所有可能性时,我变得目光呆滞。 然后,我将投入工作并完全忘记它们,只保留著名的!! trick,那些我第一次开始使用Bash时就学到的技巧。
因此,快捷键中的大部分都未被记住。
本文概述了我每天实际使用的快捷方式。 它基于我的书--《Learn Bash the hard way》中的某些内容。 你可以预览本书以了解更多信息。
当人们看到我使用这些快捷方式时,他们经常问我:“你在那做了什么!?” 操作只需花少量的精力或智力,但是要真正学会它们,我建议每天一次,连续使用一周,然后再继续学习下一个。 花时间让它们听命于你的手指是值得的,因为从长远来看,节省的时间不容小觑。
如果你仅从本文中选择一种快捷方式,请选择该项。 它会将最后一个命令的最后一个参数替换为你的行。
考虑这种情况:
算了,我在命令中输入了wrongfile文件名。 我应该放置rightfile。
你可能决定重新键入最后一个命令,并用rightfile完全替换错误的文件。 相反地,你可以键入:
这命令仍将生效。
在Bash中还有其他快捷方式可以实现相同的目的,但是重用last命令的last参数的技巧是我最常用的。
曾经有过这样的尝试吗?
像许多其他人一样,我很容易弄错tar(和ln)参数。
当你像这样混合参数时,可以运行:
那么你的声誉可以被挽回。
最后一个命令的项目索引为零,并且可以用“!:”之后的数字代替。
显然,你也可以使用它来重用上一个命令中的特定参数,而不是所有参数。
想象一下,我运行如下命令:
这些参数是正确的。 但是,我想在文件中匹配ping或pong,但是我使用了grep而不是egrep。
我开始输入egrep,但是我不想重新输入其他参数。 因此,我可以使用“!:1 $”快捷方式询问上一个命令的所有参数,从第二个(记住它们为zero-indexed)到最后一个(以$符号表示)。
你无需选择“1-$”; 你可以选择一个子集,例如“1-2”或“3-9”(如果上一个命令中有那么多参数)。
当我迅速地知道如何更正我的上一条命令时,上面的快捷方式非常有用。但我通常在原始命令之后运行命令,这意味着最后一条命令不再是我要引用的命令。
例如,使用之前的mv示例,如果我通过对文件夹内容的ls检查来跟踪错误:
我就不能再使用!$快捷方式了。
在这些情况下,我可以在“!”之后插入“-n”:(其中n是要在历史记录中返回的命令数)。 从旧命令中获取最后一个参数:
同样,一旦学习了它,你可能会惊讶于你需要它的频率。
从表面上看,它似乎不太理想,但我每天都要使用数十次。
想象一下,我运行如下命令:
我想做的第一件事可能是转到/etc文件夹,查看其中的内容并找出哪里有错。
我可以通过以下方法来做到这一点:
它显示:“获取最后一个命令(/etc/system)的最后一个参数,并删除其最后一个文件名组件,仅保留/etc。”
多年来我偶尔想知道,是否可以在最终查询和学习之前在当前行引用一个自变量。 我觉得我早该如此。 我最常使用它制作备份文件:
但是一旦掌握,它可以快速替代......
这将搜索引用的命令,并将前两个“/”字符替换为后两个。
假设我想告诉世界我的“s”键无效,而是用“f”代替输出:
然后我意识到我只是偶然地按下了“f”键。 要用所有“s”替换所有“f”,我可以输入:
它不仅对单个字符起作用。 我也可以替换单词或句子:
只是为了向你展示如何组合这些快捷方式,你能想出这些琐屑东西将输出什么吗?
对于日常的命令行用户,Bash可以作为快捷方式的简明来源。 虽然有成千上万的技巧要学习,但这些都是我最爱的常用技巧。
如果你想更深入地了解Bash的全部知识,拿起我的书,《Learn Bash the hard way》或查看我的在线课程Master Bash shell。
这篇文章最初发布在Ian的博客,Zwischenzugs.com上,本文已获使用许可。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。