Articles of unix

使用sed删除文本文件中的所有前导/后续空格

文件1: hello world 如何使用sed删除这个文件中的前/后空格 – 使用一个命令(没有中间文件) ? 我目前得到: sed -e 's/^[ \t]*//' a > b 领先的空间。 sed 's/ *$//' b > c 而这为尾随空间。

在接受连接之前或之后分叉?

以下代码片段创build了4个进程,全部共享相同的侦听套接字。 这样做有没有危险? 我应该一直有一个听取过程和叉后连接被接受,传统的方式? for (p = 0; p < 3; p++) { pid = fork(); if (pid == 0) break; } while (1) { unsigned int clientlen = sizeof(echoclient); /* Wait for client connection */ if ((clientsock = accept(serversock, (struct sockaddr *) &echoclient, &clientlen)) < 0) { die("Failed to accept client connection"); } fprintf(stdout, "Process […]

关于硬链接

有人可以解释我为什么内核不允许我们build立一个硬链接到一个目录。 无论是因为它打破了文件系统的有向非循环图结构的规则还是因为其他原因。 如果允许的话,还有什么其他的麻烦?

如何使SSH命令执行超时

我有一个这样的程序: ssh -q harigm@8.19.71.238 exit echo "output value –>$?" 在上面的代码中,我试图SSH到远程服务器,并尝试检查是否可以连接或不。 我有几个服务器,这是密码less被激活,less数服务器的密码仍然没有停用。 所以,我担心,如果有密码,它会卡在同一个屏幕上要求input密码,并且在无限期的时间内,无需退出逻辑。 问题:如何为上述代码实现定时器,如果它保持在同一个屏幕上询问密码。 并退出一些错误代码 2)当我执行上面的代码,我得到以下错误代码: 127 — > I guess its for success 225 — > for any error. 除上述以外是否还有其他错误代码?

ELF文件标题

关于精灵文件标题的一个简短的问题,我似乎无法find任何有用的如何添加/更改精灵标题中的字段。 我希望能够改变魔术数字,并添加一个生成date头,可能还有一些其他的东西。 据我了解,链接器创build标题信息,但我没有看到任何引用它的LD脚本(虽然我是新的ld脚本)。 我正在使用gcc和ARM构build。 谢谢! 更新: 好的,也许我的第一个问题应该是:有可能在链接时创build/编辑头文件?

什么是EOF! 在bash脚本?

有一个我不明白的命令: custom_command << EOF!! 我想问一下EOF! 是在bash脚本中。 我确实find谷歌的EOF,但谷歌会忽略“!!” 自动,所以我找不到EOF !! 我知道文件标记的结尾,但是我不完全知道这个“!!”是什么意思。 在脚本中。 这是一个标志,迫使某些东西像vim的wq一样! ? 另外,为什么和什么时候应该使用EOF! 而不是EOF?

如果posixclosures呼叫失败怎么办?

在我的系统(Ubuntu Linux,glibc)上, close调用的手册页指定了它可以返回的几个错误返回值。 它也说 不检查close()的返回值是一个常见但严重的编程错误。 并在同一时间 请注意,返回值只能用于诊断。 特别是close()不应该在EINTR之后重试,因为这可能导致来自另一个线程的重用描述符被closures。 所以我不允许忽略返回值,也不能重试呼叫。 鉴于此,我应该如何处理close()呼叫失败? 如果在写文件的时候发生了错误,我可能应该尝试在其他地方写信息以避免数据丢失。 如果我只是在阅读文件,我可以只logging失败,并继续假装什么都没有发生? 是否有任何警告,文件描述符泄漏或其他?

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等)执行此操作。