| bash TIPS |
| 環境変数 |
# 設定
HOGEHOGE=aaa
export HOGEHOGE
# 1行で設定
HOGEHOGE=aaa ; export HOGEHOGE
|
| 変数 |
# 設定
hogehoge=aaa
# 取得
echo $hogehoge
|
| 起動時の引数 |
# 自身
echo $0
# 第一引数, 第二引数,
$1 $2 ... $9
#引数の数
$#
#実行プロセス
$$
|
| if |
if [ xxx ]; then
elif [ xxx ]; then
else
fi
|
| while |
while [ xxx ]; do
break
done
|
| foreach |
for tmp_value in array ; do
break
done
|
| for |
for (i=0; $i < 5 ; ++i) ; do
done
|
| 配列 |
a=(4 5 6)
echo ${a[0]} //4
echo ${#a[@]} //3個
|
| ヒアドキュメント |
cat << _EOT_
line1
line2
_EOT_
|
| 条件文 |
(AND)
if [ -f a.txt -a -f b.txt ]
または
if [ -f a.txt ] && [ -f b.txt ]
(0R)
if [ -f a.txt -o -f b.txt ]
または
if [ -f a.txt ] || [ -f b.txt ]
(NOT)
if [ ! -f a.txt ]
|
| 1項演算子 |
| -r |
読めるか |
| -w |
書き込めるか |
| -x |
実行できるか |
| -e |
存在するか |
| -s |
ゼロ以外か |
| -d |
ディレクトリか |
| -T |
テキストファイルか |
| -z |
ゼロか |
| -f |
通常ファイルか |
|
| コマンド実行結果 |
# リターンコード(呼び出したコマンドの戻り値)
$?
|
| リダイレクト |
# 上書き
> file
# 追加
>> file
# STDERRにリダイレクト(STDOUTを含まず)
2> file
# STDERRにリダイレクト(STDOUTを含む)
> file 2> &1
|
| グルーピング |
# {}でグルーピング
{
echo aaa
echo bbb
} >> file
|
| シェルファイル名などを取得 |
・ファイル名を取得
{$0##*/}
・拡張子を取得
{$0##*.}
・拡張子なしのファイル名を取得
{$0%.*}
|
| SMB共有をマウントしてrsyncでファイルコピー |
# SMB共有をマウントしてrsyncでファイルコピー
# cifs-utilsパッケージが必要
# sudo yum install cifs-utils
# マウントポイントが必要
# sudo mkdir /mnt/share
# マウント
sudo mount -t cifs //win-server/Share /mnt/share -o username=taro,password=password
# rsyncでコピー
# -a : アーカイブ(属性を可能な範囲で保持)= -rlptgoD
# -v : 詳細表示
# -u : 新しいファイルだけをコピーします。
# -r : 再帰的にコピー(recursive)
# -t : タイムスタンプを保持(times)
# -h : 人が読みやすい単位で表示(human-readable)
rsync -rtvh /data/ /mnt/share/
# アンマウント
sudo umount /mnt/share
|