タグ

programmingとUnixに関するAmaiSaetaのブックマーク (2)

  • Big Sky :: 1つの横着から隠しファイルが生まれた瞬間

    この文章は Rob Pike 氏が Google+ に投稿した内容の意訳です。現在は web archive からしか閲覧できません。面白かったので訳してみました。 ショートカットからのレッスン ずっと昔の話。Unixファイルシステムで移動を簡単にする為に . や .. を追加する設計がほぼ完成していた頃。確かではないけれどバージョン2への書き換え中、つまりファイルシステムが階層的になった頃(初期の段階では構造が全く違っていた)に . と .. は入った。ls をタイプするとドット付きのファイルが現れたので、Ken か Dennis のどちらかが簡単なテストプログラムを追加しました。当時はアセンブラでしたが問題のコードは次のようなものと同等でした。 if (name[0] == '.') continue; この1文は、来あるべき以下の1文よりも多少短かった。 if (strcmp(na

    Big Sky :: 1つの横着から隠しファイルが生まれた瞬間
    AmaiSaeta
    AmaiSaeta 2019/04/19
    なんと、dotfileは意図した物じゃなかったのか……
  • 出力先が端末かどうか調べる。 - 技術メモ帳

    g:subtech:id:secondlife さんのところで、 パイプで受け取るとエスケープシーケンスが消去されてるよ!どうやってんだこれ。 というのがあったので、コメント欄に どうやって実現しているのかを書いていた時に、 すでに回答がされているのに気づいて、 俺は何をやっていたんだ、とショックを受けたのでココに書く。 実は、isatty(fd) という関数があり、 指定したファイルディスクリプタが端末かどうか調べる事が出来ます。 つまり、出力先が端末だったとき、エスケープシーケンスを付加し、 端末ではなく、別のプログラムの標準入力に渡されたときは、 エスケープシーケンスを除去しています。 以下は、 標準出力がターミナルだったときのみ "this is terminal" と出力します。 1 #include <stdio.h> 2 #include <unistd.h> 3 4 int

  • 1