小编tri*_*eee的帖子

为什么没有“欧洲英语”语言环境?

我曾经en_DK.UTF-8在安装新系统时使用有点异想天开的语言环境,因为即使我不在丹麦,这也会(大致)产生我想要的语言环境结果。

  • 测量指标
  • 合理的日期和时间格式,但英文的日期和月份名称
    • 24 小时制时间格式
    • 工作周从星期一开始
    • (至少类似于)ISO 格式的数字日期,yyyy-mm-dd
    • 非正式日期是 dd/mm,而不是相反
  • A4纸尺寸
  • 欧元货币
  • 英文系统消息

唉,Ubuntu 和 Debian 似乎不再支持en_DK语言环境。我一直在想应该有类似en_EU“欧洲英语”的东西。

我工作过的每个地方都有这样的要求——该组织的官方语言是英语,但我们希望其他一切都使用欧洲大陆的默认语言。

我想我不是第一个认为“位置不可知”的英语语言环境对我个人和我工作的组织都有益的人。那么为什么它不存在,我在哪里寻找进一步的讨论和理由?

... 或者我应该继续提出它?给谁?

i18n locale

117
推荐指数
5
解决办法
2万
查看次数

“export var=value”在哪里不可用?

我已经发现——可能是在 1990 年代中期(!)的 Usenet 上——构造

export var=value
Run Code Online (Sandbox Code Playgroud)

是一种 Bashism,可移植的表达方式是

var=value
export var
Run Code Online (Sandbox Code Playgroud)

我多年来一直提倡这一点,但最近有人向我提出质疑,我真的找不到任何文件来支持我曾经坚定的信念。

谷歌搜索"export: command not found"似乎没有提出任何有人实际遇到这个问题的案例,所以即使它是真的,我想这也不是很常见。

(我得到的点击似乎是复制/粘贴标点符号的新手,结果是'export: command not found或一些这样的,或者尝试使用exportwith sudo; 以及csh尝试使用 Bourne shell 语法的新手用户。)

我可以肯定的告诉大家,它适用于OS X和各种Linux发行版,包括那些地方shdash

sh$ export var=value
sh$ echo "$var"
value
sh$ sh -c 'echo "$var"'  # see that it really is exported
value
Run Code Online (Sandbox Code Playgroud)

在当今世界,可以安全地说export var=value使用安全吗?

我想了解后果是什么。如果它不能移植到 v7“Bourne classic”,那也不过是琐事。如果有 shell 真的无法处理这种语法的生产系统,那么知道这会很有用。

shell compatibility history

33
推荐指数
2
解决办法
3583
查看次数

LC_CTYPE 的有效值?

我在各种论坛上发现了许多问题,其中 Mac 用户locale在通过 SSH 登录 Linux 系统时抱怨错误,抱怨LC_CTYPE=UTF-8设置不正确。

更详细地说,MacOS 上的 shell 似乎设置了这个值,然后(如果您在终端等中启用了该选项),LC_*当您通过 SSH 登录时,您的本地变量会导出到远程系统。

Linux 坚持LC_CTYPE需要将其设置为有效的语言环境(有时您可以localegen在 Linux 系统上以管理员身份解决此问题),但UTF-8首先不是语言环境。

我的主要问题是,这是 MacOS 中的错误吗?还是 Linux 坚持将变量设置为完全指定的语言环境名称是错误的?

其次,为了能够争论哪个是正确的以及为什么是正确的,这在哪里指定?

第三,这些 Mac 用户(包括我自己)是否可以或应该做一些不同的事情?

明显的解决方法是把类似的东西

LC_CTYPE=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

在你的.bash_profile,但这显然只是解决它为您的个人帐户,并会有限制可能会或可能不会与其他一致的值locale设置。

linux osx i18n locale

7
推荐指数
2
解决办法
1630
查看次数

为什么 tar 对 stdout 和 - 的处理不同?

在OP 发表评论后,我发现/dev/stdout即使在禁用缓冲后也会给出 10 KiB 的块,但-事实并非如此。为什么是这样?man tar我在Nor中找不到任何与此相关的内容man stdout

注意,/dev/stdout00002800,不是000000a1。输出是正确的,除了用空字节填充之外。

> mkdir -p /tmp/747613
> cd /tmp/747613
> echo 747613 > file.txt

> tar czf /tmp/archive_tgz .
> hd /tmp/archive_tgz
00000000  1f 8b 08 00 00 00 00 00  00 03 ed d1 41 0a c2 30  |............A..0|
00000010  10 85 e1 ac 3d 45 4e 90  66 9a 49 72 9e 2e 22 08  |....=EN.f.Ir..".|
00000020 …
Run Code Online (Sandbox Code Playgroud)

linux shell tar buffer

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

在 Unix 文件上使用正则表达式提取子字符串

我有以下内容的文件。

/ABC/RTE/AD_900_VOP_123/OPP
/ABC/RTE/TRE/AD_900_VOP_145/BBB
/ABC/RTE/AN_900_VFP_124/FBF
/ABC/RTE/HD_900_FOP_153/WEW
/ABD/RDV/AD_900_VOP_123/OPP
/ABC/RTE/WD_900_VOP_123/GRR/TRD
/ABC/RTE/RTD/AR_900_VOP_443/SDD
Run Code Online (Sandbox Code Playgroud)

如何在此文件上使用正则表达式,以便获得输出,例如

AD_900_VOP_123
AD_900_VOP_145
AN_900_VFP_124
HD_900_FOP_153
AD_900_VOP_123
WD_900_VOP_123
AR_900_VOP_443
Run Code Online (Sandbox Code Playgroud)

grep sed awk regular-expression

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

为什么这个无限循环没有用完我的系统资源?

我在 BASH 中做了以下事情:

while true;do bash;done
Run Code Online (Sandbox Code Playgroud)

我写了这个班轮,但一开始我不确定它是否:

  • 留在主外壳和父亲尽可能多的子外壳,因为它耗尽了内存或其他一些东西。
  • 主外壳产生子外壳,然后这个子外壳产生子外壳,直到这个世系耗尽记忆或其他一些东西。

但是,我想这是第二种情况,因为一旦我运行了一个班轮,我在提示后不久就回来了,我开始输入退出和另一个退出,退出,退出,退出......但我仍然没有回到主壳。

现在,既然打开了这么多子shell,而且每个子shell都是一个程序,我想每个子shell都应该有自己的PID。

所以我做了:

ps aux | grep bash
Run Code Online (Sandbox Code Playgroud)

希望看到很多名称中带有 bash 的进程。

然而,没有像这样的,只有两个 bash shell。

怎么可能,我想我在某个地方对进程、外壳、子外壳和 PID 有一个非常错误的想法,但不知道在哪里。

command-line shell bash process

4
推荐指数
2
解决办法
484
查看次数