とバックティックを使用して、ファイルの内容をコマンドに貼り付けることができますcat
。
ls `cat filenames`
逆に、文字列を(一時)ファイル名に変換する方法はありますか?
gcc -o cpuburn `uncat "main(){while(1);}"`.c
答え1
gccの標準入力を介してソースコードを渡すことができます。ファイル名が指定されていないため、出力言語が何であるかを知らせるように選択するgcc
必要があります。-x
合格できます。ここにある文字列(シングル回線に最も便利)ここのドキュメントまたはパイプ。
gcc -o cpuburn -x c - <<<'main(){while(1);}'
コマンドラインにファイル名を入力する必要がある場合は、次のものを使用できます。プロセスの交換コンテンツを作成します。ファイル名を制御することはできません(に似ています/dev/fd/42
)。
gcc -o cpuburn -x c <(echo 'main(){while(1);}')
一時ファイルの名前を本当に制御する必要がある場合は、一時ファイルを手動で作成して削除するより洗練された方法が必要です。
src=$(mktemp XXXXXXXXXX.c)
trap 'rm "$src"' EXIT INT TERM HUP
echo 'main(){while(1);}' >"$src"
gcc -o cpuburn "$src"
(この回答では、シェルがbash、zsh、またはksh93であると仮定します。)