タグ

bashに関するcknbstrのブックマーク (21)

  • read について知っておくと while read で役に立つときが来る…かも - Qiita

    親の環境に影響を与えないためにサブシェルで実行している部分があります。 read に複数の引数を与える read に複数の引数を与えると複数の変数に同時に値を代入可能。区切りは IFS によって変化する。 $ echo 1 2 3 | (read v1 v2 v3; declare -p ${!v*}) # `${!v*}' は前方一致展開です declare -- v1="1" declare -- v2="2" declare -- v3="3"

    read について知っておくと while read で役に立つときが来る…かも - Qiita
  • シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog

    はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、

    シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog
  • 15 Linux Bash History Expansion Examples You Should Know

    Bash history is very powerful. Understanding how to effectively use the bash history expansions will make you extremely productive on the Linux command line. This article explains 15 examples that uses the following bash history expansion features: Event designators – Refers to a particular command in the history. It starts with a ! Word designators – Refers to a particular word of a history entry

  • \curl ... | bash ... what's the slash for?

    cknbstr
    cknbstr 2013/07/30
    コマンドの前のバックスラッシュは、alias回避なのか
  • シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    シグナルと trap コマンド シグナル シグナルとは? シグナルとは、実行中のプロセスに対して、さまざまなイベントを通知するために送出されるものである。 よく使用される、プロセスを終了するためのシグナルである SIGTERM や SIGKILL などのほかにも、数十種類のシグナルが存在する。 使用可能なシグナルの一覧は、コマンドラインから kill -l を実行することで参照可能である。 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19)

    シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
    cknbstr
    cknbstr 2013/07/26
  • Removing created temp files in unexpected bash exit

    cknbstr
    cknbstr 2013/07/26
    プロセス終了時にテンポラリファイルを消すにはtrapを使う TMPDIR=`mktemp -d` trap "rm -rf $TMPDIR" EXIT
  • bashの正規表現マッチングの使い方 - adsaria mood

    あるフリーウェアのインストール用bashプログラムを見ていたら次の様なものがあった。(以下の例は簡略化してある。) STRING="abc" if [[ "$STRING" =~ "^ab[cd]$" ]]; then echo "matched" else echo "unmatched" fi if文の条件表現の中に“=~”というオペレータがある。manを見ると =~ オペレータは文字列を正規表現と比較するとある。知らなかった。bashの文字列比較で正規表現が使えるとは。私は正規表現比較が必要な時はgrepに喰わせて判断していたのだが、これを使えば簡単にできる。 ところが、だ。上のプログラムが期待通りに動かない。上の例では =~ の左辺と右辺の正規表現はマッチするはずだが、結果は“unmatched”。色々と正規表現を変えてみたが、どれとしてマッチングしない。しかし、if文を次のように

    bashの正規表現マッチングの使い方 - adsaria mood
  • Bash One-Liners Explained, Part I: Working with files

    I love being super fast in the shell so I decided to do a new article series called Bash One-Liners Explained. It's going to be similar to my other article series - Awk One-Liners Explained, Sed One-Liners Explained, and Perl One-Liners Explained. After I'm done with this bash series, I'll release an e-book by the same title, just as I did with awk, sed, and perl series. The e-book will be availab

    Bash One-Liners Explained, Part I: Working with files
    cknbstr
    cknbstr 2012/12/02
  • bashのIFSに改行のみを設定するには - 計算機と戯れる日々

    bashのIFSに改行のみを設定するのにはまった。 シェルスクリプト中でコードとして定義 IFS=' 'もちろんコマンドライン中ではあり得ない表記だ。 ¥’¥n’ これに気がつくまで時間がかかった $'string' の形式を持つ単語は特殊な扱いを受けます。 この単語は string に展開され、 それから ANSI C 標準で仕様が決められている、 バックスラッシュでエスケープされている文字に置き換えられます。 バックスラッシュエスケープシーケンスは、 (もし存在すれば) 以下のようにデコードされます: \n 改行文字 $ echo "foo bar buzz" >> a $ echo "foo bar buzz" >> a $ echo "foo bar buzz" >> a $ cat a foo bar buzz foo bar buzz foo bar buzz $ (IFS=$

    bashのIFSに改行のみを設定するには - 計算機と戯れる日々
    cknbstr
    cknbstr 2012/11/13
    $'string' の形式を持つ単語は特殊な扱いを受けます。 この単語は string に展開され、 それから ANSI C 標準で仕様が決められている、 バックスラッシュでエスケープされている文字に置き換えられます。 バックスラッシュエス
  • Linux memo グループコマンド { コマンド1 ; コマンド2 ; … ; } の使い方

    最後のコマンドの後に必ずセミコロン( ; )をつけるべし. e.g.) { cd ../ ; ls ; } | less cdがグループコマンド内で使われているため, サブシェル扱いとなり, 実際にはディレクトリの移動を行わないで上ディレクトリを参照することができる. test ! -s hoge.dat && { echo "No file!" ; exit -1 ; } もしくは test -s hoge.dat || { echo "No file!" ; exit -1 ; } パイプラインの先が条件付きで実行される. これはif文( if [ 条件文 ] ; then 命令文 ; fi )と同様の効果を表す. こちらも一行で簡単に書きたい時に便利.

    cknbstr
    cknbstr 2012/05/17
    最後のコマンドの後に必ずセミコロン( ; )をつけるべし.
  • 本を読む bash 4.0:大文字小文字変換のワード展開

    実行例。 $ s=abCDef $ echo ${s^} AbCDef $ echo ${s^^} ABCDEF $ echo ${s^^[be]} aBCDEf $ echo ${s,,} abcdef $ echo ${s,,D} abCdef

    cknbstr
    cknbstr 2012/05/17
    $ s=abCDef $ echo ${s^} AbCDef $ echo ${s^^} ABCDEF $ echo ${s^^[be]} aBCDEf $ echo ${s,,} abcdef $ echo ${s,,D} abCdef
  • Android: NDKを使ってみました(3) | ナレッジデザイン大竹のホームページ (by drupal)

    今回はNDKを使って、ネイティブなスタンドアロンアプリケーション(アプリケーションフレームワークから独立したアプリ)をクロスコンパイルしてみました。 コンパイルしたのは、NDKのサンプル test-libstdc++、suコマンドのソース、bashのソース、です。 [ NDKのサンプル ] ndk-buildコマンドでコンパイル $ cp -r <NDKルート>samples/test-libstdc++ . $ cd test-libstdc++/jni $ ls Android.mk test-libstl.cpp $ cat Android.mk # A simple test for the minimal standard C++ library LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=

  • 展開 - ファイヤープロジェクト

    BASHの変数展開機能は豊富で使いこなせると効率的なプログラミングができる.ただし,BASH独自の機能が多いので,他のシェルスクリプトへの移植性が下がる. 展開 コマンド実行 evalコマンド 算術展開 変数展開 何かを入力したとき,それが何なのかを突き止めてくれる,それが展開である. ls $HOME とした場合,$HOMEが何なのかを突き止めて(この場合,変数の値を調べて), ls /home/hoge としてくれるのが展開である. コマンド実行あるコマンドに引数に別のコマンドの実行結果を代入することができる.それには$(command)とする.以下に例を示す. set $(date) while [ “$1” != “” ] do echo $1 shift done これを実行すると,パラメータ変数にdateコマンドの実行結果が割り当てられ,それらを順に表示する.setコマンドの引

    cknbstr
    cknbstr 2012/01/18
    ${変数:-デフォルト値} 変数が空ならばデフォルト値を設定する. ${変数:=デフォルト値} 変数が存在し,空でなければ変数の値を返す.空ならばデフォルト値を設定しその値を返す. ${変数:?文字列} 変数が空ならばアボ
  • bash - 文字列の操作 - あんみのの備忘録

    フィルタを使った文字列処理 実行した結果を``で囲みもとの変数に代入する $ str="abc def ghi" $ str=`echo "$str" | sed -e "s/def/xyz/g"` $ echo "$str" abc xyz ghi 文字列の連結 変数を並べて書く。 余分なホワイトスペースの削除 echoコマンドで出力する際にシェルが余分なスペースを削除するので、それを元の変数に戻す。 $ str=`echo $str` 文字列の長さ exprのlengthオプションを使う $ expr length "$str" 文字列の中の文字列 ある文字列がその中に含まれているか判定し含まれていればその行を書き出すのがgrepコマンド。 文字列が含まれていれば真を、含まれていなければ偽を返す。 #!/usr/bin/sh if echo "$1" | grep [0-9] ; th

    bash - 文字列の操作 - あんみのの備忘録
    cknbstr
    cknbstr 2011/09/22
    文字列の中の文字列 ある文字列がその中に含まれているか判定し含まれていればその行を書き出すのがgrepコマンド。 文字列が含まれていれば真を、含まれていなければ偽を返す。 #!/usr/bin/sh if echo "$1" | grep [0-9] ; then echo
  • Bedazzle Your Bash Prompt with Git Info // RailsTips by John Nunemaker

    RailsTips One man, lazily posting some of the things he learns. subscribe » I have seen this around and this morning finally decided to try it out. Thus far I am finding it surprisingly helpful. If you put the following in your bash profile, it will show the current git branch in your terminal prompt. bash profile addition function parse_git_branch { ref=$(git-symbolic-ref HEAD 2> /dev/null) || re

    cknbstr
    cknbstr 2010/06/18
    プロンプトにgitブランチを表示する。 最初の例はgit-symbolic... じゃなくgit symbolic... なので注意
  • Bash基礎文法最速マスター - いろいろ解析日記

    Bashの文法一覧です。他の言語をある程度知っている人はこれを読めばBashの基礎をマスターしてBashを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 echo文 echo文です。 echo "Hello world" コメント コメントです。 # コメント 変数の宣言 変数の宣言です。 # 文字列変数 declare str # 数値変数 declare -i num # 配列変数 declare -a array スクリプトの実行 スクリプトを実行するにはコマンドラインで次のようにします。 bash script.sh 出力結果をファイルに書き出すにはリダイレクトを使います。 bash script.sh > file.txt 文法チェック 事前に文法チェックを行うには、次のようにします

    Bash基礎文法最速マスター - いろいろ解析日記
    cknbstr
    cknbstr 2010/01/31
    declare知らんかった!
  • Bash completion for Maven 2

    cknbstr
    cknbstr 2009/11/19
    bashでmaven2のコマンド補完
  • Mazn.net » Ctrl-Sの端末ロックを無効にする

    bashではCtrl-Sを入力してしまうと端末がロックされた状態になり何も受け付けなくなります。Ctrl-Qで解除できるが、普段ロックすることないしいらいらするから、無効にする方法を調べてみた。 方法はいたって簡単で # stty stop undef でOK。常に有効にしたい場合は.bashrcなどにどーぞ。 Ctrl-Rはreverse-i-searchでコマンド入力履歴をさかのぼって検索できますが、たまに行き過ぎて戻りたくなることがあります。上記の設定でCtrl-Sのロックを無効にすることでi-searchができるようになり、戻ることができます。 ちなみに、Ctrl-Cで実行中のプログラムを止めるのもこのsttyで無効にできます。どのような機能が定義されているかは”stty -a”コマンドでわかります。 $ stty -a speed 38400 baud; rows 50; col

    Mazn.net » Ctrl-Sの端末ロックを無効にする
  • Bash&シェルスクリプトを極めるテクニックまとめ | OSDN Magazine

    UNIXやLinuxのエキスパートになるのに避けて通れないのが、Bashに代表されるコマンドラインシェルによる操作だ。そこで記事では、「Bashのカスタマイズ」「シェルスクリプトの高等テクニック」「Bash以外の高機能シェル」の3つについて、SourceForge.JP Magazineで過去に掲載された解説記事を紹介する。 Bashをカスタマイズして使いこなす Bashは非常にカスタマイズの幅が広く、またちょっとした改良や簡単なシェルスクリプトの利用により、大きく作業効率が改善する。ここでは、Bashのカスタマイズテクニックを解説する記事を紹介する。 コマンドラインでシェルのエイリアスと関数を使って作業を効率化する GNU/Linuxシステムを最大限に活用するには、やはりコマンドプロンプトとシェルスクリプトへの習熟が欠かせない。とはいえ、そうした処理はなるべく手早く済ませたいものだ。

    Bash&シェルスクリプトを極めるテクニックまとめ | OSDN Magazine
  • シェルのコマンド履歴から再利用、のいろいろ - 元RX-7乗りの適当な日々

    覚えていると、たまに便利かもしれない"bash"のコマンド履歴の展開に関する技を、例を交えながらまとめてみました。 最後にも書きましたが、他にもたくさんありますので、色々試してみてください。 直前に実行したコマンドを実行 "!!"コマンドで、1つ前に実行したコマンドを再度実行できます。 $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test $ !! ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test n個前に実行したコマンドを実行 "!-n"コマンドで、n個前に実行したコマンドを再度実行できます。 例えば、以下の例では、"!-2"とすると、2個前に実行したコマンドを実行しています。 $ ls test $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7

    シェルのコマンド履歴から再利用、のいろいろ - 元RX-7乗りの適当な日々
    cknbstr
    cknbstr 2009/02/27
    Ctrl+Rで充分な気もする