我们试图从Java程序调用Linux命令history
。我们能够从Java调用相当多的命令,包括date
和ls-l
而没有任何问题。但是,history
java.io.ioException
失败。示例源代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class OSCommand {
public static void main(String[] args) throws Exception {
dumpCommandOutput("Date", new String[] {"date"});
// SUCCEEDS
dumpCommandOutput("Long Directory Listing", new String[] {"ls", "-l"});
// SUCCEEDS
dumpCommandOutput("Command History", new String[] {"history"});
// FAILS
}
protected static void dumpCommandOutput(String label, String[] cmdWithArgs) throws IOException {
System.out.println("Attempting to execute: " + label);
Process p = Runtime.getRuntime().exec(cmdWithArgs);
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str;
while((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
System.out.println("\n\n");
}
}
引发的异常
Exception in thread "main" java.io.IOException: Cannot run program "history": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:621)
at java.lang.Runtime.exec(Runtime.java:486)
at OSCommand.dumpCommandOutput(OSCommand.java:16)
at OSCommand.main(OSCommand.java:10)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 4 more
命令“history”不是linux发行版中已安装的程序。相反,它是您正在使用的shell中提供的内置命令。因此,java不需要使用runtime.getruntime().exec()
来执行。检查对date
、ls
和history
的参数使用whice
命令时得到的结果:
linryzen ~ # echo $0
bash
linryzen ~ # which ls
/bin/ls
linryzen ~ # which date
/bin/date
linryzen ~ # which history
which: no history in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/opt/bin:/usr/lib/llvm/12/bin:/usr/lib/llvm/11/bin:
/usr/lib/llvm/9/bin)
linryzen ~ #
我需要类似于bash历史的命令历史记录。我需要在Android手机中创建一个历史文件。 有没有这样的功能 如果没有,任何人都可以将我指向中的代码,在那里它从桌面接收命令? 我可以实现同样的功能。 我尝试在Android上启用外壳历史记录,但它不适用于调用的命令。
在gdb中,缺省是不保存历史命令的。你可以通过如下命令来设置成保存历史命令: (gdb) set history save on 但是,历史命令是缺省保存在了当前目录下的.gdb_history文件中。可以通过如下命令来设置要保存的文件名和路径: (gdb) set history filename fname 现在,我们把这两个命令放到$HOME/.gdbinit文件中: set histo
10.3 命令别名与历史命令 我们知道在早期的 DOS 年代,清除屏幕上的信息可以使用 cls 来清除,但是在 Linux 里面, 我们则是使用 clear 来清除画面的。那么可否让 cls 等于 clear 呢?可以啊!用啥方法? link file 还是什么的?别急!下面我们介绍不用 link file 的命令别名来达成。那么什么又是历史命令? 曾经做过的举动我们可以将他记录下来喔!那就是历史
问题内容: 有没有一种方法可以防止将命令添加到bash shell的命令历史记录中? 我希望能够阻止将某些“危险”命令添加到历史记录中,例如“ ”,这样,通过按向上箭头以到达先前的命令,我将无法使用该命令。这样,不可能意外地重复这些命令之一。 我问的原因是,我经常使用向上箭头来访问Shell历史记录中的先前命令,并且经常使自己陷入按Enter 键的地步,因为我 认为这 是正确的命令,才意识到我将要
读取播放历史信息 调用地址 http://api.bilibili.cn/history 返回 返回值字段 字段类型 字段说明 results int 返回的记录总数目 list object 返回数据 返回字段 “list” 子项 返回值字段 字段类型 字段说明 aid int 视频编号 typeid int 视频分类ID typename string 视频分类名称 title string
历史记录 控制台维护 Elasticsearch 成功执行的最后500个请求列表。点击窗口右上角的时钟图标即可查看历史记录。这个图标会打开历史记录面板,您可以在其中查看历史请求。您也可以在这里选择一个请求,它将被添加到编辑器中当前光标所在的位置。 图 9. 历史记录面板