问题是撰写键工作正常,但某些应用程序不接受其中的某些字符。例如,我可以?在 Emacs ( Compose+ 8+ 8) 中输入字符,但这在 FireFox、Konsole 和 Kate 中不起作用。但是许多其他字符,例如在€那里输入(在 FireFox、Konsole 和 Kate 中)使用Compose工作得很好。此外,我可以通过简单的复制粘贴(从两个剪贴板中的任何一个)插入问题符号。
那么,是什么原因造成的,如何解决呢?
抱歉,我不知道如何研究这个问题。我发现有些人的 Compose 键在某些应用程序中根本不起作用,但在我的情况下它是有效的,尽管部分原因。
设置:在/etc/default/keyboardKDE 和 KDE 键盘设置中,组合键都绑定到右侧的 Super 键。
假设您有一个如下所示的管道:
$ a | b
如果b停止处理标准输入,一段时间后管道填满,并从a标准输出写入,将阻塞(直到b再次开始处理或死亡)。
如果我想避免这种情况,我可能会尝试使用更大的管道(或更简单地说,buffer(1)),如下所示:
$ a | buffer | b
这只会为我争取更多时间,但最终a会停止。
我想要的(对于我正在解决的一个非常具体的场景)是有一个“泄漏”的管道,当它满了时,会从缓冲区中删除一些数据(理想情况下,逐行)让我们a继续处理(正如您可能想象的那样,在管道中流动的数据是可消耗的,即处理数据b不如a能够无阻塞地运行重要)。
总而言之,我希望有一个像有界的、泄漏的缓冲区之类的东西:
$ a | leakybuffer | b
我可能可以用任何语言很容易地实现它,我只是想知道是否有我遗漏的“准备使用”(或类似 bash one-liner 之类的东西)。
注意:在示例中我使用的是常规管道,但该问题同样适用于命名管道
虽然我给出了下面的答案,但我也决定实施leakybuffer 命令,因为下面的简单解决方案有一些限制:https : //github.com/CAFxX/leakybuffer
考虑命令
eval false || echo ok
echo also ok
Run Code Online (Sandbox Code Playgroud)
通常,我们希望它执行false实用程序,并且由于退出状态非零,然后执行echo ok和echo also ok。
在我使用的所有类似 POSIX 的 shell(ksh93、zsh、bash、dash、 OpenBSDksh和yash)中,都会发生这种情况,但是如果我们启用set -e.
如果set -e有效,OpenBSDsh和kshshell(均源自pdksh)将在执行eval. 没有其他外壳能做到这一点。
POSIX 表示特殊内置实用程序(例如eval)中的错误应导致非交互式 shell 终止。我不完全确定执行是否false构成“错误”(如果是,则与set -e活动无关)。
解决此问题的方法似乎是将其放入eval子外壳中,
( eval false ) || echo ok
echo also ok
Run Code Online (Sandbox Code Playgroud)
问题是我是否需要在 POSIX-ly 正确的 …
来自 APUE
进程的真实用户 ID 和真实组 ID 标识了我们的真实身份。这两个字段取自我们登录时密码文件中的条目。通常,这些值在登录会话期间不会更改,尽管超级用户进程可以通过多种方式 更改它们
超级用户进程是否可以更改进程的真实用户ID和真实组ID,从而使真实用户ID和真实组ID之间的关系与密码文件中的关系不匹配?例如,如果用户Tim不是ocean每个密码文件的组成员,超级用户进程是否可以将进程的真实用户 ID 和真实组 ID分别更改为Tim和ocean?
我曾经sudoedit创建一个文件:
$ sudoedit /etc/systemd/system/apache2.service
Run Code Online (Sandbox Code Playgroud)
但是当我去保存文件时,它把它写在一个临时目录(/var/temp/blahblah)中。到底是怎么回事?为什么不把它保存到系统目录?
正如此 SSL 检查报告的那样,存在一个 SSL 链损坏的服务器:
我知道这是一个应该在服务器本身上解决的问题,但有时这很难解决(我不是服务器的管理员)。
问题是,Windows 上的 Chrome/Mozilla/Edge无论如何都信任站点证书:
但是,在 Gnu/Linux 部署(Docker 中的 Ubuntu 18.04)中,证书不受信任:
curl: (60) SSL certificate problem: unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)
我尝试update-ca-certificates甚至导入了 Globalsign 根证书。update-ca-certificates在这种情况下报告了重复的证书。无论如何,没有任何作用。
使用 Docker:
docker run -it ubuntu:18.04
# within container:
apt-get update
apt-get -y install curl
curl https://betriebsheft.vog.it # <---- "unable to get local issuer certificate"
Run Code Online (Sandbox Code Playgroud)
我怎样才能让 Gnu/Linux 信任这个证书?
PS:在另一台服务器上正确部署了相同的证书。
我经常使用/tmpLinux 机器上的目录来存储临时文件(例如,来自希望我先下载它的站点的 PDF 等),并且我经常使用我的用户名创建一个目录。但是在每次启动时它(包括所有文件)都会被删除。现在我知道我可以把它放进去/var/tmp,但我想删除它的所有内容,但要保留目录本身。所以:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?也许有权限或有特殊配置?
我在我公司的服务器上设置了 DNS,它工作得很好,除了我的一些电话有问题。例如其中一部手机是“Huawei P9 lite”,它的主机名(在手机上设置,没有root就没有机会更改)是“HUAWEI_P9_lite”,这导致我的日志充斥着错误。
有没有办法处理主机名中的下划线?我知道我可以设置一个选项来忽略check-names,但我宁愿不这样做。也许我可以以某种方式为某些设备(基于 MAC 地址)强制使用主机名?
在同一台服务器上还有一个 DHCP 服务器。
我想生成一个包含所有 8 位数字的排序列表——从 00000000 到 99999999。我在 shell 中输入:
f() {
while IFS="" read -r line; do
for i in {0..9}; do
echo "$line$i";
done;
done
}
echo | f | f | f | f | f | f | f | f | tee result.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
回应是
bash: echo: write error: Interrupted system call
bash: echo: write error: Interrupted system call
bash: echo: write error: Interrupted system call
99998890
Run Code Online (Sandbox Code Playgroud)
为什么我会收到这三个错误和格式错误的 result.txt ?
我用
GNU bash,版本 4.4.12(1)-release (x86_64-pc-linux-gnu) …
我们要替换脚本文件扩展名
所以我们做了以下事情:
new_name=` echo run_fix.bash | sed 's/[.].*$//' `
new_file_extension=".in_hold.txt"
new_name=$new_name$new_file_extension
echo $new_name
run_fix.in_hold.txt
Run Code Online (Sandbox Code Playgroud)
但我觉得我的方法不是那么优雅
注意 - 因为脚本扩展名可以是 bash、perl 或 python,而且目标扩展名可以是“.”之后的任何内容。我们想要全球更换
我使用的是红帽 7.2