history-expansion

回响着“!”字符串内部做了一些奇怪的事情
history-expansion

回响着“!”字符串内部做了一些奇怪的事情

如果我输入: echo "Hello, World!" 我不知道它的名字,但它提示我输入下一行。你知道这PS2件事。或者,如果您键入echo \并按Enter。 为什么? 嗯,我知道那!是一个特殊变量您可以用它参考您的历史记录。 但一旦我使用这个: echo "Hello, World"! 我得到了我想要的输出。发生了什么事,为什么不能!在内部使用""? 感谢您的帮助 :) ...

Admin

设置 histchars 在 zsh 中不起作用
history-expansion

设置 histchars 在 zsh 中不起作用

考虑以下命令来覆盖历史扩展字符(我从使用 ZSH 学习 Shell 脚本书): % set histchars='@^#' % ls *.txt file1.txt file2.txt % @@ 结果: zsh: command not found: @@ 然而,这是有效的(注意set被省略): % histchars='@^#' % ls *.txt file1.txt file2.txt % @@ 结果: ls *.txt file1.txt file2.txt 我用我的 shell.zshrc和...

Admin

历史记录在 bash 中不起作用
history-expansion

历史记录在 bash 中不起作用

当我在 bash 提示符下输入时 !5 ...我只是得到 !5: command not found ...作为回应。关于我做错了什么有什么想法吗?有什么我应该检查的吗? ...

Admin

如何使用插入符号^命令创建别名?
history-expansion

如何使用插入符号^命令创建别名?

我有一个工作流程,首先检查git diff特定文件,然后将其添加到舞台。 git diff .. ^diff^add 我想给这些命令一个别名,但这个不起作用 alias da="^diff^add" command not found: ^diff^add ...

Admin

从之前的命令参数中填写
history-expansion

从之前的命令参数中填写

我可以使用右箭头键一次从上一个命令行填充一个参数吗? $ mogrify -resize 50% file.jpg $ 现在按右箭头应该填充mogrify,再次按右箭头应该填充一直到mogrify -resize,如果我再次按mogrify -resize 50%等等。 如果到目前为止的命令行与前面的命令行不匹配,则应从最近匹配的命令开始填写 $ mogrify -resize 50% file.jpg $ echo hi $ mo 按向右箭头应填写mogrifynot echo。 如何配置 zsh 来支持这一点? ...

Admin

bash - 获取我正在通过历史编辑的当前命令的第一个参数,或类似的?
history-expansion

bash - 获取我正在通过历史编辑的当前命令的第一个参数,或类似的?

我经常在 bash 提示符下编写命令,我想在当前行中获取先前的参数,然后将其放入命令中的其他位置。 一个简单的例子是,如果我想重命名一个文件。我会 键入mv命令 输入我要移动的文件名,~/myTestFileWithLongFilename.txt 现在我只想更改我在第一个参数中提供的文件的扩展名,而无需再次输入。 我可以以某种方式使用历史记录或 bash 完成来自动完成第一个参数吗? $ mv ~/myTestFileWithLongFilename.txt ~/myTestFileWithLongFil...

Admin

如何提交 *nix 命令行历史记录以便其他会话可用?
history-expansion

如何提交 *nix 命令行历史记录以便其他会话可用?

我所看到的是,一个会话(pts)的命令行历史记录不可用于其他打开的会话(pts)。 是否可以显式提交会话的历史记录,以便其他会话立即可用。 此外,我所看到的是 - 关闭会话的历史记录仅适用于新会话。它不适用于现有会话。 是否可以将已关闭会话的历史记录提取到现有会话中。 以上观察是针对bash外壳的。 有人可以解释当同一用户存在多个会话时历史记录(记录/共享)如何工作吗? ...

Admin

tcsh 中的历史操纵,替换每场比赛
history-expansion

tcsh 中的历史操纵,替换每场比赛

我知道每个人都会告诉我,我应该从使用切换tcsh到bash其他东西,但迟滞是一种强大的力量,所以我不会这样做。大多数时候,我发现tcsh完全足够了,但有一件事我无法弄清楚如何在其中执行,但很容易做到bash:在历史条目中全局替换一个变量为另一个变量。例如:假设历史说 1 mv dog.tex cat.tex 我想执行命令 mv dog.pdf cat.pdf 这bash很容易: !1:gs/tex/pdf/ 但全局运算符在tcsh.还有其他东西可以做到吗?谢谢 ...

Admin

如何引用以$开头的命令?
history-expansion

如何引用以$开头的命令?

假设历史列表中包含命令e='echo a b c'和$e。 $e如何使用bash的历史扩展功能来引用命令? ...

Admin

查看历史 历史扩展
history-expansion

查看历史 历史扩展

我必须重写历史扩展命令,而不是从历史中调用它。 例如,我必须在以下命令中将 35 更改为 36, 37, 38....。 $ print -P '\033[35mThis is the same red as in your solarized palette\033[0m' $ !!:gs/35/36 现在我需要做到!!:gs/36/37 然而,当我使用Up钥匙时。它没有显示$ !!:gs/35/36。表明print -P '\033[35mThis is the same red as in your solarized palette\033[0m'...

Admin

研究
history-expansion

研究

我有一个需要密码的命令行。密码以字符“!1”开头。例如 '!1x9y377s' 。如果我使用该密码执行命令,则会发生历史记录扩展,并且前两个字母“!1”将被第一个历史记录条目替换。例如 ll ...list entries echo !1x9y377s llx9y377s 但我想要的是: ll ...list entries echo !1x9y377s !1x9y377s 研究 我很快意识到这是在 bash 解析之前发生的历史扩展。我搜索:如何阻止命令行中传递的密码发生历史扩展?这导致了这样的事...

Admin

转义 '!'双引号内
history-expansion

转义 '!'双引号内

bash 手动输入双引号 (https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html) 状态: 如果启用,将执行历史扩展,除非出现“!”出现在双引号中的内容使用反斜杠进行转义。 '!' 前面的反斜杠没有被删除。 为什么有一个特殊的案例!?如果我转义 a $(例如),反斜杠不会出现在输出中(例如比较echo "\$"->$和echo "\!"-> \!)。 !如果我只想要双引号内的文字该怎么办? 我对这个问题的一个限制是我无法轻松地操纵 bash 调用...

Admin

历史记录如何打印到终端?
history-expansion

历史记录如何打印到终端?

编辑:根据@JdeBP的评论,我了解到交互式终端的历史命令和历史调用功能是两个独立的东西。然而,我仍然好奇 GNU readline 历史记录调用功能如何打印到屏幕上。 我开始意识到 bashhistory命令并不用于stdout将以前的命令打印到终端窗口。我在探索一个单独的问题时遇到了这个问题(关联),现在我很好奇它到底是如何工作的。 当您键入命令并按 Enter 键时,可以使用向上箭头向上拉出上一个命令。但是,上一个命令不是通过 发送的stdout。这可以通过将所有内容重定向stdout到协进程来看到,协进程在将输出打印到屏幕之前修改输出。下面的脚本...

Admin

如何在 bash 或 zsh 中搜索历史扩展中的特殊字符?
history-expansion

如何在 bash 或 zsh 中搜索历史扩展中的特殊字符?

?, , ^,等一些字符$在历史扩展中具有特殊意义,我可以在!string或!?string[?]事件中查找它们吗? 帮助中没有说明如何操作: `!STRING' Refer to the most recent command preceding the current position in the history list starting with STRING. 更新 用 搜索特殊字符是没有意义的!string。在,!?string[?]上运行良好。^$ 剩下的问题是如何?搜索!?string[?] ...

Admin

`!#` 在 csh、bash、zsh 和可能的其他 shell 中有何用途?
history-expansion

`!#` 在 csh、bash、zsh 和可能的其他 shell 中有何用途?

从man bash: !# 到目前为止输入的整个命令行。 从man zshall: !# 请参阅目前输入的当前命令行。该行被视为完整的,直到并包括带有引用的行之前的单词!#。 我唯一能想到的是: cd ..;!#!#!# 向上8级台阶:)) ...

Admin