🔗 zenn の記事
1 行目に、入力開始のマーカーを入力します。2 行目に、出力開始のマーカーを入力します。
これらは、マーカー以外の役割では行頭に出現しない文字列を選ぶ必要があります。
通常のケースにおいては、1 行目は %
(% 記号とスペース)、2 行目は空行でよいでしょう。
3 行目以降に入出力内容を書きます。マーカーのについての補足はページ下部にあります。
をクリックすると、その行のコマンドがコピーされます。 をクリックすると、一括でコピーされます。特に の部分をクリックすると、コマンドのみが一括でコピーされます。 コピー内容は下のクリップボードにも表示されます。
echo 123 123 echo % %
複数行に渡る場合は、毎回マーカーを書き直す必要はありません。 入力に行継続がない場合は、出力マーカーは空文字列でよいです。
% % echo foo; echo bar foo bar
入力が複数行に渡る場合は、出力マーカーを空文字列以外にする必要があります。
%> %< %> echo foo; \ echo 'bar baz' %< foo bar baz %> cat <<EOS qux EOS %< qux
出力マーカーが入力マーカーの prefix になっている場合は、入力マーカーが優先されます。
特に、入力マーカーを空文字列にすれば、各行に %
を書かなくて済みます。
出力内容は書かずに、入力をコピーしやすくするときに便利です。
echo foo echo bar
出力に %
で始まる行がある場合は、入力マーカーを
%%
や %  
にするとよいでしょう。
%% %% echo '% ' %
それはそうっぽい。ただ、コーナーケースが無限にありそうで自前で構文解析とかはしたくない。
%
と のときは指定なしで書ける(必要なときは別途指定)とかにするのが楽そう。
とはいえ、出力がどこで終わりなのかは構文解析ではどうしようもない。
% yes % echo test$'\n'test | head -$((RANDOM % 10 * 2)) % echo test test % echo test test % echo test test % echo test test % echo test test