特殊文字を含む文字列(たとえば、HG@eg3,l'{TT\"C!
他のコマンド(termuxクリップボードセット)とread
手順。一時変数(たとえば)を作成し、それを別のコマンド(たとえば)に渡すようにread
設計されているようです。read temp
termux-clipboard-set $temp
パイプを使用してこれを行うより高速な方法があるかどうか疑問に思います。たとえば、次のようになりますread | termux-clipboard-set
。
更新:申し訳ありません。 bash(termux)で実行されるものを探していることに言及するのを忘れました。
答え1
の場合、bash
プログラムread
ではありません。read
内蔵されています。単純化した後、入力を読み込みread
変数stdin
に割り当てます。組み込みread
関数は出力を生成しないため、stdout
パイプを試してもstdout
結果は生成されません。
問題は理由です。man
ページ表示によると、
使用法
termux-clipboard-set [text]
標準入力またはコマンドライン引数からテキストを読み込みます。
でテキストを読むと、stdin
何かを前に置くのはなぜですか?もちろんできますが、ちょうどcat | termux-clipboard-set
やっtermux-clipboard-set
てください。
答え2
choオプションはzsh
デフォルトでサポートされています。read
-e
e
termux-clipboard-set "$(IFS= read -re)"
システムにまだline
コマンドがあり(まだ1つしかありませんが、util-linux
最近は一般的には含まれていません)、POSIXに似たシェルを使用している場合:
termux-clipboard-set "$(line)"
このline
コマンドは、次のようにsh関数で作成できます。
line() (
IFS= read -r line; ret=$?
printf '%s\n' "$line"
exit "$ret"
)
head -n 1
端末から読まないときを除いて、同様の操作を行います。ほとんどの実装では、1行だけ出力しても入力から1行以上を読み取ることができます。read
そしてそうでないことが保証されます(ただし、オプションを使用する必要がありline
ますが)。-r
read
端末からの入力で、
termux-clipboard-set "$(head -n1)"
しかし、動作するはずです。ほとんどのhead
実装はまだ使用されていない(しかしより短い)バージョンをサポートしていますhead -1
。
tcshの場合は次のようになります。
termux-clipboard-set $<:q
1 また、端末装置からチャンクとして読み取られますが、モードの端末装置read()
はicanon
1行以上を返しません。