小编les*_*ana的帖子

如何使用Bash迭代目录中的文件?

我需要编写一个脚本,用不同的参数启动我的程序,但我是Bash的新手.我这样开始我的程序:

./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt].

这是我想要做的伪代码:

for each filename in /Data do
  for int i = 0, i = 3, i++
    ./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt
  end for
end for
Run Code Online (Sandbox Code Playgroud)

所以我真的很困惑如何从第一个创建第二个参数,所以它看起来像dataABCD_Log1.txt并启动我的程序.非常感谢帮助.

PS我知道那里有类似的问题,但我没有发现创建我的日志文件名称.

bash filenames for-loop glob

515
推荐指数
5
解决办法
69万
查看次数

如何从Unix上的文本文件中提取预定范围的行?

我有一个~23000行的SQL转储包含几个数据库的数据.我需要提取此文件的某个部分(即单个数据库的数据)并将其放在一个新文件中.我知道我想要的数据的起始行和结束行号.

有没有人知道一个Unix命令(或一系列命令)从第16224和16482行之间的文件中提取所有行,然后将它们重定向到一个新文件?

unix command-line text-processing sed

505
推荐指数
11
解决办法
46万
查看次数

将参数传递给"make run"

我使用Makefiles.

我有一个目标run,它运行构建目标.简化后,它看起来如下:

prog: ....
  ...

run: prog
  ./prog
Run Code Online (Sandbox Code Playgroud)

坐下来.我知道这是巧妙的,但不需要起立鼓掌.

现在,我的问题是 - 有没有办法传递参数?以便

make run asdf --> ./prog asdf
make run the dog kicked the cat --> ./prog the dog kicked the cat
Run Code Online (Sandbox Code Playgroud)

谢谢!

makefile

328
推荐指数
10
解决办法
19万
查看次数

Bash函数可以找到最新的文件匹配模式

在Bash中,我想创建一个函数,该函数返回与特定模式匹配的最新文件的文件名.例如,我有一个文件目录,如:

Directory/
   a1.1_5_1
   a1.2_1_4
   b2.1_0
   b2.2_3_4
   b2.3_2_0
Run Code Online (Sandbox Code Playgroud)

我想要以'b2'开头的最新文件.我怎么在bash中这样做?我需要在我的~/.bash_profile脚本中有这个.

linux bash

123
推荐指数
6
解决办法
9万
查看次数

Shell - 如何查找某些命令的目录?

我知道当你在shell上时,唯一可以使用的命令是可以在PATH上设置的某些目录中找到的命令.即使我不知道如何查看我的PATH变量上的dirs(这是另一个可以回答的好问题),我想知道的是:

我来讨论并写道:

$ lshw
Run Code Online (Sandbox Code Playgroud)

我想知道shell上的命令可以告诉我这个命令的位置.换句话说,这个"可执行文件"位于何处?

就像是:

$ location lshw
/usr/bin
Run Code Online (Sandbox Code Playgroud)

任何人?

linux shell command-line

118
推荐指数
4
解决办法
9万
查看次数

file.delete()返回false,即使file.exists(),file.canRead(),file.canWrite(),file.canExecute()都返回true

我正在尝试删除一个文件,在写完文件后,用FileOutputStream.这是我用来编写的代码:

private void writeContent(File file, String fileContent) {
    FileOutputStream to;
    try {
        to = new FileOutputStream(file);
        to.write(fileContent.getBytes());
        to.flush();
        to.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

如图所示,我刷新并关闭流,但是当我尝试删除时,file.delete()返回false.

我删除前检查,看看是否该文件存在,并且:file.exists(),file.canRead(),file.canWrite(),file.canExecute()所有返回true.在调用这些方法后,我尝试file.delete()返回false.

有什么我做错了吗?

java file fileoutputstream

87
推荐指数
4
解决办法
17万
查看次数

反引号对python解释器意味着什么:`num`

我正在玩列表推导,我在另一个网站上看到了这个小片段:

return ''.join([`num` for num in xrange(loop_count)])
Run Code Online (Sandbox Code Playgroud)

我花了几分钟试图复制这个函数(通过输入),然后才意识到`num`它正在破坏它.

在这些字符中包含语句的内容是什么?从我所看到的它相当于str(num).但是当我计时:

return ''.join([str(num) for num in xrange(10000000)])
Run Code Online (Sandbox Code Playgroud)

它需要4.09s而:

return ''.join([`num` for num in xrange(10000000)])
Run Code Online (Sandbox Code Playgroud)

需要2.43秒.

两者都给出了相同的结果,但其中一个慢得多.这里发生了什么?

编辑:奇怪... repr()给出稍微慢一点的结果`num`.2.99s vs 2.43s.使用Python 2.6(尚未尝试过3.0).

python list-comprehension

81
推荐指数
2
解决办法
3万
查看次数

未定义参考yywrap

我有一个简单的"语言",我正在使用Flex(词法分析器),它是这样的:

/* Just like UNIX wc */
%{
int chars = 0;
int words = 0;
int lines = 0;
%}

%%
[a-zA-Z]+ { words++; chars += strlen(yytext); }
\n        { chars++; lines++; }
.         { chars++; }
%%

int main()
{
    yylex();
    printf("%8d%8d%8d\n", lines, words, chars);
}
Run Code Online (Sandbox Code Playgroud)

我跑了一个flex count.l,一切顺利没有错误或警告,然后当我尝试做一个cc lex.yy.c我得到这个错误:

ubuntu @ eeepc:〜/ Desktop $ cc lex.yy.c
/tmp/ccwwkhvq.o:在函数yylex': lex.yy.c:(.text+0x402): undefined reference toyywrap'/
tmp/ccwwkhvq.o中:在函数input': lex.yy.c:(.text+0xe25): undefined reference toyywrap中'
collect2:ld返回1退出状态

怎么了?

flex-lexer

77
推荐指数
3
解决办法
6万
查看次数

脚本执行后避免gnome-terminal关闭?

我创建了一个打开几个gnome终端的bash脚本,通过ssh连接到教室计算机并运行脚本.

如何在脚本完成后避免gnome-terminal关闭?请注意,我还希望能够在终端中输入更多命令.

这是我的代码示例:

gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
Run Code Online (Sandbox Code Playgroud)

linux ssh bash shell

61
推荐指数
5
解决办法
6万
查看次数

字符串输入到flex lexer

我想使用flex/bison解析器创建一个read-eval-print循环.麻烦的是,flex生成的词法分析器需要输入FILE*类型,我希望它是char*.反正有没有这样做?

一个建议是创建一个管道,将其提供给字符串并打开文件描述符并发送给词法分析器.这很简单,但感觉很复杂,而且与平台无关.有没有更好的办法?

c yacc lex bison flex-lexer

52
推荐指数
5
解决办法
3万
查看次数