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

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
ja:bash [2017/08/30 04:03]
kota
ja:bash [2017/08/30 04:12] (現在)
kota
ライン 5: ライン 5:
  
   * [[:​ja:​bash:​stdouterror|標準出力・標準エラー出力]]   * [[:​ja:​bash:​stdouterror|標準出力・標準エラー出力]]
-  *  +  * [[:ja:bash:​WantToDo1|scriptがあるディレクトリの絶対パスをとる]] 
- +  * [[:ja:​bash:​WantToDo2|1日前の日付を取得]] 
- +  * [[:ja:bash:WantToDo3|aliasの一時解除]] 
-===== 標準出力・標準エラー出力 ===== +  * [[:​ja:​bash:​WantToDo4|連番ファイルの後半だけ削除]] 
- +  * [[:​ja:​bash:​WantToDo5|変数から一部を抜き出す]] 
-File Descriptorは +  * [[:ja:bash:WantToDo6|macでsshのホスト名の補完など: bash-completion]] 
-  * 標準出力    +  * [[:ja:bash:WantToDo7|変数を使って連番を生成]]
-  * 標準エラー出力 ​+
- +
-===== 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