リダイレクトを理解するのに苦労しています。 exec <>をLinuxコマンドとして使用する方法とその意味は何ですか?たとえば、説明してもらえますか?
答え1
リダイレクト<>
演算子は、読み取りと書き込みのために右側の単語で指定されたファイルを開きます。左側のファイル記述子番号(この番号が省略されている場合、ほとんどのシェルでは0)がファイルに関連付けられます。
例:
$ echo Hello >file
Hello
ファイルに文字列を書き、その後に改行文字が続きます。
$ { read -r message <&3; printf 'Got "%s"\n' "$message"; echo Good bye >&3; } 3<>file
Got "Hello"
これにより、ファイル記述子 3 で読み書きするファイルが開きます。ファイル記述子3から文字列を読み取り、端末に印刷します。その後、同じファイル記述子に新しい文字列が書き込まれます。
$ cat file
Hello
Good bye
ファイルには、前のコマンドで作成した追加の文字列が含まれます。文字列は、Hello
ファイルへの書き込み時にファイルポインタがある場所なので、改行文字の後に挿入されます。後でファイルにさらにデータがある場合、Hello
文字Good bye
列は一部のデータを上書きします。
答え2
理解しようとしますcat
。
cat
通常どおり使用できます。
cat > somefile
control+d
これでいくつかの入力を書くことができ、入力が完了した後リダイレクト>
オペレーターと共に一部のファイル。
今試してください:
cat <> somefile
cat
前と同じことを行います。
しかし、入力はありません一部のファイル。
今試してください:
cat <(echo "hello world")> somefile
今少し入力があるでしょう。一部のファイルリダイレクト演算子を広く活用してください。