タグ

shellに関するkjirouuのブックマーク (13)

  • @IT:シェルの深さを調べるには

    ログインすると、デフォルトではbashが起動してコマンド待ちのプロンプトが表示される。ここからさまざまな作業を行うわけだが、場合によってはシェルからさらにシェル(子シェル)を呼び出し、さらにそこからシェル(孫シェル)を呼び出すということがある。そのような作業をしていると、シェルの深さが分からなくなってしまうこともある。 現在のシェルの深さは、SHLVLという環境変数に保持されている。従って、

    kjirouu
    kjirouu 2014/12/16
    シェルの深さは $SHLVL に数値で入っている
  • コマンドラインツールについて語るときに僕の語ること #yapcasia

    http://yapcasia.org/2014/talk/show/b49cc53a-027b-11e4-9357-07b16aeab6a4

    コマンドラインツールについて語るときに僕の語ること #yapcasia
    kjirouu
    kjirouu 2014/08/29
    コマンドに関する各種用語を覚えるのにも良い、変数名に使える
  • シェルコマンドの 2>&1 とはどういう意味でしょうか?

    Unix ではファイル記述子というのがあって、番号、多くの場合 0, 1, 2 が使われます。0は入力、1は普通のメッセージ出力、2はエラーメッセージの出力というように使い分けされています。 さて、ご質問ですが、command > /dev/null という部分は、command の普通のメッセージ(ファイル記述子1番)を /dev/null というファイル(このファイルは特殊で、ここに出力された内容は全て捨てられます)に出力されます。で、残る "2>&1" という部分ですが、これは2番のファイル記述子を1番というファイル記述子にする、という意味になります。 従いまして、"command > /dev/null 2>&1" とすることで command からの全てのメッセージは(/dev/nullに)捨てられる、つまり、エラーがあろうがなかろうが出力されるメッセージは何もないことになります

    シェルコマンドの 2>&1 とはどういう意味でしょうか?
    kjirouu
    kjirouu 2014/07/19
    "command > /dev/null 2>&1" の解説
  • シェルスクリプトでコマンドの有無を確かめる

    which を使う 最初に思いついた方法. if [ `which SOME_COMMAND` ]; then echo 'found' fi # 一行で which SOME_COMMAND > /dev/null 2>&1 && echo 'found' type を使う OSに付属するシェルスクリプトを読んで技術を盗む(1/2) - @IT で紹介されていた方法. コマンドは違うが考え方は上記と同じ. if type logger > /dev/null 2>&1; then LOGGER="logger -s -p user.notice -t dhclient" else LOGGER=echo fi command -v を使う rvm がこういうふうにやっていた. なぜ builtin command というふうにわざわざやっているのかがよくわからない. command って

    シェルスクリプトでコマンドの有無を確かめる
    kjirouu
    kjirouu 2014/03/10
    which SOME_COMMAND > /dev/null 2>&1 && echo 'found'
  • いい加減、>/dev/null 2>&1と書くのをやめたらどうか (追記あり) · DQNEO日記

    はじめに これから書く内容は、シェルスクリプトをばりばり書いている現場(サーバエンジニアインフラエンジニア)向けのものではありません。 年に数回crontabをいじるような現場(サーバに詳しくないアプリケーションプログラマが多数を占めるような現場とか、Webデザイナや非プログラマがcrontabをおそるおそるいじったりするような現場)を想定しています。 >/dev/null 2>&1 の問題点 この記法の問題点は、「覚えにくい、間違えやすい、間違ってても気づかない」ということです。 初心者を迷わせる要素がこんなにあります。 >/dev/nullは先か後か 1と2はどちらが先か &はどこに書くのか よって下記のように多種多様なミスが起こり得ます。 2>&1 >/dev/null >/dev/null 1>&2 >/dev/null 2>1& >/dev/null &2>1 これをぱっと見て

    いい加減、>/dev/null 2>&1と書くのをやめたらどうか (追記あり) · DQNEO日記
    kjirouu
    kjirouu 2014/03/10
    2>&1 を覚えやすい書き方で書くと command 1>/dev/null 2>/dev/null (標準出力(1)と標準エラー出力(2)の吐く先を変える)
  • echoで改行しない

    [Linux] => [シェルスクリプト] echoで出力した文字は最後に改行されてしまいますが、-nオプションをつければ改行されずに出力されます。 « $# - 引数の個数 | | 数値比較演算子 »

    kjirouu
    kjirouu 2014/01/24
    echo -n で改行無し
  • プログラマメモ2: aliasの中に引数を入れれるか?

    .bash_profileの中にエイリアスを設定してその中に引数をとりこみたい。 例えばcsh系では、含めることができる。 ech 引数とうつと、test引数と表示させるとする。

    kjirouu
    kjirouu 2013/05/01
    alias ech="echo test$1" で引数が入る、自動で前にスペースが入る。ただし変数展開が特殊っぽいので、alias=func で関数定義にした方が良い
  • エスケープシーケンス一覧

    エスケープシーケンス一覧表 記号意味 \aベル文字(アラート) \b1文字分戻る \fページ送り(クリア) \n改行、復帰 \r同じ行の先頭に戻る \t水平タブ \v垂直タブ \\\を表示 \??を表示 \'シングルクォーテーション(')を表示 \"ダブルクォーテーション(")を表示 \0ヌル \N8進定数(Nは8進数の定数) \xN16進定数(Nは16進数の定数)

    kjirouu
    kjirouu 2013/04/12
    ¥a ¥b ¥f ¥n ¥r ¥t ¥v ¥¥ ¥? ¥' ¥" ¥0 ¥N ¥xN が書いてある。他に ¥e も有ると思う
  • (Linux)シェルスクリプトで変数に改行を含めたい | old_3流プログラマのメモ書き

    シェルスクリプトの変数に改行を含む文字列を入れる方法です。 VAR="test1 test2 test3 " echo "${VAR}" ←改行含まれる test1 test2 test3 echo ${VAR} ←これだと改行コードが無視される。 test1test2test3 注意として、改行含む変数を使うときに、クォーテーションでくくらないといけないということですね。 bashなどのシェル変数の値に改行を含める事は可能でしょうか? - Linux系OS - 教えて!goo:

    (Linux)シェルスクリプトで変数に改行を含めたい | old_3流プログラマのメモ書き
    kjirouu
    kjirouu 2012/11/21
    echoによる出力時に""で括るということ, 変数定義時ではない
  • bash で,サブシェルが起動される条件 : DSAS開発者の部屋

    今回は少々マニアックというか,重箱の隅的お話です. bash(1) には,複数のコマンドをまとめたり,コマンドの実行結果をコマンドラインに取り込むための記法が複数あります.それらのコマンドを実行するために,bash は必要に応じてサブシェルを起動しますが,どういう記述をした際にサブシェルが起動されるのか,いまいちはっきりしなかったため,実際に試してみました.今回試したのは,( ), $( ), { }, <( ) です. を実行して,ps コマンドの親プロセスがどれになっているかで確認しています.bash が設定する $PPID 変数を見ないのは,変数の展開をどのシェルがするかに依存するために,確認しにくいからです.ps コマンドを --forest オプション付きで単純に起動すると $ ps --forest PID TTY TIME CMD 20218 pts/18 00:00:00

    bash で,サブシェルが起動される条件 : DSAS開発者の部屋
    kjirouu
    kjirouu 2012/11/21
    シェル変数内の改行が有効にならない点へのヒント, "$( ) 全体を " でくくっているのは,改行が保存されるようにするためです"
  • 【 複雑な計算を行う「bc」 】

    exprでは,整数の四則演算や数値判別といった簡単な処理しか行えない。小数点を利用するなどより複雑な処理を行いたい場合は,bcを利用する。bcはexprとは違い,ファイルやパイプなどで引き渡された値を処理する。 たとえば,「1+1」という計算を行う場合は,

    【 複雑な計算を行う「bc」 】
    kjirouu
    kjirouu 2012/01/16
    シェル上で電卓機能を使いたい場合はbcコマンドを使う、 $ echo "1+1" | bc
  • 【 AND演算子「&&」 】

    AND演算子は,コマンドやシェル・スクリプトの終了コードが0であった場合に次のコマンドを実行する。つまり,1つ目のコマンドの実行が成功した場合に次のコマンドを実行する。たとえば,パッケージをビルドする際に,

    【 AND演算子「&&」 】
    kjirouu
    kjirouu 2011/08/14
    &&演算子の意味 "AND演算子は,コマンドやシェル・スクリプトの終了コードが0であった場合に次のコマンドを実行する。つまり,1つ目のコマンドの実行が成功した場合に次のコマンドを実行する"
  • How to Add Those @2x iOS4 Resources to SVN - enormego:developers

    In order for your app to take full advantage of the iPhone 4 Retina Display, you'll need to add 2x resources to your iPhone project. If you're using SVN to manage your files, you'll be faced with something pretty annoying: $ svn add Default@2x.png svn: warning: 'Default' not found This was incredibly frustrating for me, no matter how I tried to escape it: single quotes, double quotes, backslashes,

    kjirouu
    kjirouu 2011/05/31
    詳細不明だが@入りのファイル名は特殊な意味になるらしく、 ファイル名が途中で切れてwarningになってしまう。"foo@bar.txt" なら "foo@bar.txt@" と書くと正しく動く
  • 1