この質問は私に関連しています。前の質問。
これは次の出力ですtree
。
[xyz@localhost Semester1]$ tree
.
├── Eng
│ ├── credits
│ ├── links
│ └── notes
├── IT
│ ├── credits
│ ├── links
│ └── notes
├── IT_workshop
│ ├── credits
│ ├── links
│ └── notes
├── LA
│ ├── credits
│ ├── links
│ └── notes
├── OS
│ ├── credits
│ ├── links
│ └── notes
├── OS_lab
│ ├── credits
│ ├── links
│ └── notes
├── Psy
│ ├── credits
│ ├── links
│ └── notes
├── Python
│ ├── credits
│ ├── links
│ └── notes
└── Python_lab
├── credits
├── links
└── notes
9 directories, 27 files
さて、そのフォルダのクレジットファイル内の各コースで使用されているクレジットの数について言及したいと思いますcat
。
たとえば、コースごとのクレジット数は次のとおりです。
コース名 | 生産スタッフ |
---|---|
インゲ | 2 |
ロサンゼルス | サム |
Python | サム |
オペレーティングシステム | サム |
それ | サム |
IT_ワークショップ | 1 |
Python研究室 | 1 |
オペレーティングシステム研究室 | 1 |
心理学 | 2 |
Eng/credits にクレジットの詳細を追加するには、次のコマンドを実行する必要があります。
cat >> Eng/credits
クレジット数(例:2)を入力し、Ctrl+を押しますD。
残りの8つのファイルに対しても同じ手順を実行する必要があります。これは面倒な作業のようです。一度にこれをすべて行う方法はありますかcat
?
Bashを知っている何人かの友達と話をしましたが、私の場合はecho
orを使う方が良いと思いましたprintf
。なぜこれが起こるのですか?
私はこれをしようとしています:
- Eng/creditsファイルに数字2を記録したいと思います。
- LA /クレジットファイルに数字3を記録したいです。
- Python / creditsファイルに数字3を書きたいです。
- OS/クレジットファイルに数字3を記録したいです。
- IT /クレジットファイルに数字3を記録したいです。
- IT_workshop/creditsファイルに数字1を書きたいです。
- Python_lab/creditsファイルに数字1を書きたいです。
- OS_lab/creditsファイルに数字1を書きたいです。
- Psy / creditsファイルに数字2を書きたいです。
echo {2,3,3,3,3,1,1,1,2} >> {Eng/credits,LA/credits,Python/credits,OS/credits,IT/credits,IT_workshop/credits,Python_lab/credits,OS_lab/credits,Psy/credits}
しかし、期待どおりに動作しません。
bash: {Eng/credits,LA/credits,Python/credits,OS/credits,IT/credits,IT_workshop/credits,Python_lab/credits,OS_lab/credits,Psy/credits}: ambiguous redirect
ベストアンサー1
Catはファイル全体を出力するために使用されます。オペランド(オプションではない引数)はファイルです。これにより、cat >> foo
stdoutファイルをfoo
。
echoとprintfはすぐにデータを取得します。
echo 2 >> foo
...ファイルに2を入れますfoo
。
Printf は、オブジェクトに書式を追加、標準化し、不明なデータに直面した場合に、潜在的により安全な方法を提供します。