ログインシェルの場合(e.g. 直接ログイン、sshログイン時、bash --login、su -) $HOME/.bash_profile が読み込まれる。 上記がない場合、$HOME/.bash_login が読み込まれる。 上記がない場合、$HOME/.profile が読み込まれる。 上記から $HOME/.bashrc が読み込まれることが多い。 非ログインシェルかつ対話モード(e.g. 入出力が端末)の場合 $HOME/.bashrc が読み込まれる。
あっさりできるかと思ったら意外に時間が掛かってしまったので纏めておく。 ポイントは2点で、 export -f 関数名 しておく xargsではbash -c "コマンド" を実行する で行けた。 例 パスにそのbasenameした結果をTAB区切りで連結しただけの文字列をechoする関数を定義する。 $ function echo_with_basename(){ > echo -e "$1\t`basename $1`" # -eオプションが無いと\tがTABに変換されない > }この関数を次のようにファイルリストを出力した結果をパイプで繋ぎxargsに渡す。 $ cat filelist.txt /home/wrist/data/A00000.txt /home/wrist/data/A00001.txt /home/wrist/data/A00002.txt /home/wrist
Bash でシェルスクリプトを勉強していくと出会うのが : (コロン)という名前の組み込みコマンド。このコマンドは何もしないコマンドです。 こんなコマンドの存在は不思議だなと思う反面、C言語にも void という型があったり(関数のような形で存在するのは JavaScript とかですね)、LaTeX にも \relax があったり、何もしない命令というものは機械語の NOP からある普通のものです。 この Bash の : の使い道についてまとめてみました。 何か書かなければならないところに仮置きする 例えば「ここに制御構造を置くんだけど、この節に入るものは後で書くんだけどな〜」といった場合、制御構造の節の中に何も書かないと Bash は構文エラーとなります。
November 10, 2014 TL;DR シェルスクリプトでbackquoteを見つけたら オールドスタイルおじさんを探し、矯正させよう GNU Bash-2.05 manual When the old-style backquote form of substitution is used, backslash retains its lit- eral meaning except when followed by $, `, or \. The first backquote not preceded by a backslash terminates the command substitution. When using the $(command) form, all characters between the parentheses make up the comm
複数ホストに ssh しながら tail -F するときにはこうしたらどう? いろいろ方法があるとおもうのですが、以下のようなシェルスクリプトですませるのはどうでしょうか? #!/bin/bash function kill_children { # jobs -l | perl -ne 'print "kill $1\n" if /^\S+?\s+(\d+)/' | sh; pkill -P $$; wait; } trap "kill_children" EXIT HOSTS="192.168.1.1 192.168.1.2" for host in $HOSTS do ssh $host tail -F /service/foo/log/main/current & done wait ちょっと箇条書きで解説すると以下のようなことをおこなっています。 & でバックグラウンドジョブをは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く