跟进此问题中的背景部分。
在bashI 可以${!FOO}用于双重替换,在zsh ${(P)FOO}. 在这两种情况下,老派(hack-y)都eval \$$FOO有效。
所以,对我来说最聪明和最合乎逻辑的事情是${${FOO}}, ${${${FOO}}}…双/三/n 替换。为什么这不能按预期工作?
二:什么是\在做eval陈述?我认为这是一种逃避,使事情eval \$$$FOO变得不可能。如何使用在每个 shell 中都有效的三重 / n 替换?
我可以假设已经zsh安装了足够多的人来运行带有
#!/usr/bin/env zsh
Run Code Online (Sandbox Code Playgroud)
作为舍邦?
或者这会使我的脚本无法在太多系统上运行吗?
澄清:我对最终用户可能想要运行的程序/脚本感兴趣(例如在 Ubuntu、Debian、SUSE、Arch 等上)
${!FOO}在 中执行双重替换bash,这意味着它采用 FOO 的(字符串)值并将其用作变量名。
zsh不支持此功能。
有没有办法使这项工作在bash和 中相同zsh?
我有一个环境变量列表,比如
PATH MAIL EDITOR
Run Code Online (Sandbox Code Playgroud)
并且想先打印变量名,然后打印它们的值。
这适用于bash但不适用于zsh:
PATH MAIL EDITOR
Run Code Online (Sandbox Code Playgroud)
应该以某种方式可能以“旧方式”使用eval,但我无法让它工作:
for VAR in LIST
do
echo $VAR
echo ${!VAR}
done
Run Code Online (Sandbox Code Playgroud)
我永远不会明白为什么我不能简单地进行任意深度替换,例如${${VAR}}或即使${${${VAR}}}需要,所以对此的解释也很好。
我来自 Thunderbird,我发现它是膨胀软件,使用 20-40% 的处理能力,弱 IMAP 和本地邮件文件夹处理以及持续使用 100-500MB 的 RAM。
但它会将所有已删除的邮件移动到垃圾箱文件夹,而不是直接清除。由于我不确定您是否真的需要那个(mutt 有marked deleted舞台),有没有经验丰富的 mutt 用户可以回答?
特别是:您是否遇到过您最初认为没有必要存档但没有并消失的邮件丢失?我通常在清除之前不会仔细检查。你?
(声明:Mutt(有offlineimap,msmtp和 10 个帐户)是迄今为止我必须配置的最难的程序。我是 Archlinux 上的 Vim 用户……)
编辑(用于文档目的):要使用 Mutt 设置垃圾箱,基本上有两种可能性:
通过宏来做:
macro index D \
"<save-message>+/ACCOUNT/Trash<enter>" \
"move message to the trash"
Run Code Online (Sandbox Code Playgroud)安装补丁。
我被困在这里:
是否可以将其中之一<enter>, <backspace>, <up>, <down>, <left>, <right>与控件绑定在一起?
\C<foo>显示|foo>在帮助中,^<up>不受约束。
'\C<foo>,'\C <foo>'也不起作用(与"相反)。
<control> 不存在。
实际上,你可以得到^<foo>的帮助下展现出来,但是只有当你映射^<foo>,这不正是我想要的。;)
我在我的图像中使用这一行mailcap:
image/*; eog %s &;
Run Code Online (Sandbox Code Playgroud)
但是 mutt 会立即删除临时文件并且 eog 无法加载它。
当我删除&mutt 时,等待 eog 关闭,直到它从命令行中退出。
我Mutt用作我的主要客户并alias经常使用该命令。
如何将邮件地址,或者甚至更好的别名分组到一个列表中,然后我可以像 an 一样使用它alias来发送邮件?
% PATH="MYPATH"
% VAR="PATH"
% echo $(eval echo \$$VAR)
MYPATH
% echo `eval echo \$$VAR`
5707VAR
^^
This is the process number.
Run Code Online (Sandbox Code Playgroud)
我认为这两个完全相同,但显然存在一些差异,例如逃避行为。有什么区别?
我使用 mpd 通过 .mpd 将音乐流式传输到我的手机(连接到 Hi-Fi)http。
然而,这只适用于我的 mpd 数据库中的歌曲。我经常想在我的浏览器中播放内容,也希望通过流式传输mpd。
有没有办法将pulse audio输出路由到mpd而不是扬声器?
示例:我想创建一个快速命令来缩小图像(对于我的文件浏览器)。
...
FN="/tmp/some-image.jpg"
gm convert "$FN" -resize 50% "$(dirname $FN)/$(basename $FN .jpg/png/gif).jpg"
...
Run Code Online (Sandbox Code Playgroud)
如何指定应删除多个后缀?