生成されたファイルを.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...>
いいえスクリプト自体を変更します。
それは可能だと思いますか?
誰に手がかりがありますか?
編集:より具体的には、私がすべきことは、サーバー上で実行されているプログラムの出力をリダイレクトし、指定されたディレクトリ(stdoutではない)にさまざまなファイルを作成することです。- 出るフィールド、他のコンピュータへまっすぐ(プログラムが実行されているソースサーバーには何も作成する必要はありません。)
そのサーバーへのホストアクセス権しかないため、何もインストールまたはsudoできません。 2番目のサーバーのポートをリッスンし、出力を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
実行するためにスクリプトが呼び出され、そのディレクトリに対する権限があると仮定すると、ファイルがそこに作成されます。ファイルディレクトリを作成します。
元の作業ディレクトリに影響を与えないように、コマンドを( ... )
サブシェルに入れました。cd
これは、その行を実行した後に開始したのと同じディレクトリになければならないことを意味します。
そうでない場合は、( ... )
ディレクトリをに変更します~/Documents/prove/
。