[JM:00859] GNU_findutils/xargs.1 への指摘

アーカイブの一覧に戻る

Akihiro MOTOKI amoto****@gmail*****
2013年 4月 2日 (火) 13:22:36 JST


元木です。

2013年4月1日 17:17 長南洋一 <cyoic****@maple*****>:

> 長南です。
>
> 元木さんのメールより [JM:00851]
> >
> > この部分は、つい最近、私も読んで分かりにくいなあ、というより頭に入って
> > 来なくて、英語の方を読んでしまいました。分かりにくくなっているのは、
> > 引き数が initial-arguments の方と xargs のコマンドの引き数の両方に
> > 登場するからだと思います。
>
> 今日読み直してみたのですが、わたしが戸惑いを感じたのは、前半ではなく、
> むしろ「なお、空白は ...」以下の後半でした。「空白って何の空白だろう」
> と。こちらは、どうでしたか。


この時は、 xargs を使う方がメインだったので、最初の文章しか見ませんでした。
後半の部分もよく分からなかったのは事実です。
その場は、本来やりたいことが実現できたので、終わってしまいました。

今見てみました。

Also, unquoted blanks do not terminate input items;
instead the separator is the newline character.

なお、空白は、クォートされていない場合も、入力される項目の区切りにはならない。
区切り記号は改行文字だけになるのだ。

という部分ですね。

ここで言いたいのは、xargs -I XXXXX some command -o XXXXX foo bar みたいにした場合に、
標準入力から受け取った項目にクォートされていない空白が含まれていた場合には、
そのまま展開される、つまり入力が "aaa bbb" だと some command -o aaa bbb foo bar という
コマンドラインに展開される、ということの注意喚起だと思います。

訳はなかなか難しいですが、意訳をすると、

   入力項目の区切りは改行文字であり、クォートされていない空白があったとしても項目は
   そこで終わりにはならない点に注意すること。

といった感じでしょうか。



>
> ついでに。雑談に近いのですが。
>
> > groff って行の長さに前提をおいているのでしょうか。
> > 無限長を扱えることになっていて、動かないなら groff のバグのような気もします。
> > それによって、 manpage が表示されなくなっては元も子もないので、ガードを
> > かけるのは構わないと思いますが。
>
> 昔の入門書などには、「一行は何字くらいに」と書いてあったような気がします。
> どんな根拠があったのかは知りませんが。
>

端末の幅などを意識しての話だと思います。

あと、プログラムを書く際には、1行が長すぎるのは、縦に長すぎる関数と同じで、
理解しにくいコードにつながるので、1行の長さの話が出て来る面もあると思います。


> groff にしろ texinfo にしろ (Tex は知りませんが)、ホワイトスペースを
> 目安にして、行の整形をやっているようです。ですから、改行も空白もない
> 日本語のテキストの整形は、苦手なんじゃないかという気がするのです。
>

日本語のテキストでも技術文書の場合は、英語や数字が混じっていることが多いので、
あまり問題になることはないと思います。(JM もそうですが)自分の場合は、日本語と英数字の間に
空白を一つ入れるので、それでうまく行っているのかもしれません。
-- 
Akihiro MOTOKI <amoto****@gmail*****>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
ダウンロード 



linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る