Articles of unix

多个不同的顺序sorting

我有这样的数据 HOS05 23/12/2008 10AM HOS06 15/12/2008 2PM HOS62 29/12/2008 10AM HOS64 23/12/2008 2PM HOS70 26/12/2008 10AM ZFT01 06/12/2008 10AM HOS73 11/12/2008 2PM MHOS0 05/12/2008 10AM MHOS0 20/12/2008 2PM MHOS0 27/12/2010 2PM MHOS0 11/12/2008 10AM MHOS0 30/12/2009 2PM ^^ ^^^^ 我必须用^ s表示两个偏移量。 第一个突出显示的偏移量应按ASC顺序sorting,然后以DESC顺序再次突出显示。 所以我喜欢这个 sort -k 1.6,1.8 date.txt | sort -k 1.14,1.17 -r > final.txt 输出: […]

Grep:列出每个文件的结果

有没有什么办法可以使用grep整齐地列出“每个文件”的结果。 就像是: $grep -i -r -n Search_Pattern . 输出: file1.c: LINE_NO: ………. Search_Pattern ……. /* Line Containing Search Pattern */ LINE_NO: ………. Search_Pattern ……. LINE_NO: ………. Search_Pattern ……. LINE_NO: ………. Search_Pattern ……. file2.c: LINE_NO: ………. Search_Pattern ……. LINE_NO: ………. Search_Pattern ……. LINE_NO: ………. Search_Pattern ……. LINE_NO: ………. Search_Pattern …….

如何使用保险丝在远程机器上安装目录?

我想知道如何使用FUSE从远程机器上挂载一个目录。 在这个链接中给出的教程将本地目录挂载到另一个本地目录。 这基本上发生在fuse_main函数中。 有没有人有一个想法,如何做一个远程机器上的目录相同? 函数调用如下 fuse_main(argc, argv, &bb_oper, bb_data); 注意:我不能使用sshfs 谢谢。

dynamic链接与LD实用程序与dlfcn API的优点?

我正在做一些独立于平台的代码的研究,并且发现了dlfcn API。 这是我第一次提到它,并进行了进一步的研究。 现在希望我的经验/平台无关的代码以及编译/链接的经验/理解不会显示在这篇文章中,但对我来说,dlfcn API只是让我们做程序相同的dynamic链接,ld工具。 如果我有误解,请纠正我的错误,因为我想知道。 关于我认识的关于ld工具和dlfcn API的知识,我有一些问题。 使用ld工具与dlfcn APIdynamic链接有什么好处? 我首先想到的是,dlfcn API似乎浪费了我的时间,因为我需要请求函数的指针,而不是检查未定义符号的符号表,然后链接它们。 同样的,ld为我做了一切,而我必须用dlfcn API手工完成所有工作(即打开/加载库,获取函数指针,closures库等)。 但是,乍一看,我认为可能有一些优势。 一个是我们可以在完成使用后加载一个内存不足的内存。 通过这种方式,如果我们知道我们不需要一直使用库,内存就可以得到保存。 我不确定是否有任何“内存/库”pipe理dynamic链接ld的库? 同样,我不确定使用dlfcn API来保存上述内存时,我们会对哪些场景/环境感兴趣,因为看起来在现代系统中这似乎不成问题。 我认为在资源非常非常非常有限的系统上(也许是一些embedded式系统),会使用该库。 还有什么其他的优点或缺点? 什么“编码模式”用于平台无关的代码关于dynamic链接? 如果我是依赖于系统调用的平台独立的代码,我可以看到我自己通过三种风格之一编码来实现平台无关的代码: 逻辑分支直接在我的图书馆代码通过macros。 就像是: void myAwesomeFunction() { … #if defined(_MSC_VER) // Call some Windows system call #elif defined(__GNUC__) // Call some Unix system call … } 创build通用系统调用函数,并在我的库代码中使用这些函数。 就像是: OS_Calls.h void OS_openFile(string myFile) { […]

login过程作为协处理

我尝试运行login(1)过程作为我的程序的协处理。 程序应该接收login提示并写入login名。 login过程作为一个协处理器很好地启动。 但是在写入login提示之前它会立即退出。 该程序的简化版本(写东西等删除): int main( int argc, char** argv ) { int fd1[2]; int fd2[2]; if(( pipe(fd1) != -1 ) && ( pipe(fd2) != -1 )) { const pid_t child_pid = fork(); if( child_pid == 0 ) { dup2( fd2[0], STDIN_FILENO ); dup2( fd1[1], STDOUT_FILENO ); close( fd1[0] ); close( fd1[1] ); close( […]

如何平行我的bash脚本使用`find`而不面临竞争条件?

我试图执行这样的命令: find ./ -name "*.gz" -print -exec ./extract.sh {} \; gz文件本身很小。 目前我的extract.sh包含以下内容: # Start delimiter echo "#####" $1 >> Info zcat $1 > temp # Series of greps to extract some useful information grep -o -P "…" temp >> Info grep -o -P "…" temp >> Info rm temp echo "####" >> Info 显然,这是不可并行的,因为如果我运行多个extract.sh实例,它们都会写入同一个文件。 什么是这样做的聪明方式? […]

如何找回现有的消息队列ID

我正在使用msgget()系统调用来获取新的消息队列。 我已经使用了IPC_CREAT&IPC_EXCL标志。 例如message_queue = msgget(ftok("/tmp", 100), (0666 | IPC_CREAT | IPC_EXCL)); 现在,当我的编程存在意外,味精队列仍然存在,我无法重新创build味精队列。 所以,我的问题是“我怎样才能找回现有的msg队列的ID? 顺便说一下,味精队列在哪里存储它的ID?

C ++ Unixmultithreading“引擎盖下”会发生什么?

我想知道在Unix(特别是Linux)上,关于C ++multithreading的“底层”发生了什么 – 尤其是操作系统和信号量的介入等等。 我已经执行了最初的谷歌search,但它不是呕吐。 有人可能描述或指出我可以帮助一个很好的资源吗? 编辑:当我在C ++中创build一个线程时,操作系统创build/存储什么“对象”来pipe理此线程和相关的任何相关开销? 认识到这比C ++更多的是一个Linux问题。

编写一个接受多个多空间参数的bash脚本

(优秀的) Unix编程环境的例子考虑一个地址簿: John Perkins 616-555-4444 Bill Jotto 773-222-1112 Dial-a-Clown 738-224-5823 Prince Alex 837-999-999 Pizza Hut 833-339-222 Pizza Puk 882-922-222 Pizza Buk 822-221-111 现在我正在编写一个程序来search这个名为“ 411 ”的地址簿 grep $* /file/location/411 现在运行411将会屈服 $> 411 John >John Perkins 616-555-4444 现在说我想给约翰打个电话,邀请他做一些披萨(所以我在寻找约翰的数字和比萨的数字)。 $>411 John Pizza grep: can't open pizza 不匹配! 那么如何告诉shell使用任意空格接受多个参数呢?

如何在UNIX下将两个命令合并为一个?

通常我通过在terminal键入jdb开始debuggingjava程序,然后它将进入debugging模式,然后我可以input像“停在com.android.contacts.dirtyImport.DirtyImportManager:95”告诉jdb停在某一行。 现在问题是:我怎么把这两个cmdsinput一个。 就像“jdb <停在com.android.contacts.dirtyImport.DirtyImportManager:95”。 我有这个要求的原因是,我想让Vim自动生成debugging信息,并进入debugging模式,停止制造断点。