2016-11-01 3 views
-4

端末のコマンドを使用して行う必要のあるクラスの割り当てを行う。ホームディレクトリにシェルファイル(temp1.sh)が作成され、フォルダ(randomFolder)にシェルファイル(temp2.sh)が作成されています。 temp2.shを実行すると、文字の量をtemp1.shに表示する必要があります。これを行うにはpipeコマンドを使用する必要があります。端末でpipeコマンドを使用するときの助けが必要です(Linux /シェルファイル)

私はホームディレクトリにディレクトリを変更し、ファイルtemp1.shを開いて、wc -cコマンドを使用して文字を表示する必要があるとわかります。私はこのタスクを実行するためにさまざまな方法を試してきましたが、何とかそれを動作させることはできません。どんな助けもありがとう。パイプを使用しなければ、それを動作させることができますが、パイプを使用している間はこのコマンドラインを正しく書き出すことができません。私がこれまで行ってきた何

cd ~ 
touch temp1.sh 
chmod 755 temp1.sh 
echo 'This file has other commands that are not relevant and work' >> temp1.sh 
mkdir randomFolder 
cd randomFolder 
touch temp2.sh 
chmod 755 temp2.sh 
echo cd ~ | wc -c temp1.sh >> temp2.sh 

この最後の行は、私はそれを実行した後にそのようなファイル「temp1.sh」がない私に語りました。家にリダイレクトしてwc -c temp1.shと入力すると、希望の出力が得られます。 temp2.shを実行すると、この出力が発生します。パイプコマンドを使用せずに

例:私はtemp2.shを実行したときに

echo wc -c ~/temp1.sh >> temp2.sh 

これは私に所望の出力を提供します。しかし、私はパイプコマンドを使用してこれを達成する必要があります。

+2

あなたの最善の努力を示し、あなたが得る出力してください:あなたのPATHが設定されている方法によって異なり、いくつかの(?する)のにあなたは、これらのいずれかを使用する場合があります。あなたはパイプラインでどんなコマンドを使用していますか?あなたは 'sh -x temp2.​​sh'から何を得ますか?それは間違っていることを解決するのに役立ちますか? –

+0

私は多分20の異なる方法を試したので、私はどれが自分の最善の努力であるかわからない。エコーCD〜/ temp1.shを試しました。 wc -c >> temp2.​​sh – ZenMeng

+1

のみ20?あなたは非常に創造的ではありません...。 :)。あなたの質問に情報としてあなたがしているものに適度に近いと思われるものを追加してください。あなたは 'temp2.​​sh'を書くスクリプトを書こうとしていますので、' temp1.sh'の文字を数えればそれを実行できますか? 'エコー'とは何ですか? '' temp2.​​sh'のようなリダイレクションはなぜですか?ターミナルプロンプトで何を入力するかを考えてください。これらのコマンドを 'temp2.​​sh'ファイルに書き込み、 ' sh temp2.​​sh'を実行します。 –

答えて

0

あなたのコードは動作しています。最初の部分は大丈夫です:

cd ~ 
touch temp1.sh 
chmod 755 temp1.sh 
echo 'This file has other commands that are not relevant and work' >> temp1.sh 
mkdir randomFolder 
cd randomFolder 
touch temp2.sh 
chmod 755 temp2.sh 

すべてがうまくいくはずです。あなたの問題は、この部分です:

echo cd ~ | wc -c temp1.sh >> temp2.sh 

あなたはwcに、いくつかのコマンドとパイプの出力を実行し、何かからcd ~を分離し、そしてtemp2.shに保存されている全体の多くを取得する必要があります。ここで重要なポイントはcdコマンドとwcコマンドのために別々のラインを使用している

echo "cd $HOME" > temp2.sh 
echo "cat temp1.sh | wc -c" >> temp2.sh 

:それは次のようなものである可能性があります。最初のコマンドに>を使用すると、失敗した前回の試みに由来する迷惑ゴミがないことが保証されます(temp2.sh)。

echo "cd; cat temp1.sh | wc -c" > temp2.sh 
echo "cd ~; while read -r line; do echo "$line"; done < temp1.sh | wc -c" > temp2.sh 

をそして、最後に、あなたはtemp2.shを実行する必要があります。あなたには、複数の方法で同じ結果を得ることができます。

./temp2.sh 
temp2.sh 
sh temp2.sh 
sh -x temp2.sh 
$HOME/randomFolder/temp2.sh 
~/randomFolder/temp2.sh 
関連する問題