以前のリビジョンの文書です
====== bashの備忘録 ====== ---- * [[:ja:bash:stdouterror|標準出力・標準エラー出力]] * [[:ja:bash:WantToDo1|scriptがあるディレクトリの絶対パスをとる]] * [[:ja:bash:WantToDo2|1日前の日付を取得]] * [[:ja:bash:WantToDo3|aliasの一時解除]] * [[:ja:bash:WantToDo4|連番ファイルの後半だけ削除]] * [[:ja:bash:WantToDo5|変数から一部を抜き出す]] * [[:ja:bash:WantToDo6|macでsshのホスト名の補完など: bash-completion]] * [[:ja:bash:WantToDo7|変数を使って連番を生成]] ===== 変数から一部を抜き出す ===== ''${PARNAME:OFFSET:LENGTH}'' によって変数の中から、指定した箇所(Offset)からある文字数(length)だけを抜き出してくることができる。\\ 例: <code bash> HOGE="abc123def" ## 頭から3文字を抜き出して新しい変数FUGE1に詰める FUGE1=`echo ${HOGE:0:3}` ## 2文字目から最後までを抜き出す(LENGTHを省略すると最後まで指定したことになる) FUGE2=`echo ${HOGE:1}` </code> ---- ===== macでsshのホスト名の補完など: bash-completion ===== [[http://qiita.com/kotarella1110/items/34ba059d076f4148bebc|こちらのサイト]]を参考にさせてもらった。 <code bash> sudo port install bash-completion </code> でインストール。 これだけでは動かなくて、あと数ステップ必要だった。 * .bash_profileの末尾に以下を追加 <code bash> if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then . /opt/local/etc/profile.d/bash_completion.sh fi </code> * Terminal.appの設定変更 * "ターミナル" > "環境設定" > "プロファイル" > "シェル" で"コマンドを実行"にチェックを入れ"/opt/local/bin/bash -l"を入力 * mac port で入れたbashを起動させるように設定 * "ウインドウを閉じる前の確認"のリストに"bash"を追加 * ↑実はこれをしなくても、代わりに"ターミナル" > "環境設定" > "一般" で"開くシェル"を"コマンド"で"/opt/local/bin/bash"としておけば良い。 ===== 変数を使って連番を生成 ===== 例えば1から10までの連番を生成してループを回したい時、 <code bash> for i in {1..10} do ... </code> の様にして連番生成、ループ処理を行うことができるが、この範囲を変数として <code bash> Start=1 End=10 for i in {${Start}..${End}} do ... </code> としてもiに{1..10}という文字列が格納されるだけで、展開されて連番を生成してくれない。 こんな時は、以下の様に"eval echo " を使う。 <code bash> Start=1 End=10 for i in `eval echo {${Start}..${End}}` do ... </code> これで、先のように1から10までの連番が生成される。