如何用SHELL命令运行一个文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用SHELL命令运行一个文件相关的知识,希望对你有一定的参考价值。

1、Shell是命令解释器,所执行的文件有两种,一种是基于ELF文件格式的可执行文件,一种是基于Shell脚本格式的脚本文件。

2、不管是可执行文件还是shell脚本,如果存在于PATH变量所指明的路径中,shell会自动寻找相应的可执行文件,用户只需要输入可执行文件名或者脚本名即可执行。

3、如果可执行文件或者Shell脚本的存放位置不在PATH变量所指明的路径中,则需要通过".”来执行,比如下面的C语言写的hello world程序,需要输入./t才可以被shell运行。

参考技术A

方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

方法二:以绝对路径的方式去执行bash shell脚本:

参考技术B 如果文件可执行的话
直接./filename就可以运行文件了

如何用参数执行shell命令?

我试图用C#中的参数执行shell命令,并抛出“系统找不到指定的文件”。

我试过了:

p.StartInfo.FileName = Directory.GetCurrentDirectory() + "\timesync\NistClock.exe sync";

路径是正确的100%NistClock.exe在没有参数“sync”的情况下运行时执行

答案

你应该改变你的代码:

p.StartupInfo.FileName = Path.Combine(Directory.GetCurrentDirectory(), "timesync\NistClock.exe");
p.StartupInfo.Arguments = "sync";
另一答案
string path = Directory.GetCurrentDirectory() + "\timesync\NistClock.exe";                
string args = "sync";
ProcessStartInfo p = new ProcessStartInfo(path, args);
Process process = Process.Start(p);
另一答案

使用Arguments属性。

p.StartInfo.FileName = Directory.GetCurrentDirectory() + "\timesync\NistClock.exe";
p.StartInfo.Arguments = "sync";

顺便说一句,小心使用Directory.GetCurrentDirectory()。请注意,如果您在整个应用程序中使用任何文件对话框,则此方法可以返回不同的内容。使用像Assembly.GetExecutingAssembly().Location这样的东西可能是更好的选择,并从那里解析目录。

以上是关于如何用SHELL命令运行一个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用参数执行shell命令?

bash shell脚本,如何用sed 命令打印出匹配行和匹配行的第N行

如何用shell命令打开某个手机app

linux下如何用c语言调用shell命令

ubuntu中SHELL存在select命令吗?存在如何用

一道linux shell面试题:如何用shell命令统计排序网站域名的访问量。