Shell Script コマンド まとめ
基本
変数宣言
# =の左右は空白なし
# name ="MK" //NG
# name= "MK" //NG
# name = "MK" //NG
name="MK"
echo "My name is $name"
# コマンドの結果も変数に入れます
result=$(networksetup -getdnsservers Wi-Fi)
echo $result
比較
# [の右と]の左もスペースが必要です
1="pencil"
if [ "$1" = "pencil" ]; then
echo "Is Same"
else
echo "Is Not Same"
fi
なぜか$1にも""を使う理由は何も代入しないと、以下の結果になってしまいます、errorです
if [ = "pen" ]; then
Macで保存後ダブルクリックで実行
1.ファイルを.commandで保存、もしくは拡張子なし
2.
chmod +x myscript
スクリプト実行後Enterキーを押すまで窓を閉じない
# scriptの最後で
read -p "Press Return to Close..."
Wi-FiのDNSを切り替え
# 現在のWi-Fi DNS確認
networksetup -getdnsservers Wi-Fi
# Wi-Fi DNSをセット
networksetup -setdnsservers Wi-Fi $dns
# Wi-Fi DNSを削除
networksetup -setdnsservers Wi-Fi empty
ファイルをtar.gzにする
$ tar -czvf file.tar.gz ./folder
-c : 新しく作成する
-v : 出力
-f file.tar.gz : 対象
-z : gzipでfilterする
tar.gzを解凍する
$ tar -xzvf file.tar.gz
-x : 解凍
$ tar -xzvf my.tar.gz -C /home/vivek/backups/
-C : 解凍先を指定する(実際は解凍する前にそっちに移動する)
tar.gzの中身を見る
tar -ztvf file.tar.gz
ファイルをリモートにあげる
ファイルをアップロード
$ scp file.txt remote_username@XX.XX.XX.X:/remote/directory/myfolder
ファイルの名前を変更
$ scp file.txt remote_username@XX.XX.XX.X:/remote/directory/myfolder/newFile.txt
Directoryごとをリモートにあげる
$ scp r /folder/project remote_username@XX.XX.XX.X:/remote/directory/
リモートからローカルへ
scp remote_username@XX.XX.XX.X:/remote/directory/file.txt /local/directory
SSH 関連(要復習確認:X)
連続コマンドを実行したい場合
ssh -T XXX.XX.X.XXX << `EOF`
cd /myfile/project/
pwd
ls -ll
mv file newFile
EOF
ローカル変数は上記のやり方で使えないので注意
NAME="myProject"
ssh -T XXX.XX.X.XXX << `EOF`
echo "This is my ${NAME}"
EOF
結果
This is my
毎行ずつならできます
ssh -T XXX.XX.X.XXX << `EOF`
ssh -T XXX.XX.X.XXX echo "This is my ${NAME}"
リモートにファイルあるかどうか
TARGETZIP="myfile.tar.gz"
ssh -T XXX.XX.X.XXX "[ -f /file/folder/$TARGETZIP ]"