Articles of unix

Locale.getDefault()总是返回en

unix机器上的服务器总是使用en作为默认语言环境。 以下是区域设置输出 LANG=en_US LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=C 我只是不明白,如果LANG设置正确,那么为什么服务器以en语言环境启动。

检测shell脚本的输出streamtypes

我正在编写一个在命令行上使用ANSI颜色字符的shell脚本。 例如: example.sh #!/bin/tcsh printf "\033[31m Success Color is awesome!\033[0m" 我的问题是在做什么时: $ ./example.sh > out 要么 $./example.sh | grep ASCII代码将随着文本一起被发送出去,将输出分散开,并且通常会导致混乱。 我有兴趣知道是否有办法检测这个,所以我可以禁用这种特殊情况下的颜色。 我已经search了tcsh手册页和networking了一段时间,一直没能find任何特定的shell。 我不是必然的tcsh,这是我们的团体标准…但谁在乎? 是否有可能在shell脚本中检测您的输出是redirect还是pipe道?

如果进程是SIGKILL,OS(POSIX)是否刷新内存映射文件?

如果一个进程被SIGKILL杀死,它对内存映射文件所作的更改是否会刷新到磁盘? 我认为,如果操作系统确保内存映射文件在通过SIGKILL终止进程时刷新到磁盘,那么它也会对其他终止信号(SIGABRT,SIGSEGV等)执行此操作。

可以将多个.gz文件合并为一个文件吗?

可以说,我有3个文件: 1.txt , 2.txt和3.txt都是gzipped。 我知道,gzip允许多个文件结合使用猫: cat 1.gz 2.gz 3.gz > 123.gz 但是,当提取123.gz将产生原始的3个文件。 是否有可能将三个档案合并成一个档案内的单个文件将被合并成单个文件的方式?

为什么在vim中使用Esc?

Vi编辑器最初是在一个ADM-3Aterminal上编写的,该terminal的Tab键代替了Tab键(与大多数现代键盘相比)。 许多触摸打字员都很喜欢这样一个事实,即在使用Vim的时候,他们可以将手放在键盘的一排,但是使用Esc会使得必须离开手按Esc键。 我目前正在学习vim。 应该把Esc重新映射到别的地方? 这种情况最常见的重映射是什么? 或者我应该离开重新esc的想法,并继续使用它? vim的亲用户做什么?

tempfile和mktemp有什么区别?

我遇到的大多数系统都有tempfile(1)和mktemp(1) 。 有语法上的差异,而且mktemp也可以创build目录,但是它们看起来是一样的。 两者有什么区别? 为什么两者都存在? 比另一个更标准吗? 如果我只想安全地创build一个临时文件,是否有任何理由相对于另一个? 我怀疑在这之后有一些有趣的Unix绝杀,但是我的search没有任何结果。

如何移动相对符号链接?

我有很多相对的符号链接,我想移动到另一个目录。 如何在保留正确path的同时移动符号链接(具有相对PATH的链接)?

在Linux C中清除terminal程序的输出

我想清除用printf语句生成的C程序的输出。 我只想清除一行,例如: [资源] printf("AAAAAAAAAAAAAA"); printf("BBBBBBBBBBBBBB"); printf("CCCCCCCCCCCCCC"); printf("DDDDDDDDDDDDDD"); [终奌站] AAAAAAAAAAAAAA BBBBBBBBBBBBBB CCCCCCCCCCCCCC DDDDDDDDDDDDDD [我希望] AAAAAAAAAAAAAA BBBBBBBBBBBBBB CCCCCCCCCCCCCC 我会把“DDDDDDDDDDDDDDD”一行写在其他string中。 我只想把上面的A,B,C句子留下。 只有清楚D句子才能改变其他句子,无条件输出D句子。 我该怎么做呢?

在Linux上安装Oracle Instantclient而不设置环境variables?

Oracle的说明指定了设置LD_LIBRARY_PATH。 这使得我的应用程序依赖于随机用户的configuration,并且非常麻烦。 我怎样才能避免设置任何环境variables? OS / X的相关说明: 在Mac OS / X上安装Oracle Instantclient而不设置环境variables?

write()系统调用什么时候写入所有请求的缓冲区而不仅仅是部分写入?

如果我在write()系统调用中写入例如100字节,我总是把这个write()调用放在一个循环中,检查返回的长度是否是我期望发送的长度,如果不是,它碰撞缓冲区指针并减less写入量的长度。 所以我再一次做到了这一点,但现在有了StackOverflow,我可以问你们,如果有人知道我写的东西什么时候会写出我要求的所有东西,还给我一个部分写入? 附加注释:X-Istence的回复提醒我,我应该注意到文件描述符是阻塞的(即不是非阻塞的)。 我认为他暗示,一个阻塞文件描述符上的write()不会写入所有指定的数据的唯一方法是当write()被一个信号中断时。 这似乎至less让我觉得直觉…