xclip
/xsel
は、Ubuntuのシェルに クリップボード出力をパイプする できるユーティリティです。残念ながら、それらはwc
コマンドと組み合わせて失敗するようです。
これを試して。新しいファイルを開き、次のように入力します。
this is a line
行末のEnterキーを押すことなく。
ここで、このテキストをコピーして、次のことを試してください。
$ xsel -o | wc -l
0
出力は0ですが、実際には1である必要があります。ファイルを保存します(myfile.txt
と呼びます)。
今すぐ試してください:
$ cat myfile.txt | wc -l
1
予想通り、出力は1です。
最初のケースで出力が0になるのはなぜですか?
発生している問題は、wc -l
が新しい行をカウントすることです。実際には\n
を入力していないので、実際には新しい行はありません。
wc
man pageからの抜粋
各FILEの改行、ワード、およびバイト数、および複数のFILEが指定されている場合は合計行を印刷します。 FILEがない場合、またはFILEが-の場合は、標準入力を読み取ります。単語は、空白で区切られた長さがゼロではない文字のシーケンスです。
wc
が文字をカウントするように切り替えると(-c
)、実際には問題なく機能し、文字数をカウントできることがわかります。
$ xsel -o | wc -c
14
ファイルに保存すると、ファイルの最後に改行を追加する効果があります。
wc
は、行末文字をカウントします。初めてテキストをマークしたとき、行末文字は含まれていません。ファイルを保存すると、エディターはwc
によってカウントされる行末文字を追加します。