2016-01-01から1年間の記事一覧
似てて紛らわしいものシリーズ (( / $(( 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 を押す人が多い …
jq 便利ですよね。 jq 使ってます。みんなあれ整形程度にしか使ってなかったり、絞込にしか使ってない気と思うんですよね jq である条件を満たすオブジェクトを取り出したい SQLのselect where みたいに select {} where [].name = 'takuya' みたいな jq が…
bashの関数 bash は 組込コマンド(組込み関数) は $PATH の通っている コマンドの実行 の他に、自分で定義した関数 function を使うことが出来ます。 シェルスクリプトを記述する プログラミング言語としておなじみの機能です。 bashの関数の定義方法 bash …
bash にもシンタックスチェック機能があります。 シンタックスチェックをすることでエラーを未然に防ぐ事ができます。 たとえば、長文のシェルスクリプトを書いているときシンタックス・チェックが有ると、事前にミスが見つかるので便利です。 bash のシンタ…
bash の help 機能について bash の組込の機能については man / info でもいいのですが多すぎて大変。 help コマンドを使います。help でダイレクトに調べられます。 bash のシェルスクリプトとしての機能やSHELLとしての機能を見たいときには help を使えば…
bash の配列にも 連想配列が加わりました。 追加されたバージョンは、bash 4.2 からです。 はじめに連想配列とは何なのか 連想配列(PHPでの略語)は associative array と呼ばれる機能です。js や php を始めスクリプト系言語ではおなじみですね。 # javasc…
bash でも変数名の変数を使えます。 php では variable variable (可変変数)、javascript では obj[name]() などとやります。 関数名や変数名を、変数に確保しておき後で使ったり、動的に変数名をつくって変数を参照するなどするときに使われます。java な…
文字列の追加が簡単になっています。 bash 3.1 から 使えます。 a='Hello' a+=' World' echo $a # Hello world PATH などの追記が簡潔になります たとえばPATHの末尾に文字列を追加するときは次のように書くことが出来ます。 PATH+=:/home/takuya/.bin いま…
bash の使い方 bash の使い方の正規表現編です。 bash で正規表現マッチのif も出来ます。 Version 3.2 くらいから、=~ によるマッチ判断ができるようになっています。 正規表現マッチで条件分岐の例 とてもかんたんなマッチングの例を見ておきましょう。 na…
bash で数字を計算する let bash で数字を計算するときに、どのような方法を使いますか? 数字を計算するときに、いくつか選択肢があります。 expr let C style 主に、この3つのどれかだと思います。*1 今回はこの3つのうち、let について 見ていきたいと…
bash の if で数値比較をするには シェルスクリプトやbash のターミナルで、数値と数字の比較をしたいとき。 どのような方法を取りますか? a = 1 if (( a )) ; then echo 1 ; fi 私は、C言語スタイルの比較演算子を使うことが多いです。 数値を比較するには…
bash の for ループは for ..in スタイル bash では、for ループを for .. in スタイルで記述することが一般的です。 もちろん、C言語スタイルのbash のfor ループを記述することも可能です→参考 一般的に使われるのは for ... in スタイルではないでしょう…
bash ではC言語スタイルのfor ループが使えます。 bash のループの例を調べると seq などが散見されるのですが、C言語スタイルのおなじみの for ループが使えます。 え?とおもった人はbash のヘルプをもう一度見てみてください ヘルプの読み方 bash$ help '…
bash のブレース展開機能が強化されている bash 4.0 から、bash のブレース展開機能が強化されています。 bash のブレース展開の使い方を紹介したいと思います。 bash ゼロ埋め展開機能 数字のゼロ埋めができるようになっています ゼロ埋めの例1 echo {0000…
AMP 対応サイトが辛い件について Google AMPで表示されるサイトが「高速化」されたけど困ったことになってる。 AMPはドメインがGoogle のままになっている。 このままではMITMと変わらない。 Googleが中身を見せてくれる ドメインがGoogleなので、アクセス制…
前回に、ホットプラグのやり方を書いたけど、どうも腑に落ちなかった。 検索にもう少し別のやり方がでてたから。そっちも調べてみることにした ディスクを一旦無効化する方法 root@acid:~# echo offline > /sys/block/sdc/device/state root@acid:~# cat /sy…
SATA って昔からホットプラグ可能なんですよね。 マシンの電源を入れたまま、SATAのHDDをアンプラグしたり、プラグインしたり。 もともとSATAってホットプラグ対応なはず。eSATA とかもその流れだったような。 Linuxで抜き差しするときどうするのかな。 Wind…
bashで乱数を扱おうともったら どうするんだろうと思って調べたら $RANDOM なる環境変数を発見した 環境変数 RANDOM の使い方 単純にecho するだけでいい。 echo $RANDOM 実際にどうなるか試してみよう takuya@:~$ for i in {1..10}; do echo $RANDOM ; done…
gdisk をコマンド(スクリプト)やシェルから使うには gdisk コマンド ライン版 sgdisk がある。 sgdisk、これを使うことで コマンドからまとめてディスクのボリューム操作を毎回なんども再実行できるようになる。 なぜこんなことを調べたのか LVM の実験で…