Articles of 命令行

在Unix上分离命令行输出(处理和用户交互)的方法是什么?

我正在编写一个控制台应用程序,其中可能需要用户交互(提示键盘input,cli参数等),但我想保持它与处理的结果分开(它以一种方式可以通过pipe道连接到其他应用程序)。 我怎么能做到这一点,如果我不能只是发送所有与用户交互cerr(不是一切都是错误的)?

linux shellstreamredirect直接运行一个命令列表

我有这个svn项目…获取未添加的文件列表(在我的情况下,数百): svn status |grep "^?" 输出 ? somefile.txt ? somefile1.txt ? somefile2.txt 我最近被介绍给sed …所以现在我有一个我想运行的命令列表 svn status | grep "^?"|sed "s/^?/svn add/" 输出 svn add somefile.txt svn add somefile1.txt svn add somefile2.txt 我意识到我可以把它pipe到一个文件 svn status | grep "^?"|sed "s/^?/svn add/" >out.sh && sh out.sh && rm out.sh 但是我想避免写一个临时文件。 有没有一种方法,我pipe它像这样的命令: svn status | grep "^?"|sed "s/^?/svn add/" […]

从shell调用C函数(libcanberra)

我想在一个有趣的项目中使用Git钩子来播放系统声音。 有一个freedesktop标准和一个用于系统声音的C库( libcanberra ),但libcanberra没有可执行文件。 有没有简单的方法来从shell脚本调用libcanberra的ca_context_play方法,而无需启动完整的Perl或Python解释器? 如果没有,我将如何与Perl / python?

awk脚本在特定行打印信息

我有一些数据文件,我需要拉出一些信息。 我想用一个awk脚本来获取数据,所以我可以将一些数据吸收到bash数组中。 为此,我们假设我需要以下内容(1索引): – 我需要awk打印第2,3和4行上的第一列 – 我需要awk打印第8行和第8行上的列1,2和3。 但是我希望所有在列之前打印的列和三列之前的列都是两列。 使用以下数据示例: abc def ghi jkl mno 1a1 2b2 11 22 33 44 55 66 77 88 99 00 12 13 14 15 16 17 我想awk打印string: def ghi jkl 11 55 99 14 22 66 00 15 33 77 12 16 我创造了以下,我认为会工作,但我得到一个错误,说:“结束博克必须有一个行动的一部分”。 awk ' BEGIN {i=0;} { if […]

我怎样才能预先标签到grep的输出?

让我们说我有以下文字: name is test1 and age is test2 end name is test3 and age is test4 end name is test5 and age is test6 end name is test7 and age is test8 end 我正在考虑test1,test2,…如下: -bash$ grep -o -P "is .*? and|is .*? end" test is test1 and is test2 end is test3 and is test4 […]

如何区分两个文件夹到多个补丁文件

首先,我试着在askubuntu上询问同样的问题,但我并没有在这方面做得太多。https://askubuntu.com/questions/186114/how-to-diff-two-folders-to-multiple-patch-files/ 186121个#comment231985_186121 所以,我会复制/粘贴希望这给我一个工作的解决scheme… 我不是一个unix的人,所以我会继续问: 我有一个以下的问题 – 两个文件夹与大量的子文件夹。 我需要区分他们。 我试过这个: diff -drupN vanila_kernel_3.0.8 my_kernel_3.0.8 > kernel.patch 这导致了一个185MB文件…而不是真正的我想要的。 我希望差异的结果是很多较小的补丁,理想情况下每个更改的文件与更改的内容之一。 这意味着我有改变我使用差异的方式,我需要把它放在某种循环…所以我试着运行这个小脚本 for file in original_308/*.*; do diff -dupN "$file" "my_308/${file##*/}" > "$file".patch done 但它不起作用:/ 理想情况下,我想为每个更改都有一个.patch文件,但是对于在原始文件中更改的文件的修补程序可以做得很好(因为我可以过滤新添加的文件并将其复制) 有人可以提供一个体面的方式来做到这一点吗? 更新:我知道这些文件夹和4546新增文件之间有231个改变的文件…我只是有兴趣在生成这些231补丁。 我甚至有一个文件包含这些231文件名,以便可以在脚本中使用。 我用这个来生成更新日志 diff -qdr -x *.o -x *.cmd -x *.d original_308 my_308 | sed "s/^.* and \(.*\) differ/\1/" | sort > […]

与FreeTDS一起使用Sqsh的优点是什么?

新手问题在这里:我有FreeTDS的工作和查询微软SQL服务器2008年R2分贝,从薄荷Linux虚拟机,阅读跨networking,主要是stackoverflow,这是提到,我应该使用sqsh也与FreeTDS , SQSH和FreeTDS ,我不明白是什么sqsh,除了是cli的某种types,我猜,增加了,因为我可以使用FreeTDS来访问数据库..任何信息来清除这一点,将不胜感激。

删除文件夹中没有列出的所有文件

最近,我正在编写一个bash命令行脚本来维护特定文件夹的大小。 请注意,有些程序有时在这个文件夹中写入/更新文件,所以一个“全部”的rm -rf将永远不适合这种情况。 我能够检索所有“活动”,换句话说,使用lsof打开文件,并用awk打印出来: lsof +D ./ | awk ' { print ( $NF ) } ' 这给了我一个打开的文件列表,我显然不想摆脱它们。 不过,我想删除其余的。 我希望在rm命令中有一个选项可以使用^选项排除某些文件… 有没有办法在bash中实现这一点? 非常感谢。

从c ++运行一些命令行命令

我用python编写了一个程序,它具有能够查找文件大小,创build目录和移动的function,就好像我只是在一个普通的shell中一样。 porblem是我需要能够在c ++中做到这一点。 以下是我需要c ++function的python代码: os.chdir('r'+str(r)+'n'+str(n)) def build_path(newpath): if os.path.isdir(newpath): os.chdir(newpath) else: os.mkdir(newpath) os.chdir(newpath) 而且这件作品: if os.stat('data'+str(tick)).st_size > 2500000: heavyFile.close() tick+=1 heavyFile=open('data'+str(tick),'w') os.system('touch COMPLETED'+str(r)+str(n)) 所以基本上我需要能够制作一些目录,转换成这些目录,生成文件,但不要让它们大于2.5 MB,当它们最终超过这个大小时,创build一个新的文件,一。 所以文件树最终看起来像: r4n4 / dir1 / data0,data1,data2等r4n4 / dir2 / data0,data1,data2等等。 我怎样才能做到这一点在C + +? 我知道我可以调用系统('命令'),但我不知道如何获得文件大小很好,我只是希望有一个更简单的方法来做到这一点。 另外,我无法提升我正在运行此程序的位置。

如何比较文本文件和删除重复项(Linuxterminal命令)

假设我有两个名为dir_one和dir_two的目录。 在每个目录中,我都有一个名为data.txt的文本文件。 换句话说,在两个独立的目录中有两个文件: /dir_one/data.txt和/dir_one/data.txt尽pipe有相似的文件名,两个文本文件可能有或没有相同的内容! 我想要做的是这样的: 比较文本文件的内容:./dir_one/data.txt和./dir_one/data.txt 如果内容相同,请删除其中一个文本文件。 我在命令terminalinput了以下内容: diff -qrs ./dir_one/data.txt ./dir_two/data.txt 并收到以下消息: Files ./dir_one/data.txt ./dir_two/data.txt are identical. 现在我知道这两个文本文件是相同的,我可以使用rm命令删除其中的一个。 到现在为止还挺好。 然而… 问题是我想自动删除过程 。 我不想在命令行inputrm 。 有没有可能的方法来做到这一点 – 例如在脚本中? 我还想知道如何比较一个目录中的一大组文本文件与另一个目录中的一大组文本文件。 同样,对于任何发现相同的文件,其中一个副本应该被删除。 这可能吗? 我发现类似的问题,但没有一个关于自动删除重复的文件之一。 请注意,我使用的是Ubuntu 12.04。