Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
ja:bash [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:bash

以前のリビジョンの文書です



Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/parser/handler.php on line 1458

Warning: Declaration of syntax_plugin_note::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/lib/plugins/note/syntax.php on line 79

Warning: Declaration of syntax_plugin_note::render($mode, &$renderer, $indata) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/lib/plugins/note/syntax.php on line 101

Warning: preg_match(): Compilation failed: invalid range in character class at offset 3120 in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/parser/lexer.php on line 118
A PCRE internal error occured. This might be caused by a faulty plugin

====== bashの備忘録 ====== ---- * [[:ja:bash:stdouterror|標準出力・標準エラー出力]] * ===== 標準出力・標準エラー出力 ===== File Descriptorは * 標準出力    : 1 * 標準エラー出力 : 2 ===== scriptがあるディレクトリの絶対パスをとる ===== <code bash> FILE_DIR=$(cd $(dirname $BASH_SOURCE); pwd) </code> * $BASH_SOURCE : scriptの絶対パス * cd しているが、scriptの処理が終わった後には元のdirectoryに戻っている ===== 1日前の日付を取得 ===== <code bash> date -d '1 days ago' </code> とする。1をNに変えれば、N日前。 ===== aliasの一時解除 ===== \lsのように、コマンドの前に"\"をつければ良い。 ===== 連番ファイルの後半だけ削除 ===== file_0.txt\\ file_1.txt\\ ・\\ ・\\ ・\\ file_99.txt\\ があるうち、50−99までを削除したいとする。 ''ls -v file_* | tail -n 50 | xargs rm '' * ''ls -v file_*'' で数字順にls出力 * ''| tail -n 50''で前の出力の後ろ50を切り出す * ''| xargs rm''で前の出力をパラメータとして受け取り、rmに渡している はじめ、lsがaliasされてうまくいかなかったが"\ls"としてやるとうまくいった。 ===== 変数から一部を抜き出す ===== ''${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までの連番が生成される。

ja/bash.1504065809.txt.gz · 最終更新: 2017/08/30 04:03 by kota