タグ

shに関するraimon49のブックマーク (231)

  • Dockerfileを書く時の注意とかコツとかハックとか | Kim's Tech Blog

    目次 なぜDockerfileを使うのか? ADDとDockerfileにおいてのコンテキストを理解する CMDでコンテナをバイナリのように扱う CMDとENTRYPOINTの違い exec format error ビルド時のキャッシュについて: キャッシュが有効なときと無効なとき ある一行でキャッシュが使われなかったらそれ以降のすべての行でキャッシュは使われない 何もしないコマンドを追加してもキャッシュは無効になる コマンドと引数の間に意味のないスペースの入れてもキャッシュは無効となる Dockerfileの行に意味のないスペースを入れてもキャッシュは有効 冪等ではない命令でもキャッシュは効いてしまう ADD以降にある命令はキャッシュされない (ただし、0.7.3以前のバージョンを使っている場合のみ) コンテナをバックグラウンドで動かすハック なぜDockerfileを使うのか? Do

    raimon49
    raimon49 2015/02/03
    べき等性と-no-cacheオプション
  • Steam for Linuxのバグ、予期せぬ「rm -rf "/"*」 | スラド Linux

    Steam for LinuxSteamのデータ保存用ディレクトリを別の場所に移動した結果、ユーザーのファイルがすべて消去されてしまったというバグリポートが出されている(Neowinの記事、 家/.)。 このユーザーは「~/.local/share/steam」フォルダーを別のドライブに移動し、元の場所にシンボリックリンクを張った。その結果Steamが起動しなくなり、新しい場所を指定しても解決せずにSteamはクラッシュ。再起動すると自動的に再インストールが行われ問題は解決したように見えたが、ルートディレクトリ以下すべての場所(マウントされている外付けドライブも含む)から、このユーザーのファイルが再帰的に消去されてしまっていたという。 同様のトラブルに遭遇した他のユーザーが、Steamのスクリプトで見つかった問題点を指摘している。スクリプトはある時点でデータの保存場所を「$STEAMR

    raimon49
    raimon49 2015/01/18
    >データの保存場所を「$STEAMROOT」にセットし、後で「rm -rf "$STEAMROOT/"*」を実行する。しかし、データの保存場所が移動されると「$STEAMROOT」が空の文字列を返すため、「rm -rf "/"*」が実行され、予期しない削除が実行される
  • 仕事で使えるシェルスクリプト

    [第136回関西Debian勉強会 + Linux Kernel 勉強会 LT大会](https://debianjp.connpass.com/event/90376/)での発表資料です。

    仕事で使えるシェルスクリプト
    raimon49
    raimon49 2014/12/30
    setコマンド
  • シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」

    LINQ in Unity LINQ to GameObject - https://github.com/neuecc/LINQ-to-GameObject-for-Unity/ UniRx - https://github.com/neuecc/UniRx

    シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
    raimon49
    raimon49 2014/12/29
    AWKユーザー会らしさ
  • Option Table (GNU Coding Standards)

    4.10 Table of Long Options Here is a table of long options used by GNU programs. It is surely incomplete, but we aim to list all the options that a new program might want to be compatible with. If you use names not already in the table, please send bug-standards@gnu.org a list of them, with their meanings, so we can update the table. ‘after-date’ ‘-N’ in tar. ‘all’ ‘-a’ in du, ls, nm, stty, uname,

    raimon49
    raimon49 2014/12/21
    ロングオプション 対応表
  • GitHub - matz/streem: prototype of stream based programming language

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - matz/streem: prototype of stream based programming language
  • cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー

    cdの引数が相対パスのままコマンドヒストリに残って便利な例が思いつかないので、絶対パスでコマンドヒストリに残すようにする。 具体的には、以下のシェル関数を.bashrcに書く。 if [[ -n "$PS1" ]]; then cd() { command cd "$@" local s=$? if [[ ($s -eq 0) && (${#FUNCNAME[*]} -eq 1) ]]; then history -s cd $(printf "%q" "$PWD") fi return $s } fi いくつかの重要なポイントを以下に記す。 cdの定義を上書きしているが、このような場合中で普通にcdを呼ぶと再帰してしまうためcommand組み込みコマンドを使う。 "$@"の代わりに"$1"を使うことはできない。cdを引数なしで呼んだときホームディレクトリに移動しなくなってしまう。 cdの

    cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー
    raimon49
    raimon49 2014/12/11
    cdを上書きしてpwdで都度展開したパスを記録。
  • 意識の低い自動化

    意識を低く保ったまま、定型作業を自動化する話です。 ※どうも言葉足らずで誤解させてしまっているようなので補足を書きました。ご覧ください http://qiita.com/greenspa/items/fff535d2ae5da36e36feRead less

    意識の低い自動化
    raimon49
    raimon49 2014/12/07
    スライドの流れからFabric登場するのは読めたがCuisineは知らなかった。使ってみよう。
  • 実行中のプログラムの進捗度を手っ取り早く確認したい - その手の平は尻もつかめるさ

    完了するまでに結構時間がかかるプログラムを実行している時,そのプログラムの進捗度を確認したくなることがままあると思います.ほんとに動いてんのかお前,みたいな. そうした時に考えうる最も簡単な方法は,こんな感じで進捗度を標準出力に流してしまうという方法でしょう. (1..100).each do |i| # 例えばここで何らかの重い処理をする (下のsleepはその「何らかの処理」の例) sleep 0.1 # ここで進捗を表示 (プログレスバーみたいなもっとリッチな感じでも可) puts "#{i}%" end 簡単なものだとこれで良いでしょうが,途中で端末のセッションが切れると「アッアッ」という感じになったり,そもそもプログラムの実行に際して端末が割り当てられいるとも限らないし,というか時間のかかるプログラムがその処理中ずっと端末を占領しているのはつらいので別の方法が欲しかったりします.

    実行中のプログラムの進捗度を手っ取り早く確認したい - その手の平は尻もつかめるさ
    raimon49
    raimon49 2014/11/26
    $0 + 進捗でpsから確認できる。目からウロコ。
  • 本日のtip その2:アーカイブにゴミや見せたくないファイルを入れない方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ちょっとしたtipでも「ヘーッ」と思う人もいるようなので書いてみます、その2。Unix/Linux/Cygwin/MSYSとかでの話、GNU tarね。 tarは単一のファイルをアーカイブすることもできますが、普通はディレクトリを丸ごとアーカイブするでしょう。アーカイブに入れたくないファイルがあるとき、tarの--exclude=pattern、--exclude-from=file オプションを利用できます。patternはファイル名パターンで、シェルのワイルカード'?', '*'が使えます(ブレイス'{'と'}'は、期待通りには機能しませんから事実上使えません)。 例えば、 $ tar --exclude='*.tmp' -cvf ../archive.tar . とすれば、*.tmp という名前のフィイルはアーカイブに入りません。--exclude='*.tmp' の代わりに --e

    本日のtip その2:アーカイブにゴミや見せたくないファイルを入れない方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    raimon49
    raimon49 2014/11/13
    tarコマンドの--exclude=pattern, --exclude-from=fileオプションについて。
  • git grepをVimで使う

    Gitのgrepサブコマンドは通常Gitリポジトリーでしか使えない。しかし--no-indexオプションを付けると、Gitリポジトリーではないディレクトリーでも検索できる(もちろんGitリポジトリーでも)。Vimからももちろん使えるので、ackちょっと遅い、ag入れるのが面倒くさい、MSYS上で使ってるとjvgrepの出力が稀におかしい、などの理由でgrepに戻ったりしてる人はgit grepを使うのも良さそう。 set grepprg=git\ grep\ --no-index\ -I\ --line-number grepformatを編集しないで済ませるためには--line-numberオプションを追加して、行番号を表示させる必要がある。僕はバイナリ・ファイルを無視する-Iオプションも合わせて追加しておいた。パフォーマンスをあげるために--no-colorオプションを付けるのも良さそ

    git grepをVimで使う
  • 2014年9月26日号 14.10の開発・“shellshock”とその対応・UWN#384 | gihyo.jp

    Ubuntu Weekly Topics 2014年9月26日号14.10の開発・“shellshock”とその対応・UWN#384 14.10のFinal Betaとそれに伴うテスト 14.10の開発は無事にFinal Betaに達し[1]⁠、恒例のテスト要請が行われています。14.10のリリースイメージに何らかのバグがあっては困る場合はテストを、あるいはすでにバグを見つけている場合は速やかな報告が必要なフェーズです。近年はこの時期のリリースであっても一部の例外を除いて比較的安定しているため[2]⁠、「⁠次リリースを体験してみる」意味でも良いタイミングです。 ただし、あくまで開発版であり、リリース版に比べると実施されたQAの分量は少ないため、バックアップや予備機の準備は必須です。 なお、多言語入力回りについてはFcitxのMIRが現状でまだ完了しておらず、Unityへの組み込みが現在もま

    2014年9月26日号 14.10の開発・“shellshock”とその対応・UWN#384 | gihyo.jp
  • [Linux][セキュリティ] shellshockはPerl/CGIでsystem()にダメージありや無しや - ろば電子が詰まつてゐる

    bashの脆弱性"shellshock"が非常に話題になっておりますが、これがいろいろと事情が入り組んでおり全容がつかみづらい。 ということでここでは全容を理解するのを早々に放棄して、以下のレガシー環境に絞った狭い話をします。レガシーとは言っても、それなりに鉄板の構成なので対象者は多いのでは無いでしょうか。私は老害なので、Perlしか分からないのです。PHPは嫌い。 CentOS(Red Hat) 6 or 7 PerlCGIの内部で、system()を使っている。 (CGIとして動作させており、mod_perlやPSGI/Plackは使っていない) なお、shellshock自体の解説はここでは行いません。 基礎知識:CentOSの/bin/sh はじめに、/bin/shとbashの関係について予備知識を知っておく必要があります。 現在のCentOSおよびRed Hat Linuxにお

    [Linux][セキュリティ] shellshockはPerl/CGIでsystem()にダメージありや無しや - ろば電子が詰まつてゐる
    raimon49
    raimon49 2014/10/02
    >Perlでは、system()への引数が一つだけのときはそこにシェルのメタ文字があるかをチェックされ、メタ文字がある場合はシェルに解釈させる(丸投げする)ために/bin/shが起動されます。すなわち、shellshockされます。 / おおー
  • bash,dash,mkshの互換性 - 「希望」という字が好き

    §クォート sh <<\eof printf "%s\n" $"0" eof bash mksh 0が返る。 dash $0が返る。 $"string"に未対応。 sh <<\eof printf "%s\n" $'\60' eof bash mksh 0が返る。 dash $\60が返る。 $'string'に未対応。 sh <<\eof printf "%s\n" "${$+$'\60'}" eof bash 0が返る。 set -o posixとすると、$'\60'が返る。 dash $'\60'が返る。 $'string'に未対応。 mksh 0が返る。 §パラメータと変数 sh <<\eof echo ${@-0}${@+1} eof bash mksh 0が返る。 位置パラメータが存在しないときは未定義。 dash 1が返る。 位置パラメータが存在しないときは空文字列。 sh

    raimon49
    raimon49 2014/05/24
    Debian系OSはshebangちゃんと指定しないと事故る。
  • シェルスクリプトのオプション設計ガイドライン - Qiita

    僕はコマンドラインで使うシェルスクリプトを書くことがけっこうあるんだけど、インターフェイスというか呼び出し方はとても大事だと思ってるので、そこにわりと時間をかけて考えるようにしてる。実装はいつでも変更できるけど呼び出し方を変えた時は利用者にも変更を強いるので、できれば最初から良い設計で作りたいと思っている。 そこで、僕がシェルスクリプトのオプションとか引数とかの仕様を決める上で注意していることをまとめてみた。シェルスクリプトや、その他コマンドラインのツールを作るときに参考にしてほしい。 シェルの種類は bash や zsh を想定してるけど、実装によらない話なのでどんなシェルでも使えると思う。 エラーの時に Usage (使い方ヘルプメッセージ)を表示するのはやめる エラーになった時に Usage (使い方ヘルプメッセージ) を表示するスクリプトがあるけど、やめたほうがいいと思う。例えばこ

    シェルスクリプトのオプション設計ガイドライン - Qiita
    raimon49
    raimon49 2014/05/21
    aliasから呼ばれることも考慮する。例えば判定の意味を持つオプションが両方とも指定されているなら後に指定した方を優先する。なる。
  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

    raimon49
    raimon49 2014/05/19
    usageファーストだと自分でも何を実装しなきゃいけないか分かり易くて良い。
  • README のファイル名が大文字である理由 - clock-up-blog

    README のファイル名は慣習的にすべて大文字(であることが多い) GitHubプロジェクトを作るときに README を作成するオプションを入れておくと、README.md というファイルができる。それ以外の場所のプロジェクトでも README.txt や README など、ファイル名がすべて大文字になっているものをよく見かける。 なんか気持ち悪いなぁ、って思ってました。 readme でいいじゃん、と。 詳解 Linuxカーネル 第3版 作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水正明,高杉昌督,平松雅巳,安井隆宏出版社/メーカー: オライリー・ジャパン発売日: 2007/02/26メディア: 大型購入: 9人 クリック: 269回この商品を含むブログ (71件) を見る 調べてみた README - Wikipedia, th

    README のファイル名が大文字である理由 - clock-up-blog
    raimon49
    raimon49 2014/05/12
    ASCII文字コード順 ただしLC_COLLATEの影響を受ける(指定していなければLANG)
  • PowerShell雑感 L'eclat des jours(2014-05-08)

    _ PowerShell雑感 PowerShellを先々月あたり、仕事に使おうかと思ってサーバーの上でスクリプトを書きながらいろいろ試し始めて、結局翌日にはRubyのMSIを突っ込むことになったのだった。 くそのような言語だ。おいしいものを詰め込んで酸をぶっかけてこねくり回して栄養を吸い取って匂いをつけて一丁あがりだ。 悪いとこどり。 dirの代わりにlsと書けたり、エイリアスからはちょっと/bin/shみたいに見える。Unixerを向いているのかと思えば、dirとも書けるからbaterのことも向いている。 dir|moreと書けばそれなりに出てくるから、cmderにも向いていそうに見える。 でもdir /wとすると dir : パス 'C:\w' が存在しないため検出できません。 となるから、cmderには少しも優しくない。 ならばとls -lと打つと Get-ChildItem : パ

    raimon49
    raimon49 2014/05/09
    >C#に対するCsScriptとかにしてくれれば遥かに話が楽だった
  • MacBookでau Wi-Fi接続ツールを自動起動する - 工夫と趣向と分別と。

    一般的に、Mac OS Xで「Wi-Fi接続をトリガーに(SSIDに応じて)何かを実行する」というのは容易に書ける。今回は、au Wi-Fiが提供するアクセスポイントに接続した際にすかさずau Wi-Fi接続ツールを起動するという機構を実現してみた。 まずは、SSIDを判定してアプリを起動するスクリプトを書く。もちろん、shが苦手なら他の言語でも良い。 #!/bin/sh ssid="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '$1=="SSID:"{print $2}')" case "$ssid" in au_Wi-Fi|Wi2_club|Wi2premium_club|UQ_Wi-Fi|Wi2|Wi2premium|wifi_

    raimon49
    raimon49 2014/05/02
    launchd デーモン化
  • 対話型シェル「IPython 2.0」リリース | OSDN Magazine

    4月1日、Python向け対話的実行環境「IPython」の最新安定版「IPython 2.0」がリリースされた。インタラクティブなHTMLウィジェットの提供などの新機能が加わっている。 IPythonは対話的にプログラムを実行できるシェルを提供するソフトウェア。Pythonには元々対話的シェルが備えられているが、IPythonではより高機能なものとして開発されており、GUIを提供する専用コンソールやGUIツールキット、Webブラウザ上で動作する対話的実行環境、並列コンピューティング向けの高性能なツールなどを提供するのが特徴。Pythonにフォーカスしているが、任意の言語で対話型コンピューティングを実現可能にすることを目的としている。ライセンスは修正BSDライセンス。 IPython 2.0は2013年8月にリリースされたバージョン1.0に続く最新版。8か月の間、約100人の開発者が400

    対話型シェル「IPython 2.0」リリース | OSDN Magazine