小编jmc*_*jmc的帖子

添加自定义 Compose 键序列

如何添加自定义组合键序列?我用谷歌搜索了很多,但找不到解释。特别是,我想要:

<Compose> + <Z> + <Z> = ? # Blackboard bold Z (set of integers)
Run Code Online (Sandbox Code Playgroud)

特别是,我尝试将文件复制/usr/share/X11/locale/en_US.UTF-8/Compose~/.XCompose,并模仿其语法。然而,这似乎不起作用。

x11 keyboard-layout compose-key

14
推荐指数
2
解决办法
3170
查看次数

在管道中使用脚本时如何读取用户输入

一般问题

我想编写一个与用户交互的脚本,即使它位于管道链的中间。

具体例子

具体来说,它需要一个fileor stdin,显示行(带有行号),要求用户输入一个选择或行号,然后将相应的行打印到stdout。让我们调用这个脚本selector。那么基本上,我希望能够做到

grep abc foo | selector > myfile.tmp
Run Code Online (Sandbox Code Playgroud)

如果foo包含

blabcbla
foo abc bar
quux
xyzzy abc
Run Code Online (Sandbox Code Playgroud)

然后selector向我展示(在终端上,而不是在myfile.tmp!)

1) blabcbla
2) foo abc bar
3) xyzzy abc
Select options:
Run Code Online (Sandbox Code Playgroud)

之后我输入

2-3
Run Code Online (Sandbox Code Playgroud)

并以

foo abc bar
xyzzy abc
Run Code Online (Sandbox Code Playgroud)

作为 的内容myfile.tmp

我已经启动并运行了一个选择器脚本,如果我不重定向输入和输出,它基本上可以完美运行。所以

selector foo
Run Code Online (Sandbox Code Playgroud)

表现得像我想要的。但是,当如上例那样将事物组合在一起时,selector将显示的选项打印到myfile.tmp并尝试从 grepped 输入中读取选择。

我的方法

我尝试使用 的-u标志read,如

exec 4< /proc/$PPID/fd/0
exec 4> /proc/$PPID/fd/1 …
Run Code Online (Sandbox Code Playgroud)

bash pipe file-descriptors interactive read

11
推荐指数
1
解决办法
4211
查看次数