我需要编写一个脚本,用不同的参数启动我的程序,但我是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我知道那里有类似的问题,但我没有发现创建我的日志文件名称.
我有一个~23000行的SQL转储包含几个数据库的数据.我需要提取此文件的某个部分(即单个数据库的数据)并将其放在一个新文件中.我知道我想要的数据的起始行和结束行号.
有没有人知道一个Unix命令(或一系列命令)从第16224和16482行之间的文件中提取所有行,然后将它们重定向到一个新文件?
我使用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)
谢谢!
在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
脚本中有这个.
我知道当你在shell上时,唯一可以使用的命令是可以在PATH上设置的某些目录中找到的命令.即使我不知道如何查看我的PATH变量上的dirs(这是另一个可以回答的好问题),我想知道的是:
我来讨论并写道:
$ lshw
Run Code Online (Sandbox Code Playgroud)
我想知道shell上的命令可以告诉我这个命令的位置.换句话说,这个"可执行文件"位于何处?
就像是:
$ location lshw
/usr/bin
Run Code Online (Sandbox Code Playgroud)
任何人?
我正在尝试删除一个文件,在写完文件后,用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.
有什么我做错了吗?
我正在玩列表推导,我在另一个网站上看到了这个小片段:
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).
我有一个简单的"语言",我正在使用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 to
yywrap'/
tmp/ccwwkhvq.o中:在函数input': lex.yy.c:(.text+0xe25): undefined reference to
yywrap中'
collect2:ld返回1退出状态
怎么了?
我创建了一个打开几个gnome终端的bash脚本,通过ssh连接到教室计算机并运行脚本.
如何在脚本完成后避免gnome-terminal关闭?请注意,我还希望能够在终端中输入更多命令.
这是我的代码示例:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
Run Code Online (Sandbox Code Playgroud) 我想使用flex/bison解析器创建一个read-eval-print循环.麻烦的是,flex生成的词法分析器需要输入FILE*类型,我希望它是char*.反正有没有这样做?
一个建议是创建一个管道,将其提供给字符串并打开文件描述符并发送给词法分析器.这很简单,但感觉很复杂,而且与平台无关.有没有更好的办法?