タグ

shに関するsleepy_yoshiのブックマーク (17)

  • sortコマンドで複数キーによるソート - あらびき日記

    この記事は abicky.net の sortコマンドで複数キーによるソート に移行しました

    sortコマンドで複数キーによるソート - あらびき日記
  • シェルスクリプトでの正規表現マッチ - Qiita

    シェルスクリプトで正規表現でのマッチングを使いたい場合,少しぐぐってみると case 文を使えという内容のものがよくヒットするようですが,expr コマンドでも正規表現が使えます. #!/bin/sh if expr "aaabbc" : "b+c$" > /dev/null; then echo "hoge" fi # => hoge 正規表現を用いた場合,expr はマッチした位置や()でグループ化した結果を出力するので,要らない場合は /dev/null に捨てます. ちなみに, zsh では [[ ]] を用いて自然に正規表現が書けます.

    シェルスクリプトでの正規表現マッチ - Qiita
  • シェルスクリプトはエレガントでなければならない

    /bin/shの実体としてはash(dash)、bash、kshの採用例が多い。どのシェルもBourne shellの機能に加えて、拡張機能を提供する。 FreeBSDなどの*BSD系のOSは、ashを/bin/shとして使っている。ashはPOSIX.1(POSIX:2008)にいくらかのBSD拡張機能を取り込んだシェルだ。メモリをあまり消費せず、高速に動作し、ほかのライブラリに依存することが少ない。従って、rootやレスキューシステムのインタラクティブシェル、システムのシェルスクリプトといった場面で採用されている。 Mac OS Xはbashを/bin/shに採用している。FedoraやopenSUSEなどのLinuxディストリビューションもbashを/bin/shに採用している。LinuxディストリビューションでもUbuntuやDebian、Linux Mintなどは、高速に動作する

    シェルスクリプトはエレガントでなければならない
  • bash で処理時間を 10 ミリ秒単位で計測する方法

    bash スクリプト中の特定部分の処理時間(経過時間)を、1秒より細かい粒度で計測したいため、その方法を考えてみました。 まず、秒単位で良ければ、次の場所にあれこれと書いてある方法で良いかと思います。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22451&forum=10 ただ、bash には組み込み変数 SECONDS (シェルが起動されてからの経過秒数) があるので、次のように書いたほうがオーバーヘッドが少ないはずです。 #!/bin/bash # # Name: elaps.bash # sleep 1 START=$SECONDS #bash's builtin echo START=$START echo -e "\n### sleep 2" sleep 2 echo END=$SECONDS let ELAP

  • コマンドを組み合わせる「のり」としてのシェルスクリプト

    UNIXの発展で大きく寄与をしたのは、シェルスクリプトである。シェルスクリプトによって既存のコマンドとユーザプログラムを組み合わせ、新たなプログラムを作成する過程は、ソフトウェアの「のり」と呼ぶにふさわしい。 シェルスクリプトでベースになった技術は、デバイスとファイルを区別しないファイルシステム、入出力のリダイレクト、forkとpipeによるストリームのパイプライン処理である。 ここでは、シェルスクリプトの「のり」としての役割に焦点を当てて解説する。 Last modified: Wed Mar 30 22:21:21 JST 2005 1 そのとき歴史がかわった UNIXの産みの親であるKen ThompsonとDennis RitchieがAT&Tのベル研究所でMulticsと呼ばれる大型のオペレーティングシステムを開発していた頃、「インタラクティブで便利なコンピュータサービス」が欲し

  • 関数の使用方法 | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 関数名を指定したブロック内に処理を定義する。 関数名とその関数の処理を定義することで、一連の処理を関数を呼び出すことが可能になる。通常、関数の最後には return コマンドを指定し、その引数として与えた値が関数の終了ステータスとなる。 return コマンドの引数に指定できる値は、0 もしくは 1~255 の正の整数値のみである。マイナスの値も指定可能であるが、-1 を指定した場合は結果的に 255 になる。紛らわしいので、0 もしくは 1~255 の正の整数以外は指定しないようにする。 この return コマンドは省略可能で、省略された場合は関数内で最後に実行されたコマンドの終了ステータスが、関数自体の終了ステータスとなる。 関数を呼び出すときは、関数名と引数のリストを指定する。引数は省略可能である。呼び出すときの関数名は C言語などのように () を付ける必要はない。func(

    関数の使用方法 | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • sudoでリダイレクトするときにハマること - ぱせらんメモ

    sudoで何か実行するとき、普通にリダイレクトするとリダイレクト処理自体は自分の権限になっててハマることがある。 sudo svnadmin dump hoge >hoge.dumpついつい上のようにやってしまいがちだけど、これをやるとhoge.dumpは自分の権限で書き込まれる。書き込み先に権限が無ければ当然エラーになる。 「sudo svnadmin dump hoge」の実行結果をリダイレクトって感じだろうか。 じゃあどうすればいいのかというと、方法は二種類。 sudo sh -c 'svnadmin dump hoge >hoge.dump'ひとつのシェルの実行として括ったものをsudoする方法。 やりたいことの中にクォートがあるとややこしそうだという欠点がある。 ちなみにこの方法はsudo(8)に書かれているやりかた。 もうひとつ。 sudo svnadmin dump hoge

    sudoでリダイレクトするときにハマること - ぱせらんメモ
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • 本を読む シェルでバックグラウンドジョブの起動メッセージを出さないようにする

    小ネタ。 bashやzshで、コマンドラインからバックグラウンドでコマンドを実行すると、ジョブ番号の起動メッセージが表示されます。PROMPT_COMMANDとかprecmdとかでコマンドをバックグラウンド実行するときなどには、ちょっと邪魔です。 $ sleep 3 & [1] 24616 このメッセージはシェル自身が表示しているので、もちろんリダイレクトは効きません。“set +m”すると出なくなりますが、以後すべて出なくなるものなので、戻してやるのが面倒なため、避けたいところです。あと、bashだとうまくいきませんでした。 % set +m % sleep 3 & で、サブシェルからバックグラウンド実行してみました。 $ (sleep 3 &) めでたしめでたし。

  • uniq -c で集計した数の合計値を算出する - 技術メモ帳

    よくある慣用句として、 sort | uniq -c | sort -nr | head というものがある。 ご存知の通り、重複する行の数をカウントし 高い順に並び替えてheadする。というものだ。 たとえば、前にも書いたが、 指定したディレクトリ以下のファイルの拡張子の統計を取る コマンドは以下のようになる。 #ibook find . -type f | egrep -o '[^.]+$' | sort | uniq -c | sort -nr | head 42 rb 18 php 15 txt 10 cxx 9 html 7 pl 6 log 6 c 5 yml 4 js このときの一番左側のカラムである、集計値を合計する。 #ibook ... | head | rev | cut -d' ' -f2 | rev | paste -d+ -s - | bc 122 集計値のあるカ

    sleepy_yoshi
    sleepy_yoshi 2010/11/26
    pasteの使い方がテクい
  • /bin/sh が dashにリンクされててびびった - UNIX的なアレ

    ちらほらドキュメントも見かけたのでわりと有名なのかもしれませんね・・・いままで動いていたperlをubuntuに持っていったら動かなくなってびっくりしたのです。 Logを見る限りperlの内部でsystemでたたいているコマンドが動かなくなったんですね。わりとでかめのスクリプトだったので、とりあえずワンライナーをテスト用にたたいてみます。 $ perl -e 'system("ls -l <<< a ")' sh: Syntax error: redirection unexpectedあれーなんかへんだなーと思い、/bin/shを調べてみました。<<< はbash拡張で使える機能なのでbashがうまくたたけてないのかなー。 $ ls -l /bin/sh lrwxrwxrwx 1 root root 4 2009-01-09 16:02 /bin/sh -> dashうーん問題ないよなぁ

    /bin/sh が dashにリンクされててびびった - UNIX的なアレ
  • UNIX & Linux コマンド・シェルスクリプト リファレンス

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Emacs 上で快適に Bash や Zsh を利用する設定 : 紹介マニア

    概要 Emacs を利用していると全部 Emacs でやりたくなるのは Emacs 使いとして当然だと思います。 Shell だって Terminal など利用せず Emacs 上で動作させたくなることでしょう。 この文書では Emacs 上で Shell を快適に利用するための設定を記述していきます。 目次 概要 検証環境 Emacs での Shell Mode に関する基礎知識 shell term (ansi-term) eshell どのモードを利用するか 利用する Shell について Windows での Shell の準備 Mac OS X での Shell の準備 Emacs 側の設定 PATH の設定 利用する Shell の設定 文字コードの設定 システムの terminfo を利用しない設定 エスケープを綺麗に表示する term 呼び出しキーの割り当て Shell 側

  • 本を読む 関数型言語shの基礎文法最速マスター

    関数型言語shの文法一覧です。他の関数型言語をある程度知っている人がこれを読めば、shの基礎をマスターしてshを書けるようになっています。以下、Clojureあたりを想定して説明します。 注意:これは基礎文法最速マスターねたのパロディです。動作は物ですが、意味はコジツケです。 REPL shの処理系は、POSIX準拠のUnix系環境であれば標準で用意されています。REPLを起動するには、shを実行します。 sh すると、プロンプトが表示されます。 $ shのほかに、REPLに行編集機能を付けたbash・zsh・tcshなどもありますが、ここでは割愛します。 なお、REPLとして使うほかに、あらかじめ用意したスクリプトをshで実行することもできます。 sh hoge シーケンス shの扱うデータは、すべて、ある単位(ラインと呼びます)のデータが並んだシーケンスです。たとえば、seq関数(L

  • bashのキー操作一覧まとめ - 元RX-7乗りの適当な日々

    bashでは、"Ctrl"や"Esc"キーと組み合わせることで様々な操作ができるので、メモ代わりにまとめておきます。 よくやるのが「Ctrl + s」キーを押してしまうと、フリーズしたかのように見えるので一瞬焦ってしまう。そんな時は・・・ Ctrl + b カーソルを左へ1文字移動 (←キーでもOK) Ctrl + f カーソルを右へ1文字移動 (→キーでもOK) Esc + b カーソルを右へ1単語移動 Esc + f カーソルを右へ1単語移動 Ctrl + p historyの1つ前に入力したコマンドを表示 (↑キーでもOK) Ctrl + n historyの1つ後に入力したコマンドを表示 (↓キーでもOK) Ctrl + h カーソルの左1文字を削除 (BackspaceキーでもOK) Ctrl + d カーソルの右1文字を削除 (DeleteキーでもOK) Ctrl + a カー

    bashのキー操作一覧まとめ - 元RX-7乗りの適当な日々
  • シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Java BlockingQueueで遊ぶ:パイプラインごっこ」でパイプラインの話をしたので、来の、つまりUnixのパイプやリダイレクトを少し調べてみました。 たまに話題となる some-command >file 2>&1 と some-command 2>&1 >fileの挙動の違いについて、「シェルはコマンドラインリダイレクトの指定を右から左に解釈実行する」なんて説明が見つかりました。んなバカな! パージングは左から右にするものですよ。パーズツリーを逆順にたどることはできるけど、そんなことする必然性はなんにもないよ。 次の記事を読むと、「右から左」なんて事情じゃないことが分かるでしょう。 UNIXの部屋 検索: リダイレクト シェルのリダイレクトにまつわる失敗 さてここでは、複雑なリダイレクト処理も完全に理解できる処方箋を示しましょう。例えば、次のコマンドラインが何をするか分かる

    シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • 1