小编Ren*_*ger的帖子

为什么 printf “缩小”变音符号?

如果我执行以下简单脚本:

#!/bin/bash
printf "%-20s %s\n" "Früchte und Gemüse"   "foo"
printf "%-20s %s\n" "Milchprodukte"        "bar"
printf "%-20s %s\n" "12345678901234567890" "baz"
Run Code Online (Sandbox Code Playgroud)

它打印:

Früchte und Gemüse foo
Milchprodukte        bar
12345678901234567890 baz
Run Code Online (Sandbox Code Playgroud)

也就是说,带有变音符号(例如ü)的文本每个变音符号“缩小”一个字符。

当然,我在某处有一些错误的设置,但我无法弄清楚可能是哪一个。

如果文件的编码为 UTF-8,则会发生这种情况。

如果我将其编码更改为 latin-1,则对齐是正确的,但变音符号呈现错误:

Fr?chte und Gem?se   foo
Milchprodukte        bar
12345678901234567890 baz
Run Code Online (Sandbox Code Playgroud)

bash unicode printf

58
推荐指数
3
解决办法
7574
查看次数

什么是bash中的“<Esc>Kv”

当我在 bash 中并按Esc, Shift+ K, 时V,bash 会$EDITOR以类似于/tmp/bash-fc-186566385.

为什么会这样,它的目的是什么?

我可能需要提到我正在使用 .bash 运行 bash set -o vi

bash keyboard-shortcuts vi

13
推荐指数
2
解决办法
2911
查看次数

{a,b,c} 什么时候在 bash 中展开,什么时候不展开?

一个 bash 脚本,包含

for i in {a,b}-{1,2}; do
  echo $i;
done
Run Code Online (Sandbox Code Playgroud)

印刷

a-1
a-2
b-1
b-2
Run Code Online (Sandbox Code Playgroud)

执行时。这是我所期望的 - 随着{a,b}构造的扩展。

但是,当(另一个)脚本包含

v={a,b}-{1,2}
echo $v
Run Code Online (Sandbox Code Playgroud)

它打印

{a,b}-{1,2}
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的。我预计它会打印a-1 a-2 b-1 b-2。显然,该{a,b}构造没有展开。

我可以让它像这样扩展

v=$(echo {a,b}-{1,2})
Run Code Online (Sandbox Code Playgroud)

基于这些观察,我有两个问题:1)何时{a,b}扩展构造?2) 是$(echo {a,b}-{1,2})在需要时触发扩展的首选方式吗?

bash brace-expansion

13
推荐指数
2
解决办法
1345
查看次数

sudo pacman -Syu 失败并显示“错误:无法提交事务(无效或损坏的包)”

我正在尝试更新 arch Linux 安装:

sudo pacman -Syu
Run Code Online (Sandbox Code Playgroud)

它持续了一段时间,然后开始写入错误消息,例如

(691/691) checking keys in keyring                                                                                                                        [##############################################################################################] 100%
(691/691) checking package integrity                                                                                                                      [##############################################################################################] 100%
error: libtiff: signature from "Levente Polyak (anthraxx) <levente@leventepolyak.net>" is unknown trust
:: File /var/cache/pacman/pkg/libtiff-4.1.0-1-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: krb5: signature from "Levente Polyak (anthraxx) <levente@leventepolyak.net>" is unknown trust
:: File /var/cache/pacman/pkg/krb5-1.17.1-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
Run Code Online (Sandbox Code Playgroud)

我尝试了两者,用 …

arch-linux pacman software-updates

13
推荐指数
1
解决办法
7760
查看次数

是否有与 Windows 环境变量 PATHEXT 等效的 Unix

我想知道是否有 Windows 环境变量的 Unix 等效项PATHEXT

对于那些没有 Windows 背景的人:添加文件后缀以PATHEXT允许我执行脚本而无需在 cmd.exe 中键入该后缀。例如,在我的 Windows 计算机上,PATHEXT 包含后缀.pl,当我想在 cmd.exe 中执行 Perl 脚本时,我只需键入my-script即可执行。然而,为了在 bash 中执行相同的脚本,我需要写全名:my-script.pl.

由于我目前同时在 Windows 和 Unix 上工作,我几乎总是陷入再次进入 Unix 框时忘记键入后缀的陷阱。

shell environment-variables

12
推荐指数
3
解决办法
2276
查看次数

如何在带条的命令行中为多个变量赋值

我基本上是在尝试将 shell 命令输出的某些部分分配给多个变量,但我不知道如何做到这一点。

为简单起见,假设 shell 上的命令在执行时打印

one two three four
Run Code Online (Sandbox Code Playgroud)

可以用一个模拟

echo "one two three four"
Run Code Online (Sandbox Code Playgroud)

(虽然实际的命令是不同的)

现在,我想将输出的第二个和第四个字(在本例中为)分配给变量w1w2

我以为我可以像这样使用read命令:

echo "one two three four" | awk '{print $2 " " $4}' | read w1 w2
Run Code Online (Sandbox Code Playgroud)

但这不起作用,可能是因为读取命令是在子进程中执行的。

那么,我将如何实现我所追求的目标?

shell bash

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

unix邮箱格式是什么?

man git-format-patch引用了UNIX 邮箱格式,这是我不熟悉的术语。

谷歌搜索“ UNIX邮箱格式”和类似的表达式列出了许多包含术语mbox的匹配结果。

mbox甚至还有一个手册页(man mbox) 。

我得出结论,mboxUNIX 邮箱格式是同一件事,但我不是 100% 确定。

有人可以证实(或否认)我的假设吗?

standard email file-format

7
推荐指数
1
解决办法
4628
查看次数

如何在 vi 模式下搜索 bash 的历史记录“foo.*bar”

我的 bash 环境处于 vi 模式 ( set -o vi)。所以我可以输入<ESC>/后跟一个词,然后回车,然后 bash 在历史记录中搜索这个词。由于/也是vi搜索正则表达式的方法,所以我在表达式下bash也会搜索正则表达式。

不幸的是,当我输入<ESC>/foo.*barbash 时,它在历史记录中找不到任何与正则表达式匹配的行foo.*bar

我是否忽略了某些东西,还是无法在历史记录中搜索正则表达式?

bash command-history regular-expression readline

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

#include 另一个 Xresources 文件时可以使用环境变量吗

在我的~/.Xresources文件中,我想包含另一个文件,其位置取决于环境变量的值。这可能吗?

#include "${env_path}/abc/def/Xresources"
Run Code Online (Sandbox Code Playgroud)

似乎没有扩大${env_path}

environment-variables x-resources

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