如何在不同目录中运行文件

Car*_*onp 11 command-line

我想在大约四个子目录下的不同文件夹中执行一个文件。

例如:

我的pwd可能是/home/directoryA。但是,我想执行的文件可能在directoryD. 目前,如果我想执行该文件,我需要转到cd /home/directoryA/directoryB/directoryC/directoryD/然后执行该文件。或者我可能做了类似的事情src /directoryA/directoryB/directoryC/directoryD/somefile

  1. 是否可以在不实际位于文件所在目录的情况下执行文件?

  2. somefile没有不进入目录就执行文件的快捷方式?

Win*_*nix 9

不,您不需要使用:

cd home/directoryA/directoryB/directoryC/DirectoryD
./somefile 
Run Code Online (Sandbox Code Playgroud)

您可以通过为其路径添加前缀来简单地运行命令:

/home/directoryA/directoryB/directoryC/DirectoryD/somefile
Run Code Online (Sandbox Code Playgroud)

因为你已经在/home/directoryA你可以使用当前目录快捷方式.并像这样运行命令:

./directoryB/directoryC/DirectoryD/somefile
Run Code Online (Sandbox Code Playgroud)

我注意到 OP 通过其他答案下的评论扩大了范围。以下是一些附加信息:

  • 要找出somefile位于何处,请使用:locate somefile
  • 如果somefile是今天添加的,您需要先通过运行更新定位数据库sudo updatedb
  • 当有多个版本的somefile设在PATH,你可以找出哪一个被执行第一次使用which somefile
  • 如果要运行somefile而不在前面指定目录名,请将其放在路径中。要检查路径,请使用echo $PATH. 要放置的常见路径位置somefile/usr/local/bin(如果它使用 sudo 权限)和/home/your_user_name/bin(您可能必须先创建目录)。
  • 您也可以添加/home/directoryA/directoryB/directoryC/DirectoryD/到您的路径中,但这非常不寻常。但是,somefile无论您在哪个目录中,您都可以简单地键入,它就会运行。
  • 当然somefile必须是您使用以下命令设置的可执行文件:chmod a+x /home/directoryA/directoryB/directoryC/DirectoryD/somefile


K7A*_*AAY 3

当然!如果某个文件被标记为可执行文件,您可以使用以下命令运行它

~/directoryA/directoryB/directoryC/DirectoryD/somefile
Run Code Online (Sandbox Code Playgroud)

想知道某个文件是否可执行?进入其目录并运行

find . -maxdepth 1 -perm -111 -type f
Run Code Online (Sandbox Code Playgroud)

查看该目录中的所有可执行文件。

  • 如果你想知道它是否可执行,为什么不运行 `ls -l /directoryA/directoryB/directoryC/DirectoryD/somefile` ? (2认同)