私はobjdumpコマンドを使用して現在のディレクトリに.o拡張子を持つすべてのファイルを分解し、このコマンドの各.oファイル出力を同じベース名を持つ.txtファイルに保存してみました。
たとえば、私のディレクトリに次の3つのファイルがあるとします。
myfirstfile.o someotherfile.o finalfile.o
objdump
私の目標は、3つの新しい追加ファイル(各ファイルには対応する元の.oファイルのコマンド出力が含まれている)を作成することです。
myfirstfile.txt someotherfile.txt finalfile.txt
私が試したことは次のとおりです。ただし、「あいまいなリダイレクト」とのみ表示されます。
objdump -d --no-show-raw-insn *.o > *.txt
答え1
各ファイルに対してコマンドを実行する必要があるため、ループを使用するのが最善です。
シェルを含むzsh
:
for f (./*.o) objdump -d --no-show-raw-insn $f > $f:r.txt
bash
シェルまたは他のPOSIXシェル(含む)を使用するzsh
:
for f in ./*.o; do objdump -d --no-show-raw-insn "$f" > "${f%.o}.txt"; done
*.txt
ファイルが存在しない場合.o
(にはありませんzsh
)という名前の空のファイルが作成されます。
答え2
次のように実行されるmyobjdump.shというファイルを作成するには:
./myobjdump.sh `ls *.o`
スクリプトは次のとおりです。
#!/bin/bash
for ((i=1; i<=$#; i++)); do
objdump -d --no-show-raw-insn $i > `basename $i .o`.txt
done
編集する
#!/bin/bash
for n in $@; do
objdump -d --no-show-raw-insn $n > `basename $n .o`.txt
done