Shell glob - ファイルパスargをファイルの内容に置き換える

Shell glob - ファイルパスargをファイルの内容に置き換える

curlコマンドには、--dataオプション値の前に記号が付いたときにファイルの内容を置き換えるオプションがあります。@たとえば、次のようになります。

curl -X POST --data @abc.json hostaddr.com

abc.jsonファイルの内容は投稿リクエストの本文に送信されます。このオプションは、投稿の本文が長い場合や複数行の場合に便利です。

LinuxシェルまたはLinuxシェルでzshellこれをどのように実行しますか?次の文字列をファイルパスとして処理し、その文字列をファイルの内容に置き換えるglob pattern/がありますか?prefix operator

答え1

ほとんどの場合、これは次のとおりです。リダイレクト演算子( <):

$ tr 'a' 'b' /path/to/file  ## fails because `tr` works on streams
tr: extra operand ‘file’
Try 'tr --help' for more information.
$ tr 'a' 'b' < /path/to/file ## works because the file's contents are passed to tr

コマンド置換およびリダイレクト演算子はどちらもPOSIXによって定義されています(上記のコマンド置換リンクを参照)、ほとんどすべてのシェルで使用できます。別の関連ツールはコマンドの置き換え。作成する方法は2つあります。コマンドをバックティック()で囲むか、`command`Orderと書くことができます$(command)

したがって、ファイルの内容を使用するには、次のように書くことができます。

command $(cat /path/to/file)

または

command `cat /path/to/file`

関連情報