コマンドラインからディレクトリに作成されたファイルをリダイレクトする


0

スクリプト自体変更せずに、コマンドラインから直接、作成したファイルを.shスクリプトから特定のディレクトリにリダイレクトする方法があるかどうか疑問に思っていました。

まあ言ってみれば:

現在のディレクトリにファイルを作成するスクリプトprove.shがあります。

cat prove.sh


#! /bin/bash

echo "try 1" > try.1.txt

echo "try 2" > try.2.txt

そして私はそれらの作成したファイルをリダイレクトしたいと思いません、現在のディレクトリではなく、別のディレクトリに(さんが言わせて〜/書類/ /証明)ストレートから私:

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

スクリプト自体変更せずに

可能だと思いますか?

誰にも手がかりがありますか?

EDITED:具体的には、私は何をする必要があることは、サーバ上で動作するプログラムの出力をリダイレクトすることであり、それは内の指定したディレクトリ内の各種ファイル(何も標準出力ません)を作成します--out別のコンピュータに、フィールドを直接せずに(プログラムが実行されている元のサーバーに何かを書き込む)。

このサーバーへのアクセスをホストしているだけなので、インストールもsudoもできません。2番目のサーバーのポートをリッスンし、出力をnectatのこのポートにリダイレクトすることは、プログラムを実行するサーバーのファイアウォールが変更できないために機能しませんでした。

アイデアは?


--outフィールドで指定されたディレクトリで何を意味しますか?追加した「編集済み」ビットは、元の質問をかなり変更します。2つを組み合わせて、単一の統一質問として読むことができますか?
クサラナンダ

回答:


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/


Kusalanandaに感謝しますが、前にスクリプトを呼び出してリダイレクトする方法があるかどうか疑問に思っていました(SSHでパイプする必要があるため、CDの前にスクリプトを呼び出す必要があるため)
cccnrc

@ ccc.nrc cd同じssh呼び出しでa とスクリプトの両方を実行することを妨げるものはまったくありません。ご使用の要件で質問を更新してください。
クサラナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.