bashの使い方
bash のサンプルプログラムを考えてた。 よくあるパターンとして、 〇〇を実行して〇〇が△△になるのをまってから、□□する を考えてみた。 VPN の接続を待機する 今回のサンプルはMacでVPNを接続し、接続待ちをし、VPN接続が完了したらルーティングを加える。…
サブシェルとグループの違い サブシェル () グループ {} サブシェルの大きな特徴は、サブシェルであるということ サブシェルは、ほぼfork みたいなものだと思ったらいいと思います。 () / { } の違い () はサブシェルを起動し実行する。 {} は現在のシェルで…
似てて紛らわしいものシリーズ . / source について bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く。 . / source について . と source は、どちらも同じ意味と効果を…
bash の再起動方法 exec bash --login bash の起動オプション 以下のオプションは、すべて同じ意味だと思っていい。 bash を起動してInteractiveShellとして起動する。設定ファイルなどはいつもどおりの順番で処理します。 bash --login bash -l bash - exec…
bash の使い方を1から見直すシリーズ シェルスクリプトは、もうbashで書いていいよね。bashが動かない環境なんてないんだし。 bash の紛らわしい記号や歴史的経緯によるPOSIXかき分けなどがあって、bashに特化した記事って少ないし断片的なので、色々と調べ…
似てて紛らわしいものシリーズ `バッククオートと $() について bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く `` と $( ) の違いのついて コマンドの実行結果で置換…
Bashの関数名に?を使う bash の関数名には ? が使えます。つまりまぁまぁ美しい関数名が作れます if の中が美しくない例 # sf-pwgenが存在したら alias をいれる if type sf-pwgen > /dev/null 2>&1 ; then alias sf-pwgen-alphanum-12char="sf-pwgen -a alp…
bash の正規表現マッチで後方参照。 bash の [[ コマンドで、正規表現マッチが使える話は以前書きました。 そのときには、意図的に書きませんでしたが、bashの正規表現マッチでは後方参照が使えます。bash rematch の変数に格納されます。 ちなみに、rematch…
bash の似たものシリーズ 初心者が躓きそうなbash で似て紛らわしいものの違いをはっきりさせようとさせるシリーズ。 bash に於ける xargs / for には違いがあるのか? あります。結構大きな違いが有ります。 それぞれのループの回しかたを復習しておきまし…
似てて紛らわしいものシリーズ [[ / [ / test bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く [ / [[ の違い 結論から言います [[ / [ は同じものです。 [[ が新しい書…
似てて紛らわしいものシリーズ =/==と= bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く =/==と= の違い =はいくつかのパターンで出てきます。 比較演算子として = で比…
bash のジョブの概念とコントロール bash のジョブの話とkill の話。 Ctrl+zでプロセスはどこへ行くのか? takuya@~$ ログアウト 停止しているジョブがあります。 takuya@~$ 停止してるジョブってなんだよ!!!ってなる人が多い。 ジョブはどこに行った。…
bash でもコマンド履歴の即時反映をしたい 複数タブでターミナルを使ったり、複数ウインドウでターミナルを使うと、bashの履歴が共有されて無くて、悲しいことがある。 zsh の機能で紹介されることも多いですが。それ bash でも出来るよ。 共有方法 export P…
: はコマンドです。 え?コマンド? と思うかもしれません。はい、コマンドです。記号一文字がコマンドです。 : がコマンド(関数)の証拠 takuya@~$ type : : はシェル組み込み関数です : コマンドを実行した結果 takuya@~$ : ; echo $? 0 : は何に使うの?…
似てて紛らわしいものシリーズ [[ / (( bash の記述で初心者泣かせの、似てて紛らわしかったり、どう使っていいかわからなかったり、読み方を間違えてパニックになる記号について。今回は [[ / ((について [[ / (( の違い [[ / (( は if 文の条件判断の中で…
似てて紛らわしいものシリーズ (( / $(( bash の記述で初心者泣かせの、似てて紛らわしかったり、どう使っていいかわからなかったり、読み方を間違えてパニックになる記号について (( / $(( の違い (( / $(( は数字を計算する方法です。どちらも同じ機能を持…
似てて紛らわしいものシリーズ bash の記述で初心者泣かせの、似てて紛らわしかったり、どう使っていいかわからなかったり、読み方を間違えてパニックになる記号について (( と ( 全然意味が違うので、間違えると大変。また見た目は似ているので似たようなも…
bash の while 文について bash で書ける while文について触れておきます。 while 文の基本構文 while <COMMANDS> ; do <COMMANDS> done; ここでの <COMMANDS>は 複数行のコマンドリストのことを指しています。 COMMANDSに含まれるものは次のとおりです COMMANDS ( COMMANDS; ) { COMMANDS </commands></commands></commands>…
bash の関数定義について bashの関数定義の記事で触れていないことが有ります。というか意図的に省きました。 bash の関数定義には「リダイレクト」が含まれます。 リダイレクトを含めたbash関数定義 bashにおける関数定義は、正しくは実は次のようになって…
bash ではいろいろな条件で分岐が出来る。 ifで使えるいろいろな条件を見てみたいと思う。 数値判断系 数字を比較するときは以下を覚えておけばいい。 (( 1 > 0 )) (( 1 >= 0 )) (( 1 < 0 )) (( 1 <= 0 )) (( 1 == 0 )) (( 1 != 0 )) (( 0 )) # 終了ステータ…
bash で if の分岐について bash で if の条件分岐は、C言語系プログラマが if 構文を一見して理解できるように書かれています。が、ちょっとコツが実は必要なのです。 bash における条件分岐 前回は、bash は条件分岐を「コマンドの終了ステータス・コード…
終了ステータスは重要。 じつはあまり顧みられない、終了ステータスですが「条件分岐」の条件になってる。そのことは以前書きました。今回はこの「異常終了」のコードを詳しく見ていきます。 bashでは次のように定義されています。 $? == 0 が正常終了 $?> 0…
bashの使い方:条件分岐の話 if / while / until / case の話をしようと思っています。とても大変なので、できるだけシンプルにストーリーにしてわかりやすく書こうと思っています。 最初は条件分岐の話です。条件分岐はbashの理解に大きな影響を与える話な…
位置パラメータについて。 bashの使い方 のシリーズ。今回は、位置変数(位置パラメータ)について見ていきたいと思います。 引数をオプションとして使いたい人は。→ getopts の記事を参考にしてください ここでは、bash の引数へ配列としてアクセスして関数…
cd コマンドを見直す cd : change directory のコマンドを少し見直してみたいと思います。 cd コマンドの基本的な使い方 cd コマンドでは非常によく使う書式があって、それは以下のとおりだと思います。 コマンド 意味 cd 何も入力しない cd ~ と同じ cd $HO…
bash も配列を扱える シェルスクリプトで配列を扱えるので 配列を扱ってみる。 今回は、サンプルのために、変数名を大文字にしています。もちろん小文字も使えます。 大文字は、おもに環境変数やスクリプト間やプロセス間で値を渡すときに使うことが多いよう…
bash でコマンドを実行して強制終了するとき ターミナルでコマンドを実行して応答がないときに強制終了したい。こようなときは次のコマンドを使います。 Ctrl + C 強制終了 ときどき見かける。どこかで間違った知識が流布している。Ctrl+z を押す人が多い …
bashの関数 bash は 組込コマンド(組込み関数) は $PATH の通っている コマンドの実行 の他に、自分で定義した関数 function を使うことが出来ます。 シェルスクリプトを記述する プログラミング言語としておなじみの機能です。 bashの関数の定義方法 bash …
bash にもシンタックスチェック機能があります。 シンタックスチェックをすることでエラーを未然に防ぐ事ができます。 たとえば、長文のシェルスクリプトを書いているときシンタックス・チェックが有ると、事前にミスが見つかるので便利です。 bash のシンタ…
bash の help 機能について bash の組込の機能については man / info でもいいのですが多すぎて大変。 help コマンドを使います。help でダイレクトに調べられます。 bash のシェルスクリプトとしての機能やSHELLとしての機能を見たいときには help を使えば…