小编Pro*_*sch的帖子

bash 和 zsh 中的双重和三重替换

跟进此问题中的背景部分。

在bashI 可以${!FOO}用于双重替换,在zsh ${(P)FOO}. 在这两种情况下,老派(hack-y)都eval \$$FOO有效。

所以,对我来说最聪明和最合乎逻辑的事情是${${FOO}}, ${${${FOO}}}…双/三/n 替换。为什么这不能按预期工作?

二:什么是\在做eval陈述?我认为这是一种逃避,使事情eval \$$$FOO变得不可能。如何使用在每个 shell 中都有效的三重 / n 替换?

bash zsh variable-substitution

31
推荐指数
4
解决办法
3万
查看次数

是否建议使用 zsh 而不是 bash 脚本?

我可以假设已经zsh安装了足够多的人来运行带有

#!/usr/bin/env zsh
Run Code Online (Sandbox Code Playgroud)

作为舍邦?

或者这会使我的脚本无法在太多系统上运行吗?

澄清:我对最终用户可能想要运行的程序/脚本感兴趣(例如在 Ubuntu、Debian、SUSE、Arch 等上)

bash zsh portability shebang

28
推荐指数
2
解决办法
3万
查看次数

${!FOO} 和 zsh

${!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}}}需要,所以对此的解释也很好。

bash zsh variable-substitution for

18
推荐指数
2
解决办法
7587
查看次数

与 Mutt 一起使用垃圾箱:有意义吗?

我来自 Thunderbird,我发现它是膨胀软件,使用 20-40% 的处理能力,弱 IMAP 和本地邮件文件夹处理以及持续使用 100-500MB 的 RAM。

但它会将所有已删除的邮件移动到垃圾箱文件夹,而不是直接清除。由于我不确定您是否真的需要那个(mutt 有marked deleted舞台),有没有经验丰富的 mutt 用户可以回答?

特别是:您是否遇到过您最初认为没有必要存档但没有并消失的邮件丢失?我通常在清除之前不会仔细检查。你?

(声明:Mutt(有offlineimap,msmtp和 10 个帐户)是迄今为止我必须配置的最难的程序。我是 Archlinux 上的 Vim 用户……)

编辑(用于文档目的):要使用 Mutt 设置垃圾箱,基本上有两种可能性:

  1. 通过宏来做:

    macro index D \
    "<save-message>+/ACCOUNT/Trash<enter>" \
    "move message to the trash"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装补丁。

email mutt imap trash

10
推荐指数
1
解决办法
3689
查看次数

如何在 Mutt 中绑定 &lt;Control&gt;&lt;Arrowkey&gt;?

我被困在这里:

是否可以将其中之一<enter>, <backspace>, <up>, <down>, <left>, <right>与控件绑定在一起?

\C<foo>显示|foo>在帮助中,^<up>不受约束。
'\C<foo>,'\C <foo>'也不起作用(与"相反)。

<control> 不存在。

实际上,你可以得到^<foo>的帮助下展现出来,但是只有当你映射^<foo>,这不正是我想要的。;)

mutt

10
推荐指数
2
解决办法
6009
查看次数

如何告诉 mutt 不要等待附件程序返回?

我在我的图像中使用这一行mailcap:

image/*; eog %s &;
Run Code Online (Sandbox Code Playgroud)

但是 mutt 会立即删除临时文件并且 eog 无法加载它。
当我删除&mutt 时,等待 eog 关闭,直到它从命令行中退出。

email mutt mime-types

10
推荐指数
1
解决办法
3396
查看次数

如何在mutt中制作地址列表

我Mutt用作我的主要客户并alias经常使用该命令。

如何将邮件地址,或者甚至更好的别名分组到一个列表中,然后我可以像 an 一样使用它alias来发送邮件?

email alias mutt

8
推荐指数
1
解决办法
9166
查看次数

$() 和 `` 的不同行为

% 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)

我认为这两个完全相同,但显然存在一些差异,例如逃避行为。有什么区别?

shell bash command-substitution variable-substitution

4
推荐指数
1
解决办法
247
查看次数

通过 mpd 流式传输系统音频

我使用 mpd 通过 .mpd 将音乐流式传输到我的手机(连接到 Hi-Fi)http。

然而,这只适用于我的 mpd 数据库中的歌曲。我经常想在我的浏览器中播放内容,也希望通过流式传输mpd。

有没有办法将pulse audio输出路由到mpd而不是扬声器?

streaming http pulseaudio mpd

4
推荐指数
1
解决办法
5471
查看次数

删除多个可能的后缀

示例:我想创建一个快速命令来缩小图像(对于我的文件浏览器)。

...
FN="/tmp/some-image.jpg"
gm convert "$FN" -resize 50% "$(dirname $FN)/$(basename $FN .jpg/png/gif).jpg"
...
Run Code Online (Sandbox Code Playgroud)

如何指定应删除多个后缀?

shell basename

4
推荐指数
1
解决办法
5511
查看次数