タグ

unixに関するmas-higaのブックマーク (41)

  • CLIツールを作るとき、ユーザー設定ファイルやデータをどこに配置するか - $shibayu36->blog;

    chat-hatenablogをpip installでインストール可能にした - $shibayu36->blog;にてchat-hatenablogをpip installできるようにするとき、ユーザー設定ファイルやデータをどこに配置するかに迷った。このツールでは、環境変数の設定として.envファイルを、ブログデータのインデックスとしてindex.pickleファイルを使っている。 これらのファイルの置き場所について少しだけ調べたので、現状分かったことをメモしておく。 まず選択肢としては二つありそうだった。 ~/.chat-hatenablog/.envと~/.chat-hatenablog/index.pickle 例) ~/.asdf、~/.docker、~/.gemなど XDG Base Directoryの仕様に沿って、~/.config/chat-hatenablog/.en

    CLIツールを作るとき、ユーザー設定ファイルやデータをどこに配置するか - $shibayu36->blog;
    mas-higa
    mas-higa 2023/05/02
    ~/.config はなかったけど ~/.local/share は存在した!
  • A4用紙40枚で1969年から2022年までのUNIXの歴史「Unix History」を一望してみた

    歴史上初めて高水準言語で書かれたOSで、現代OSの始祖とも呼ばれる「UNIX」の50年以上にわたる歴史を時系列で示した「UNIX History」を、コンピュータの歴史を研究するÉric Lévénez氏が公開しています。A4用紙に印刷することも可能とのことで、実際にプリントしてその歴史の長さを感じてみました。 UNIX History https://www.levenez.com/unix/ UNIX HistoryのA4印刷版は、PDFファイルのリンクが上記サイトに置かれています。「A4」のリンクをクリックしてダウンロード。 というわけで、このA4印刷版のPDFファイルを実際にプリンターで印刷してみました。 A4用紙で40枚。 40枚をつなげるため、右端だけ仕上がりサイズに合わせてカット。 セロハンテープでつなげていきます。 40枚すべてを並べて見たところ。A4用紙40枚をつなげると

    A4用紙40枚で1969年から2022年までのUNIXの歴史「Unix History」を一望してみた
    mas-higa
    mas-higa 2022/12/05
    昔印刷したことあるなぁ。10年くらい前に難波のジュンク堂コンピュータ書の壁に貼ってるの見た気がする。
  • シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita

    はじめに bash などのシェルには [ ... ] と [[ ... ]] の二種類の比較方法があります。一つはコマンド、もう一つはシェルの文法なのですが、具体的にはこの二つは一体何が違うのでしょうか? そもそもなぜ似ている機能が二つもあるのでしょうか? この記事は言語設計者の気持ちになって考えることで、その理由を解き明かそうという記事です。 なお、違いについての簡単な説明については「test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 」の記事がよくまとめられていますので紹介します。一通りの違いを素早く知りたい方はこちらを参照してください。 参考 シェルの歴史や種類については「シェルの歴史 総まとめ(種類と系統図)と POSIX の役割」に詳しくまとめています(系統図とか頑張って書いたので見

    シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita
  • 『manがあるコマンドは偉いし、manを付けるべき - Lambdaカクテル』へのコメント

    ブックマークしました ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください Twitterで共有

    『manがあるコマンドは偉いし、manを付けるべき - Lambdaカクテル』へのコメント
    mas-higa
    mas-higa 2022/10/13
    Unix では table を tab と略す慣習があるよね。fstab とか。
  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

    はじめに シェルスクリプトで二重起動防止やロックをする方法を検索すると、いろいろな方法や書き方が見つかりますが、どれを使えばよいのか、当に正しく動くのか、不安になりますよね? ディレクトリ (mkdir) やシンボリックリンク (ln) を使った独自実装の例も見かけますが、エラー発生時や予期せぬ電源断、CTRL+C で止めたときなどでも問題は発生しないのでしょうか? まず、ディレクトリやシンボリックリンクを使った独自実装はしない。これを肝に銘じてください。シェルスクリプトでのロック管理はとても難しく、一般的な排他制御の知識に加えて、シェルスクリプト特有の問題、シグナルやトラップ、サブシェルや子プロセスの問題、さらには特定のシェル固有の仕様やバグなどさまざまな問題に対処する必要があり大変です。独自実装の例では古いロックファイルが残ってしまい、それをいつどのタイミングで片付ければ安全なのか?

    シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
    mas-higa
    mas-higa 2022/09/28
    読めば読むほど mkdir や ln の優位性が感じられる
  • シェルスクリプトを書くのをやめる - blog.8-p.info

    今年から、できるだけシェルスクリプトを書くのをやめようとしている。私が毎日 zsh に打ち込んでいるのも広義のシェルスクリプトだし、自分用の雑なスクリプトを書くことはあるけれど、チームの他の人も将来に使ったり改変したりするようなものは、なるだけ他の言語を使っている。 シェルスクリプトを書くのは難しいし、その難しさは、学ぶに値しないといったら言い過ぎかもしれないけれど、2021年に初心者が取り組むべき問題とは言い難いと思う。 シェルは悪いプログラミング言語である Bash Strict Mode とかを使ってみても、シェルスクリプトには落とし穴が多すぎる。自分で書いたものを自分で使っている分には大丈夫なのだけど、スクリプトがチーム内で使われるようになると、考慮していなかったところ、例えばファイル名に空白文字が含まれるとか、そういうレベルの微妙なところで、ちゃんと書かれていないスクリプトは壊れ

    mas-higa
    mas-higa 2021/09/16
    "このスクリプトはそこまで大袈裟なことをしていたっけ?" Python とか Ruby を使う程の? 適材適所。
  • コマンドラインツールを作るときに参考にしている資料 | SOTA

    コマンドラインツールについて語るときに僕の語ること - YAPC::Asia Tokyo 2014 コマンドラインツールが好きで昔からつくってきた. 今年のYAPCで,そのコマンドラインツールをつくるときにどういうことを意識して作っているのか?どのような流れで開発しているのか?といったことを語る機会をもらえた. 具体的な内容については,是非トークを聴きに来てもらうとして, スライドをつくるにあったって過去に読んだ資料や,よく参考にしている記事を集め直したので,その一部を参考資料としてまとめておく. UNIXという考え方 UNIXという考え方 Mike GancarzによるUNIXの思想や哲学をまとめた.古いが全然色あせてない. コマンドラインツールの作り方を書いたではないが,これらの思想の上で動くツールはこの思想に準拠して作られるべきだと思う.何度も読んで考え方を染み付かせた. 小さい

    mas-higa
    mas-higa 2018/03/12
    UNIX 哲学はカーニハンとプローガーがソフトウェア作法で20年ほど先に書いてるんだけどね。
  • 「新しいLinuxの教科書」をMacで実践する

    新しいLinuxの教科書「新しいLinuxの教科書」はLinuxシステムでよく用いられるキャラクタユーザインタフェース(CUI)のお作法をわかりやすく解説しただ.CUIとは1980年代末まで一般に用いられていたヒューマンインタフェースで,平たく言うとキーボードとスクリーンだけのインタフェースである.よく言う「コマンドライン」とはCUIのことを指す.一方,現在主流のマウスやタッチを使ったインタフェースはグラフィカルユーザインタフェース(GUI)と言う. LinuxシステムはもともとUnixというOSを参考に作られていて,CUIの大部分がかなり忠実なUnixのコピーである.そして,みなさんが使っている OS X もまたUnixだ.こちらはBSDというもともとUnixに似せて作られたUnixではない何かが最終的にUnixのひとつになったOSだ.一言で言うと,Linuxシステムと OS X は非

    「新しいLinuxの教科書」をMacで実践する
    mas-higa
    mas-higa 2016/01/12
    「BSD原理主義者なので」
  • man は長すぎるので「tldr」

    たとえば, curl で JSON を POST したいとき, オプション記述を覚えてないので man. 長すぎて探すのが面倒で結局ぐぐってしまう. ssh でポートフォワードしたいとき, 結局これもぐぐってしまう. TLDR 【略】 =Too long. Didn't read. 長過ぎ。読みませんでした。/長文うざい(と言う人のための要約)。 そんな名前のすばやく調べるコマンドがありますよ. 分かりやすくうざくない長さで説明してくれます. tldr-pages/tldr ちなみに「tldr」で「tldr」は以下.

    man は長すぎるので「tldr」
    mas-higa
    mas-higa 2016/01/04
    tldr がタイプしづらい
  • process-book

    この文書はなんですか? この文書は*nix系のシステムにおけるプロセスやシグナルなどについて説明することを目的に書かれました。「プロセスとかよくわかってないからちゃんと知りたいな」みたいなひとたちが想定読者です。 書いているあいだは gist で管理されていたのですが、ボリュームが大きくなったので github で管理するように変えました。 目次 導入 プロセスの生成 プロセスとファイル入出力 ファイルディスクリプタ preforkサーバーを作ってみよう ゾンビプロセスと孤児プロセス シグナルとkill プロセスグループとフォアグランドプロセス epub と pdf epub化したもの、pdf化したものが release ディレクトリに入っています。thanks to mitukiii & moznion! ライセンス この 作品 は クリエイティブ・コモンズ 表示 - 継承 3.0 非移

  • Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ

    この記事ははてなエンジニアアドベントカレンダー2014の8日目です。 今回は、Go言語でサーバ管理ツール Mackerel のコマンドラインツールmkr を作るときに調べたこと、考えたこと、やったことについて紹介します。(mkr は現時点では開発版での提供になります。) コマンドラインツールについて コマンドラインツールを作るにあたって、@deeeet さんの YAPC Asia 2014 での発表資料が非常に参考になります。 書籍 UNIXという考え方ーその思想と哲学 の内容をベースに、コマンドラインツールはどうあるべきかということが丁寧に説明されています。 上記資料から引用させていただくと、コマンドラインツールにおいて重要なポイントは以下の7つであるとされています。 1つのことに集中している 直感的に使える 他のツールと連携できる 利用を助けてくれる 適切なデフォルト値を持ち設定もでき

    Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ
    mas-higa
    mas-higa 2014/12/09
    最近パイプの中を流れているのはバイト列ではなく JSON らしい
  • パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD

    パイプライン は、最近のソフトウェアエンジニアリングにおいて、非常に便利な(そして驚くほど活用されていない)アーキテクチャパターンです。ソフトウェアでデータの流れを制御するためにパイプとフィルタを用いる考え方は、最初のUNIXシェルが作られた1970年代からあります。もしターミナルエミュレータでパイプ” | ”を使ったことがあるなら、”パイプとフィルタ”を活用できていることになります。以下の例を見てみましょう。 cat /usr/share/dict/words | # Read in the system's dictionary. grep purple | # Find words containing 'purple' awk '{print length($1), $1}' | # Count the letters in each word sort -n | # Sort l

    パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD
    mas-higa
    mas-higa 2014/11/25
    pressure というプロダクトの宣伝。$PIPESTATUS とか mkfifo とかで満足した人がそこまで読んだかどうか。
  • mac ストレージ その他 の圧迫をサクッと解決する方法 - ゆるぶろ

    ストレージを圧迫しまくる「その他」 Macbookを使っている人なら一度は頭を悩ましたことがあるであろうストレージの容量不足。 と、いうよりかは「その他」のよくわからない黄色の帯で圧迫されまくって、突然ストレージに空きがありませんとか言われるわけだからビビるわけで。 幸い先人たちの知恵でネットを検索すれば対処法はゴロゴロ転がっています。 ただ、Mac初心者の僕にとってはどれもが謎でよくわからない、うまくいかないってことが多かったんで これをしておけばしのげる! という方法だけを紹介しようと思います。 解決法紹介の前に、ストレージの詳細を見る方法 デスクトップ上にある左上のappleのロゴをクリックします。 このMacについて、の項目を選択します 詳しい情報を選択 ストレージを選択 この流れで、お使いのストレージの状況を簡単に把握することができます。 それにしても随分圧迫されていますね・・・

    mac ストレージ その他 の圧迫をサクッと解決する方法 - ゆるぶろ
    mas-higa
    mas-higa 2014/07/24
    "通常どおりに使用していても.core(コアダンプファイル)を作りまくっている" いや、死んでるから core 吐いてるんやろ。
  • Rubyでシェルもどきを作る - tmtms のメモ

    Ruby でシェルのようなものを作ってみると、Ruby とシェルやシステムコールの理解ができて、研修の課題とかにいいんじゃないかと10年くらい前に思ってたのを、ふと思い出したので書いてみます。 基 シェルの動作を簡単に説明すると次のような感じです。 プロンプトを出力 標準入力からコマンドラインを読み込む 読み込んだコマンドを実行する コマンドの終了を待つ 1 に戻る これをそのまま Ruby で書いてみます。 while true print '-> ' # プロンプト表示 cmd = gets or break # コマンド入力 cmd.chomp! # 末尾の改行削除 pid = Process.fork do # 子プロセス生成 Process.exec [cmd, cmd] # コマンド実行 end Process.waitall # 子プロセスの終了待ち end Process

    Rubyでシェルもどきを作る - tmtms のメモ
  • そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編)

    ハートビーツ最年長エンジニアの滝澤です。以前、弊社CTOにシニアおっさんエンジニアから若手エンジニアに向けて何か書いてくれと言われた気がしたので、アトミック(atomic)なファイル操作について3編に分けて紹介します。この内容は弊社の社内勉強会で話した内容をまとめ直したものです。 そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編)←今回 そのファイル、安全に作成できていますか?(アトミックなファイル操作:中編) そのファイル、安全にロックできていますか?(アトミックなファイル操作:後編) 今回は「みなさん、安全にファイルの更新ができていますか?」ということについて、考えてみましょう。 あなたはあるサーバ上のファイルの更新を依頼され、もらったファイルをサーバ上でコピーして上書きしました。しばらくして、データに異常が発生したので調べて欲しいと言われました。さて、何が起き

    そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編)
    mas-higa
    mas-higa 2013/10/11
    ファイルは簡単にアトミックな操作ができるけど、ディレクトリを差し替えたいときは、どうすんのが正解なんかねぇ?
  • du で見つからない巨大ファイルは lsof で見つけるの術 - HsbtDiary(2013-07-24)

    ■ du で見つからない巨大ファイルは lsof で見つけるの術 とあるサーバーの disk usage が 90% を超えていて「やれやれ logrotate 漏れか」と、ルートから du でせっせと調べてみても全体の 30% くらいにしかならなくてなんだコレは!と右往左往していたら隣に座っている @hiboma が lsof でプロセスが掴みっぱなしの fd を見つけてくれた。 どうやら td-agent がゾンビのように残っていて、削除済みでマークされている巨大な tail ログを掴み続けていて、それが全体の 60% になっていたことが原因だった。さっくり kill したら fd が解放されて無事 disk usage が緑色に戻りましたとさ。めでたしめでたし。

    du で見つからない巨大ファイルは lsof で見つけるの術 - HsbtDiary(2013-07-24)
    mas-higa
    mas-higa 2013/07/25
    プロセスが握ってるファイルを rm すると、そのプロセスにだけ使える隠しファイルになるっていうアレですね。
  • 僕がMacのホームディレクトリを削除するに至った経緯と、復元するまでの道のり | CreativeStyle

    最初に結論から申し上げますと、僕 @kadoppe はアホです。大馬鹿者です。 この度、仕事にフル活用しているMacBook Proのホームディレクトリ(/Users/<ユーザ名>)を削除するという愚行を働いてしまいました。 具体的に何をしたのか。それは、以下のコマンドの実行です。 コマンドにあまり詳しくない人のために説明すると、この短いコマンドをターミナルを開いて実行するだけで、有無を言わさずホームディレクトリの削除が開始されてしまう、恐怖のコマンドです。良い子は危険だから真似しちゃダメだよ! ではここからは、僕は何故こんなことをしてしまったのか、その経緯を言い訳がましく説明したいと思います。恥ずかしいですが、二度とこんなことを繰り返さないようにするために。 「~」という名前のディレクトリ 通常「~」(チルダ)という記号はホームディレクトリを表します。~/はMacだと実際には/Users

    僕がMacのホームディレクトリを削除するに至った経緯と、復元するまでの道のり | CreativeStyle
    mas-higa
    mas-higa 2013/04/09
    bash なら ls ./~ とかして、確認してから rm -rf !$
  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 Jesse Storimer, 島田浩二(翻訳), 角谷信太郎(翻訳) 達人出版会 3,520円 (3,200円+税) 『Working with Unix Processes』待望の完訳。並列処理やデーモン、プロセス生成、そしてシグナルといったUnixの基礎であるプロセスについてRubyで解説する、「今どきの」開発者に向けた新しいUnixプログラミングの手引きです。 ※書の公式ハッシュタグは#naruhounix になります。 関連サイト原著者による公式ページと訳者らによるサポートページがあります。 Working With Unix Processes - Learn the Fundamentals of Unix Programming in RubyなるほどUnixプロセスサポートページ 日語版刊行によせてRuby

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎
    mas-higa
    mas-higa 2013/04/08
    もくじ見ると面白そうだけど Rails 向けの何かなの? サンプル見てから決めよう。
  • expect. 対話的なコマンド(telnet,ftp,su等)を自動実行したいとき(Kodama's tips page)

    Kodama's home / tips. expect. 対話的なコマンド(ssh, telnet, ftp, su等)を自動実行したいとき ssh, telnet , ftp 等の対話的に使用するように作られたプログラムを スクリプト中に組み込んで定型的な作業を自動実行したい場合には expect を用いる事をお勧めします. また, ruby 言語を使えるなら ruby の expect.rb を使うのも良いでしょう. スクリプト中で su が必要な作業をさせたい場合にも便利です. 複数のマシンでの管理作業に利用した例があります. 複数のマシンでリモ−トでコマンド実行 手作業での実行例 次は telnet して ls する場面です. $ telnet hoge # マシンhoge に telnet した hoge login: foo # ログイン名 foo Password: # パ

  • Cygwinより手軽にUNIX風環境が手に入る「Gow」

    UNIX風環境をWindows OS上で使用してきた時代 黎明期からコンピューターを使ってきた方にとって、キーボードからコマンド名を入力して実行するスタイルは、ごく自然なものでした。GUI(グラフィカルユーザーインターフェース)が主流になってからも、コマンドラインによる操作は依然と残され、我々が使用するWindows 7にも、コマンドプロンプトやWindows PowerShellといったCUI(キャラクターユーザーインターフェース)が用意されていることからも、その重要性を理解できることでしょう。 そもそもコマンドプロンプトで実現するコマンドラインインタープリターは、Windowsが主流になる前のOSであるMS-DOSを基礎にしており、そのMS-DOSもQDOSという16ビットOSを元にしています。しかし、CUIを採用したOSの源流は、1970年代から大学や研究所などに普及したUNIXにあ

    mas-higa
    mas-higa 2011/12/13
    "gccなどソフトウェア開発環境は一切用意されていません" それじゃ使えない。