从命令行重定向目录中创建的文件

从命令行重定向目录中创建的文件

我想知道是否有任何方法可以将创建的文件从 .sh 脚本重定向到特定目录没有直接从命令行修改脚本本身。

比方说:

我有一个脚本证明.sh在当前目录中创建一些文件:

cat prove.sh


#! /bin/bash

echo "try 1" > try.1.txt

echo "try 2" > try.2.txt

我想重定向那些创建的文件不是在当前目录中,但在另一个目录中(比方说~/Documents/prove/),直接来自我的:

sh prove.sh <...something to redirect files to directory...>

没有修改脚本本身。

你觉得可能吗?

有人有线索吗?

编辑:更具体地说,我需要做的是重定向在服务器上运行的程序的输出,并在指定目录中创建各种文件(不是标准输出)- 出去字段,到另一台计算机直接地(无需在程序运行的原始服务器中编写任何内容)。

我只有该服务器的主机访问权限,因此无法安装或 sudo 任何内容。由于程序运行的服务器中的防火墙我无法更改,因此侦听第二个服务器中的端口并将输出重定向到 nectat 中的此端口不起作用。

有什么想法吗?

答案1

假设脚本看起来与您所显示的完全一样:

#! /bin/bash
echo "try 1" > try.1.txt
echo "try 2" > try.2.txt

无论当前目录是什么,文件都会在当前目录中创建。

因此,要在 中创建文件~/Documents/prove/,您可以执行以下操作

( cd ~/Documents/prove/ && bash /some/location/prove.sh )

其中/some/location/prove.sh是脚本本身的路径名。

这将cd首先到达给定的目录,如果进展顺利(该目录存在并且您有权访问该目录),bash则将调用该脚本来运行该脚本,并且文件将在那里创建,假设您有权在该目录中创建文件目录。

我将命令放在( ... )子 shell 中,这样就cd不会影响原始工作目录。这意味着您应该发现自己位于执行该行后开始的同一目录中。

如果没有( ... ),您将把目录更改为~/Documents/prove/

相关内容