首页IT科技SHELL命令-nox(Shell 命令奇淫技巧,就是有点短)

SHELL命令-nox(Shell 命令奇淫技巧,就是有点短)

时间2025-08-05 03:49:08分类IT科技浏览4782
导读:1、在任意目录之间快速移动 你发现自己要在两个或更多目录之间频繁移动,一会切换到这里,一会切换到那里,来回跳转。这些目录之间隔得还挺远,反复输入冗长的路径让人疲惫不堪。...

1             、在任意目录之间快速移动

你发现自己要在两个或更多目录之间频繁移动              ,一会切换到这里                    ,一会切换到那里      ,来回跳转              。这些目录之间隔得还挺远              ,反复输入冗长的路径让人疲惫不堪                    。

使用内建命令 pushd 和 popd 来管理目录栈                     ,轻松地在目录之间切换      。下面是一个简单的示例:

$ cd /tmp/tank $ pwd /tmp/tank $ pushd /var/log/cups /var/log/cups /tmp/tank $ pwd /var/log/cups $ ls access_log error_log page_log $ popd /tmp/tank $ ls empty full $ pushd /var/log/cups /var/log/cups /tmp/tank $ pushd /tmp/tank /var/log/cups $ pushd /var/log/cups /tmp/tank $ pushd /tmp/tank /var/log/cups $ dirs /tmp/tank /var/log/cups

栈是一种后进先出的结构      ,这两个命令也正是这么做的              。如果对一个新目录使用 pushd       ,那么它会将前一个目录压入栈中                     。当使用 popd时                     ,它会弹出栈顶保存的当前位置             ,切换到新的栈顶目录      。使用这些命令更改位置时       ,会从左到右输出目录栈中的值                     ,对应于栈中自顶向下的顺序       。

如果使用 pushd 时没有指定目录             ,那么它会交换栈顶的两个目录的位置,这样就可以重复使用 pushd 命令来实现两者之间的切换                     。cd命令也能够达到相同效果             。

如果不记得目录栈中都有哪些目录                     ,可以使用内建命令 dirs 按照从左到右的顺序显示       。加上 -v 选项后                    ,显示形式更形象                     。

$ dirs -v 0 /opt/yongheng 1 /opt/yongheng/Shell $

数字可用来调整栈内目录的位置             。pushd +1 会将编号为 1 的目录置为栈顶(并切换到该目录)并将其他目录下压。

$ pushd +1 /opt/yongheng/Shell /opt/yongheng $ dirs -v 0 /opt/yongheng/Shell 1 /opt/yongheng

要想看到类似于栈的目录列表,但又不希望出现编号              ,可以使用 -p选项                     。

# dirs -p /opt/yongheng/Shell /opt/yongheng

2                    、重复上一个命令

你刚刚输入了一个又长又麻烦的命令                    ,其中包含了冗长的路径名和一堆复杂的参数                    。现在需要重新执行该命令。难道还得再输入一次?

这个问题有两种解决方法              。第一种方法只需要在提示符下输入两个惊叹号      ,然后 bash 就会显示并重复执行上一个命令                    。例如:

$ cd /opt/ $ !! cd /opt/

另一种(更现代的)方法是使用箭头键      。按上箭头键会回滚到执行过的上一个命令              。如果找到了需要的命令              ,按下 Enter 键就可以(再次)执行该命令                     。

3       、参数重用

重用上一个命令很简单                     ,使用 !! 就行了      ,但你需要的未必总是整个命令      。如何只重用最后一个参数呢?

用 !$ 指明上一个命令中的最后一个参数       。!:1 表示第一个参数       ,!:2 表示第二个参数                     ,以此类推                     。

多个命令使用相同的文件名为参数是司空见惯的事情             。最常见的场景之一就是程序员编辑源代码文件             ,然后编译       、再编辑       ,再编译……有了 !$                     ,事情就方便多了       。如下:

$ vi /some/long/path/name/you/only/type/once ... $ gcc !$ gcc /some/long/path/name/you/only/type/once ... $ vi !$ vi /some/long/path/name/you/only/type/once ... $ gcc !$ gcc /some/long/path/name/you/only/type/once ... $

明白其中的意思了吗?这不仅省去了大量的键盘输入             ,还避免了错误                     。如果编译时输错文件名,那编译的可就不是刚刚编辑好的源代码文件了             。有了 !$                     ,就可以始终得到刚刚用过的文件名。要是想重用的参数位于命令行内部                    ,可以使用带编号的 !: 命令来获取                     。

4                    、安全第一,命令测试

一不小心就会输错字符                    。 (不信你瞧!)即便是简单的 bash 命令              ,由此带来的后果也非常严重:你会移动错或删错文件。如果再加上模式匹配                    ,结果更让人心跳      ,因为模式中的输入错误会导致南辕北辙的结果              。小心谨慎的用户会怎么做?

可以使用命令历史特性和键盘便捷方式来重复参数              ,无须从头输入                     ,因此能够减少输入错误                    。如果要用到棘手的模式来匹配文件      ,先用echo 测试一下模式能否正常匹配       ,然后再用 !$ 进行实际操作      。例如:

$ ls ab1.txt ac1.txt jb1.txt wc3.txt $ echo *1.txt ab1.txt ac1.txt jb1.txt $ echo [aj]?1.txt ab1.txt ac1.txt jb1.txt $ echo ?b1.txt ab1.txt jb1.txt $ rm !$ rm ?b1.txt $

echo 是检查模式匹配结果的一种方法              。一旦确信结果符合预期                     ,就可以将模式用于实际命令                     。这里我们要删除有特定名称的文件             ,没人愿意在这种事上犯错      。

本文由传智教育博学谷教研团队发布       。

如果本文对您有帮助       ,欢迎关注和点赞;如果您有任何建议也可留言评论或私信                     ,您的支持是我坚持创作的动力                     。

转载请注明出处!

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
iphone7应用切换器在哪(Windows Phone 7 中的切换应用 狼人:)