タグ

bashに関するtyruのブックマーク (57)

  • HomebrewのインストーラーをRubyからBashに書き直しました! - プログラムモグモグ

    みなさんはHomebrewをお使いでしょうか。macOSをお使いの多くの開発者が使っていると思います。 HomebrewのインストーラーはRubyで書かれており、次のコマンドでインストールするようになっていました。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" HomebrewがRubyに依存していることは良いのですが (formulaの書きやすさはRubyならでは)、インストーラーの話になると事情が変わってきます。HomebrewのインストールコマンドはmacOSの工場出荷状態でも動く必要があります。こういうものにRubyを使っているのはリスクがあります。 将来的にmacOSデフォルトにRubyPythonが含まれなくなる (参考リンク

    HomebrewのインストーラーをRubyからBashに書き直しました! - プログラムモグモグ
    tyru
    tyru 2020/03/03
    すばら。これ気になってた
  • Create history log per working directory in bash

    I was wondering if it is possible to keep a file containing history per current working directory. So for example if I was working in /user/temp/1/ and typed a few commands, these commands would be saved in /user/temp/1/.his or something. I am using bash.

    Create history log per working directory in bash
    tyru
    tyru 2019/12/25
    HIST_FILE 複数設定できればいいのにな〜
  • コマンドラインツールを書くなら知っておきたい Bash の 予約済み Exit Code - Qiita

    上記の表の通り,Exit Code 1, 2, 126〜165, 255 は特別な意味を持ち,スクリプトやプログラム内で exit に指定するパラメータとしては避けるべきである.とりわけ,Exit Code 127 はトラブルシューティングで混乱の元である("command not found" で終了したのか,プログラム固有のエラーなのか区別できなくなる).しかしながら,多くのスクリプトが exit 1 を一般的な実行を続行できないエラーとして使っている.Exit Code 1 は Bash の一般的なエラーを含め,とても多くのエラーで発生しうるので,デバッグの時に切り分けが大変になるだろう. Exit Code を体系立てて定義する試みはある(/usr/include/sysexits.h)が,これは C と C++ プログラマー向けである.スクリプトに関しても同様な感じにするのが適切

    コマンドラインツールを書くなら知っておきたい Bash の 予約済み Exit Code - Qiita
    tyru
    tyru 2016/09/23
    exit code の推奨されてる使い方とかあるのか。
  • 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の引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー
    tyru
    tyru 2014/12/12
    これいいな
  • GitHub - hannob/bashcheck: test script for shellshocker and related vulnerabilities

    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 - hannob/bashcheck: test script for shellshocker and related vulnerabilities
  • bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog

    ※(2014/10/1 追記) 脆弱性の番号を誤って CVE-2014-6721 と表記してしまっていました 正しくは "CVE-2014-6271" です 失礼致しました ※(2014/10/7 追記) 2014/10/7 14:00時点で Shell Shock への修正パッチは6個 公開されています 既に対応済みのシステムでもパッチの漏れがないか注意してください シェルに脆弱性が見つかったらしいです このコマンドを実行すると脆弱性があるバージョンかのチェックができるようです $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 以下のように表示されたらアウトです vulnerable this is a test どうやら、このコマンドが正常に実行できるというのがこの脆弱性の正体らしく、 echo vuln

    bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog
    tyru
    tyru 2014/09/30
    そもそも、環境変数の値が関数定義を含んでいたらパースする必要性が分かってない
  • Blog: bashの脆弱性がヤバすぎる件 – x86-64.jp - くりす研

    Browse by time: December 2018 (1) December 2016 (1) December 2015 (1) January 2015 (1) September 2014 (2) July 2014 (2) April 2014 (1) February 2014 (1) January 2014 (3) December 2013 (2) September 2013 (3) June 2013 (1) May 2013 (1) April 2013 (1) March 2013 (2) February 2013 (5) やっと更新する気になった。 もくじ 0. 産業で説明 1. 理論編 2. 攻撃編 3. パッチ 4. 結論 0. 産業で説明 bashが アホで 地球がヤバイ 1. 理論編 bashの関数機能は、環境変数の中でも使える仕様になっています

  • ncコマンドとbashの/dev/tcpで通信 - suztomoのはてなダイアリー

    netcatコマンドとbashの/dev/tcpを使って通信をする。 Reverse Shell with Bashを実行してみました。 bashはtcpの通信を/dev/tcp/host/portというファイルへの入出力に見せかけることができる。 これを使ってサーバとクライアントで通信をして、遠隔操作をしてみる、サーバとクライアントを用意するけれど、この例では接続してきたクライアントをサーバ側で操作するというもの。 まずnc(netcat)コマンドをサーバで実行する。-lでlisten mode.ここではtcpの8080番ポートで待ち受けることにした。*1 次に、クライアントではbashにシェルを変更して、ファイルディスクリプタの5番を/dev/tcp/[サーバのアドレス]/[サーバが待ち受けてるポート]にむすびつける。*2 うまく繋るとサーバ側に繋った旨が表示された。 クライアント側で

    ncコマンドとbashの/dev/tcpで通信 - suztomoのはてなダイアリー
    tyru
    tyru 2014/05/20
    bashの機能なのかこれ。しかも2008年の記事。
  • 個人的なShellTipsをまとめてみた - UNIX的なアレ

    naoya_itoの火を噴いたシェルtips - Togetter これを読んでふと書きたくなったので。ちなみに僕はbash使っています。 CTRLを使った便利系 まず、UNIXな操作あたり。 キーバインド 意味 CTRL + s キー入力を受け付けなくする 画面出力抑える CTRL + q 上記解除 CTRL + z バックグラウンドに. fgで戻る CTRL + l 画面をクリア。clearと同等 CTRL + c 現在の処理を停止 CTRL + d exitと同等 CTRL + r historyからコマンド検索 emacsっぽいやつ どっちかというとキー操作に近い。基emacs。metaは僕はoptionに割り当ててる。とりあえず触りたい人はESCでOK。 キーバインド 意味 CTRL + a 行頭 CTRL + e 行末 CTRL + f → CTRL + b ← CTRL

    個人的なShellTipsをまとめてみた - UNIX的なアレ
    tyru
    tyru 2014/04/21
    Ctrl-yで貼り付け知らなかった。それ以外はブコメ含めて知ってた。/bashでもbash-completionとCtrl-rがあれば十分なぐらい使えるというか段々設定入れるのめんどい人になってきてしまった。
  • Better Bash Scripting in 15 Minutes

    The tips and tricks below originally appeared as one of Google's "Testing on the Toilet" (TOTT) episodes. This is a revised and augmented version. Safer Scripting I start every bash script with the following prolog: #!/bin/bash set -o nounset set -o errexit This will take care of two very common errors: Referencing undefined variables (which default to "") Ignoring failing commands The two setting

    Better Bash Scripting in 15 Minutes
  • Bashでコマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強→command -vも - Qiita

    コマンドのパスを知りたいんじゃなく、コマンドの存在をチェックしたいだけならwhichよりhashを使ったほうが良いかもっていう話。→追記: typeが最強っぽい。 追記: command -vも良い。プログラムの存在チェックorパスを探したいだけなら互換性を考えると一番良いかも。 比較してみる whichよりhashよりtype=command -vが高速→typeまたはcommand -vの勝ち whichは実ファイルという実体があるプログラムです。hashとtypeはbashの組み込みコマンドです。なので当然ですがプログラムの起動コストがない分hashやtypeの方が速いです。 $ time bash -c 'for((i=0;i<10000;i++));do which perl; done >/dev/null' real 0m7.739s user 0m2.928s sys 0m

    Bashでコマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強→command -vも - Qiita
    tyru
    tyru 2014/02/10
    自分は #!/bin/bash ではなく #!/bin/sh と書きたいがために which 使います(何と戦ってるんだ)
  • http://nyaos.org/d/index.cgi?p=(2013.05.04)+2300

    tyru
    tyru 2013/05/05
    素晴らしいです!複数回押した場合など、再現度に驚きました。ありがとうございます。
  • シェルスクリプトの[[と[の違い

    Yoshiaki Kawazu🐸ずん @kawaz シェルスクリプトのテストコマンド [ と [[ の違い。 [[はbashの組み込みコマンドで、[は単にtestという外部コマンドの別名。なので必然[[の方が速い。 [[では比較演算子の<と>がエスケープなしで使える。[では¥<や¥>とする必要がある。 (続く… 2013-02-12 14:05:41 Yoshiaki Kawazu🐸ずん @kawaz (続き) [[では比較演算子の<と>がロケールに応じた辞書順比較になる。[ではASCII辞書順。 [[では=~で正規表現マッチングが使える。bashバージョン3以降の機能。 [[では演算子を"-f"のようにクオートするとエラーになる。]では問題ない。 こんなところかな。 2013-02-12 14:07:56

    シェルスクリプトの[[と[の違い
    tyru
    tyru 2013/02/16
    めんどいのでいつも"["使ってる(そもそも/bin/bashに依存するシェルスクリプトを書くことになぜか敗北感を感じる変態なので)
  • 変数展開時の単語分割(word split)をマスターする - Qiita

    シェルスクリプトは、スペース区切りの文字列が代入された変数を展開するとき、文字列をスペースの位置で分割して複数の文字列のように扱う。この挙動は Bash (をはじめとする Bourne shell 系のシェル)と Zsh とで異なってくる。 普通の変数について Bash では、展開する変数をクォートしなければ単語分割が起きる。クォートすれば単語分割は起きず、スペースを含む1つの文字列として展開される。 Zsh では、変数をクォートするかしないかにかかわらず単語分割は起きない。ただし、 SH_WORD_SPLIT オプションをオンにすると Bash 準拠の挙動に変わる(デフォルトでオフ)。以下に単語分割の例を示す: ### 下準備 # 第1引数を echo する関数 function echo_first { echo $1 } # スペース区切りの文字列を含む変数 var="a b c"

    変数展開時の単語分割(word split)をマスターする - Qiita
  • Vim を高速にしたたったひとつの作業 - pekeblog!

    # こんなことがおこってしまいました 見に覚えがないのですが、ある日突然 vim が激重になってしまいました。 vim が重い… それは vimmer にとっては耐え難いもの… 単純に重いといっても色々あると思います。 重い症状といえば、大体は以下の2つに分類されるかと思います。 起動が遅い ある特定の処理が遅い - FileType の処理とか、あと、特定の重めなプラギンの処理とか ところか、Vim の操作の一つ一つが遅いという現象が発生してしまいました。 具体的に言うと、起動はもちろん、バッファの移動、タブの作成、ファイルの保存ですら重い。 ついでにいうと、gui だけでなく、cui も激重です。 というわけで、僕は結構前から vimrc の高速化を図りつつ、乗り換えるエディタを探していました。 候補にあがったのは以下のエディタです Emacs Vico CotEditor Subli

    Vim を高速にしたたったひとつの作業 - pekeblog!
    tyru
    tyru 2013/01/14
    ありがち。コメント書いた
  • 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

  • 笑えないくらいちゃんとしている。Pure BashなRailsライクなフレームワーク·shails MOONGIFT

    shailsはPure Bashスクリプトで作られたRuby on RailsライクなWebアプリケーションフレームワークです。 Bashだけでどこまでできるのか…そんな限界は実はないんじゃないかと思わされるのがshailsです。Bash on Railsと名付けられたRuby on RailsをBashスクリプトで表現したソフトウェアです。 shailsを実行すると環境が作成されます。 Railsっぽくフォルダやファイルが生成されています。 意外とファイル内容がちゃんとしていたりします。 シェルスクリプトなのにYAMLっぽく見えます。 shailsは実際にWebアプリケーションを作ることができます。大枠としてはネタソフトウェアなのですが、格的すぎて引いてしまうくらいです。モデルもルーティングもテンプレートもあって、ぜひ見て触れて楽しんでほしいソフトウェアです。 shailsはBashス

    笑えないくらいちゃんとしている。Pure BashなRailsライクなフレームワーク·shails MOONGIFT
    tyru
    tyru 2012/03/18
    bash on railsってなかったっけ? / あった http://emasaka.blog65.fc2.com/blog-entry-342.html
  • でかいWEB+DB PRESS総集編PDFをなんとかする - Just another Ruby porter, 2011-12-a

    ■ tmux attach ~/.tmux.confの最後にnew-sessionと書いておけばtmux attach || tmuxみたいなことをしなくても、 常にtmux attachと実行するだけでよくなる。 なければちゃんと新しいセッションを作ってくれるし、あればそいつにattachしてくれる。 毎回新たなセッションが作られるわけでもない。完璧だ。 ■ ディスクカッターとスキャナ 自炊してみた。カッターはDC-210N。 ちょっと大目に切っておかないと内部に接着剤が染み込んでることがある。 くっついたままだとジャムる。裁断は大胆に。これはしかし切れ味が気持ちいい。くせになる。 スキャナはScanSnap S1500。Ubuntuだとつなぐだけでok。 あとはxsaneで両面もちゃんとスキャンできる。すばらしい。 まずは要らないでやってみたが、Sony Readerで見てもまずまず

    tyru
    tyru 2011/12/17
    bashでも使えるのか >{0..50..10}で0,10,20,30,40,50
  • パイプでつないだコマンドの終了ステータスをとる

    cles::blog 平常心是道 blogs: cles::blog NP_cles() « コピペだけでレポートを作らせる :: AWS が Memcached 互換の Amazon ElastiCache をリ... » 2011/08/24 パイプでつないだコマンドの終了ステータスをとる  sh 49 1へぇ パイプでつないだコマンドの終了ステータスをとる方法が分かったのでメモ。 普通はあまり使わないテクニックですが、シェルスクリプトを組むときにパイプの前半部分の終了コードが必要になることがあります。 $ hogecmd | tee -a hoge.txt 例えば上記のようなコマンドの直後に$?で終了ステータスを取得すると、hogecmd ではなく、tee -a hoge.txt の部分の終了ステータスになってしまって、シェルスクリプトで条件分岐を書くときに困るのです。この制約を突破

    パイプでつないだコマンドの終了ステータスをとる
  • .bashrc に入れてる素敵な設定やエイリアス等を教えてください - ANS-prog

    PyCon JP 2011 8月27日(土) 9:30~17:10 (仮) 産業技術大学院大学 (品川シーサイド駅から徒歩3分) Call for Papers:演題募集中 最近 mac を買ったので .bashrc をいじりはじめました。今入れてる設定は pip と virtualenv (virtualenvwrapper) 以外は history に 重複するやつ (ignoredups) と 先頭空白 (ignorespace) のやつを残さない # Command history export HISTCONTROL=ignoreboth # (ignoredups and ignorespace) 標準エディタの設定 # Vim is THE editor! export VISUAL=vim export EDITOR=vim ぐらいです。他に皆様の素敵な設定やエイリア