gpt4 book ai didi

bash - ack-grep 安装脚本中不熟悉的 shell 语法

转载 作者:行者123 更新时间:2023-11-29 09:03:18 24 4
gpt4 key购买 nike

从 ack 安装页面 (http://betterthangrep.com/install/) 有一个带有 curl 的单行安装:

curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3

我知道它是从网站获取文件并将其保存到 ~/bin/ack,然后设置权限,但最后一部分 (!#:3) 是做什么的? (我不认识语法并且谷歌搜索没有产生任何有用的结果)

最佳答案

请参阅 man bash 中名为 HISTORY EXPANSION 的部分,尤其是 Word Designators 小节。 !#:3 指的是管道的第三个单词,即(在您的示例中)~/bin/ack。命令的字依次为curl, 0; http://betterthangrep.com/ack-standalone, 1; >, 2; ~/bin/ack, 3; &&, 4; 修改, 5; 0755,6; !#:3, 7.也就是说,!#:3 是一种无需使用单独的变量或文字文本即可重复文件名的方法。

关于 > 和空格的问题,请注意 > 是元字符,man bash 将其定义为“不加引号时分隔单词的字符。以下之一: | & ; ( ) < > 空格键”。所以空格不会影响 > 是否算作一个标记。但请注意,在以下示例中,第一个 3 被引用,因此 bash 不会将其解释为 3> 重定向的一部分。输入该行时,bash 回显扩展行,然后执行它。

$ seq '3'>bbb;cat !#:3 !#:2 ccc; head !#:3 !#:8
seq '3'>bbb;cat bbb > ccc; head bbb ccc
==> bbb <==
1
2
3

==> ccc <==
1
2
3

关于bash - ack-grep 安装脚本中不熟悉的 shell 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12885417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com