タグ

shellとUnixに関するnsyeeのブックマーク (11)

  • Shebangという謎な事実上業界標準について

    Shebangとは、UNIXのシェルスクリプトの業界標準で、シェルスクリプトの一行目のコメントの、#!を意味する。sheが短母音か長母音か分からなかったので、英語ネイティブにたずねたところ、人によって意見が違う。短母音の方が多数派のようなので、一応シバンが近いものになるだろう。日語版のWikipediaでも、シバンとしている。この機能には他にも多数の名前があるが、もっとも有名なのが、Shebangだそうだ。 その業界標準的な文法は、以下の通り(ただし、後述するように、この文字列の扱いについては違いがある) #! 文字列 [改行] 普通、実行権限のついたファイルは、標準のシェルで実行されるが、このShebangがある場合は、#!から改行までの間の文字列を、後述するバラバラな方法で解釈して、execで実行し、その際の引数には元のシェルスクリプトファイルへのパスが指定される。 問題は、このsh

  • プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。

    プロセス置き換えとか、名前付きパイプとか、とても便利な機能なのだけど、その仕組みはどうなっているのだろう?断片的な知識ばかりでは、その核心にはなかなか辿り着けない。サンプルコードの真似はできるけど、それ以上の発想はできない...。もっと根的なところからちゃんと理解しておかないと、いつまでたってもコマンドの使い方の質が理解できないと感じた。プロセスとは何か?パイプとは何か?リダイレクションとは何か?ファイルディスクリプタとは何か?可能な限りその質を探ってみようと思う。 UNIXのプロセス UNIXでは、複数のユーザーがログインした状態で、同時に複数の処理を依頼される状況が多々ある。 ところが、どんなに高性能なCPUであっても、ある瞬間に処理できるのはたった1つの処理だけである。 そんな時OSは、それぞれの処理に必要なメモリ領域を割り当てて、CPUをタイミングよく切り替えながら同時並行的

    プロセス・パイプ・リダイレクション・ファイルディスクリプタの実体を見に行く - ザリガニが見ていた...。
  • リダイレクトとパイプを図示してみた (補足) - とあるソフトウェア開発者のブログ

    「リダイレクトとパイプを図示してみた」の補足です。気づいたことを書き足しただけなので短いです。 (1)id:simply-k:20100731:1280607841 (2)id:simply-k:20100801:1280617927 (3)id:simply-k:20100802:1280617927 リダイレクトとパイプの比較 リダイレクトとパイプを、0、1、2といった番号*1の指定という観点から比較してみます。 リダイレクト 0、1、2などの番号を直接指定する。 (「0<」、「1>」、「2>」など) パイプ パイプ前のコマンドの標準出力と、パイプ後のコマンドの標準入力を結合する。正確には、パイプ前のコマンドの1番にデフォルトで割当てられられた出力ストリームと、パイプ後のコマンドの0番にデフォルトで割り当てられた入力ストリームが、結合されたかのように振る舞う。0、1、2などの番号は、ス

    リダイレクトとパイプを図示してみた (補足) - とあるソフトウェア開発者のブログ
  • リダイレクトとパイプを図示してみた (3) - とあるソフトウェア開発者のブログ

    前々回、前回の続きです。今回は、様々なリダイレクトやパイプを組み合わせた複雑なケースを説明します。 前回: id:simply-k:20100801:1280617927 補足: id:simply-k:20100803:1280796958 (11) コマンドA 2>&1 | コマンドB リダイレクトとパイプを組み合わせたケースです。2段階に分割して考えます。 (11-1) 「コマンドA 2>&1」、「コマンドB」 パイプの前後のコマンドを単独実行する場合です。「コマンドA 2>&1」では、コマンドAの標準エラー出力を、標準出力にリダイレクトします。このため、コマンドAの標準出力のデータと標準エラー出力のデータは、まとめて標準出力(stdout-a)に出力されます。「コマンドB」は、リダイレクトの無い、通常のコマンド実行です。 (11-2) コマンドA 2>&1 | コマンドB 「コマン

    リダイレクトとパイプを図示してみた (3) - とあるソフトウェア開発者のブログ
  • リダイレクトとパイプを図示してみた (2) - とあるソフトウェア開発者のブログ

    前回の続きです。今回は、リダイレクトの記号が複数のケースと、パイプを使うケースを説明します。 前回: id:simply-k:20100731:1280607841 次回: id:simply-k:20100802:1280617927 (7) コマンド 1> ファイル 2>&1 2段階に分割して考えます。リダイレクトの記号が複数の場合は、左側から順に考えます。 (7-1) 1> ファイル 1番の出力先(標準出力)をファイルにリダイレクトします。内部的には、ファイルを書き込み用にオープンし、その出力ストリームを1番に結び付けます。*1 (7-2) 2>&1 2番の出力先(標準エラー出力)を1番の出力先(ファイル)にリダイレクトします。内部的には、1番に結びつけられたストリーム(file)を2番に結び付けます。リダイレクトしない場合に標準出力と標準エラー出力に分かれて出力されるデータが、同じ

    リダイレクトとパイプを図示してみた (2) - とあるソフトウェア開発者のブログ
  • リダイレクトとパイプを図示してみた (1) - とあるソフトウェア開発者のブログ

    自分自身の知識を整理するため、リダイレクトとパイプの考え方を図示してみました。記事は3回に分ける予定です。 前回: - 次回: id:simply-k:20100801:1280617927 はじめに Unix/LinuxのシェルスクリプトやWindowsのコマンドプロンプトで使用するリダイレクトとパイプについて、考え方を図示しました。リダイレクトの表記法は、sh/bashやコマンドプロンプトを前提にしています。 リダイレクトやパイプについての初歩的な説明は省いていますので、そのような説明がほしい方は、他のサイトや書籍を参照してください。 (1) コマンド リダイレクトやパイプを使用しないコマンド実行です。 図の中の矢印は、ストリーム(データの流れ)を示しています。標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)が、自動的にオープンされます。それぞれ、データ

    リダイレクトとパイプを図示してみた (1) - とあるソフトウェア開発者のブログ
  • Ctrl-D の話 - ひげぽん OSとか作っちゃうかMona-

    Mosh の REPL が Ctrl-D で抜けられないとご指摘いただいていた件。 そもそも Ctrl-D って何だっけ?と立ち止まり調べましたが当たり前すぎて(?)記事にすらなってないので書いておきます。 ユーザーから見た Ctrl-D 入力終了を対話型のプログラムにしらせることに使う。 例えば irb から抜けるとき。 dekisugi% irb irb(main):001:0> puts "Hello" Hello => nil irb(main):002:0> # Ctrl-D で irb から抜ける その対話型プログラムが持つ exit や quit などの終了コマンドを入力するよりも楽ですね。 人によっては Ctrl-C を使う場合もあるかもしれません。(そのプログラムが SIGINT をどう扱っているかに依存するので、Ctrl-c で終了しない場合もよくあります。) 追記 i

    Ctrl-D の話 - ひげぽん OSとか作っちゃうかMona-
  • [Tips] 安全にファイルを更新する - OSS WEB|ossz|oneline|2006-05-24

  • コマンド:nkf: UNIX/Linuxの部屋

    最終更新 2018-05-10 nkf コマンドは、UTF-8・EUC-JP・Shift_JIS・ISO-2022-JP などの文字コードを変換するツールである。また、改行コード・MIME・ROT13/47・URL エンコード・SGML 文字参照・カタカナ/ひらがな・いわゆる半角カナなども変換できる。

    コマンド:nkf: UNIX/Linuxの部屋
    nsyee
    nsyee 2008/01/22
    UNIXコマンドで文字コード変換。メールのsubjectはMIMEでデコードしてあげる。
  • 削除したファイルをlsofで復元する | OSDN Magazine

    たとえば、あなたが午後いっぱいを費やして製作したオーディオ・ファイルの再生を楽しみながら、「やあ、こいつはすごい音だ! こっちに移動しておくとしよう」と思ったとする。そのとき、潜在意識が違和感を唱えるのだ。「ええと、mvだっけ、rmじゃないのか?」…やっちまった。そのショックはよくわかる。誰にでもありうる失敗だ。だが、失われたファイルを取り戻す簡単な方法はある。しかも、それはどの標準Linuxシステムでも使える方法だから、覚えておいて絶対に損はない。 簡単に説明すると、Linuxファイルシステム上にあるように見えるファイルは、実際はinodeへのリンクに過ぎない。inodeには、ファイルのあらゆるプロパティ(アクセス権や所有権など)のほか、ファイルの中味が実際に存在するディスク上のデータブロックのアドレスも記録される。rmコマンドでファイルを削除すると、ファイルのinodeを指すリンクは削

    削除したファイルをlsofで復元する | OSDN Magazine
  • キャッシュディレクトリの中身を定期的に削除する find レシピ

    キャッシュディレクトリの中身を定期的に削除する find レシピ 2007-10-11-2 [Tips] 自分用メモ。 よく使っている find コマンドの利用形態。 find ./cache -mtime +60 -delete find ./cache -name "*.html" -depth 1 -mtime +30 -delete find ./cache -type f -depth 1 -mtime +30 -delete ref. - http://www.jp.freebsd.org/cgi/mroff.cgi?sect=1&cmd=&lc=1 &subdir=man&dir=jpman-6.0.0%2Fman&man=find - http://www.jp.freebsd.org/man-jp/search.html

    キャッシュディレクトリの中身を定期的に削除する find レシピ
  • 1