小编Sri*_*bat的帖子

管道和重定向绑定优先级与析取符、连接符等?

我知道运算符 ';'、'&'、'&&' 或 '||' 的相对绑定优先级

http://www.gnu.org/software/bash/manual/bashref.html#Lists

但是当管道与“&&”一起出现时,我很难理解绑定强度,要么偶然发现正确的命令,要么就放弃。

'|' 的绑定优先级是什么 和 '>' 相比?

我感到困惑的示例:

ls _thumbnails/video.mp4.jpg 2>/dev/null 
    && echo "thumbnail already generated. Not regenerating" \
    && exit \
    || ffmpeg_thumbnail_create video.mp4 2>/dev/null \
    && ls _thumbnails/video.mp4.jpg \
    && echo "Thumbnail successfully created" \
    && exit \
    || echo "Thumbnail creation failed" \
    | tee ~/thumbnails.log
Run Code Online (Sandbox Code Playgroud)

上面的目标是当且仅当一个缩略图不存在时创建一个缩略图(我每天运行一个 cronjob)。而且我不喜欢 ffmpeg 在没有错误时的大量输出(这不是 Unix 方式)。还有其他情况,所以不要开始给我建议使用单独的语句或特定于这些程序的特殊选项。我想了解绑定优先级。

bash pipe io-redirection

12
推荐指数
1
解决办法
3816
查看次数

zsh 相当于 bash show-all-if-ambiguous?

在 bash 中,如果您在有多个可能的补全时点击 Tab,您会得到一个匹配列表,如果您反复按 Tab,该列表会不断重印。在 tcsh 中,将自动完成设置为增强也可以实现这一点。

在 zsh 中,您确实获得了匹配项列表,但是在第 2、3 个选项卡上按下它开始在匹配项中循环。有没有办法让 zsh 在没有循环的情况下做相当于 bash 的 show-all-if-ambiguous?

我不是在寻找聪明但没用的“如果它在第一次之后显示,为什么你要多次按下 Tab 键?”。如果我能够调整我的习惯,我现在就已经这样做了。

zsh autocomplete

9
推荐指数
1
解决办法
2093
查看次数

Cygwin 显示 Windows 驱动器名称映射到 POSIX 设备文件 /dev/disk/sd*

在 Linux 中,我可以df用来显示哪些 Windows 驱动器(例如/cygdrive/c)对应于虚拟文件/dev/disk/sdd1

/dev/sdf1         932G  932G     0 100% /media/sarnobat/c
/dev/sde1         299G  260G   40G  87% /media/sarnobat/d
/dev/sdd1         299G  166G  133G  56% /media/sarnobat/e
Run Code Online (Sandbox Code Playgroud)

但是 Cygwin 的df输出没有显示:

C:                             312568640 210201636 102367004  68% /cygdrive/c
D:                             244187968 229638796  14549172  95% /cygdrive/d
E:                             312568640 281085516  31483124  90% /cygdrive/e
Run Code Online (Sandbox Code Playgroud)

有没有办法得到它?我试着/proc/*找找,但我在任何地方都找不到。我在想,也许这个设备寻址方案根本不适用于 Windows,但如果我查看/dev/文件夹,就会有一个列表:

$ ls -l /dev/ | grep sd 
brw-rw-rw-  1 admin   None   8,   0 Jul 17  2017 sda
brw-rw-rw-  1 admin   None   8, …
Run Code Online (Sandbox Code Playgroud)

filesystems partition cygwin posix block-device

6
推荐指数
1
解决办法
6547
查看次数

netcat 回声服务器 - 可以用管道代替命令作为字符串吗?

我想创建一个回显服务器而不在字符串中指定任何命令。我希望所有命令都通过管道连接。

这似乎不可能,因为在请求可以传递给响应生成逻辑之前返回响应。似乎我可以使用 ncat 但我也宁愿避免这种情况。

我认为使用 fifo 队列可能是可能的,但我无法使其正常工作。

“我正在尝试做什么”部分

以我有限的语言能力,试图证明这些限制是具有挑战性的。但我的最终目标是使用 xinetd(但没有守护进程)的便利来维护我所有应用程序逻辑的主脚本。这样的主脚本可能有几十行,如下所示:

nc -l 8080 | get_person_name.sh | create_insert_statement.sh | sqlplus
nc -l 8081 | get_person_id.sh | create_select_statement.sh | sqlplus
Run Code Online (Sandbox Code Playgroud)

第二个将不起作用,因为它无法将输出返回给客户端。因此,我将问题减少到使用 netcat 实现回声服务器。我不想使用字符串,因为所有这些命令都是动态的,我只是不想处理额外的间接级别(首先,我的文本编辑器将没有那么有用的语法突出显示)。不过,我愿意接受此处的文档解决方案。

netcat

3
推荐指数
1
解决办法
7929
查看次数