前文: これまでシェル bash スクリプトを作成したことはありません。まず第一に、これがこの作業に適したツールであるかどうかさえわかりません。適していない場合は、何よりもまず、あなたの意見では最良の代替手段は何であるかを教えてください。
コンテクスト: 私は Web サイトをセットアップするたびに、同じタスクを頻繁に繰り返し実行します。1 つまたは 2 つのコマンドを実行して、これらのタスクを自動化したいと考えています。更新: 共有ホストは Unix ベースです。ローカル マシンは Mac OS X なので、これも Unix ベースです。
例として、私がよく行うタスク (コマンド) をいくつか示します。
SCP-1000: いいえ
scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile
scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig
SSH 直接:
ssh [email protected]
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos
編集、検索、置換、保存、終了:
pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"
私の知る限りでは、これらはスクリプトに実行させたいさまざまな種類のタスクです。
質問1: bash スクリプトは SCP、SSH を直接処理し、EDIT FIND REPLACE SAVE AND EXIT を実行できますか?
質問2: スクリプトを実行するユーザーにいくつかのパラメータを尋ね、それらのパラメータを使用していくつかのファイル内に配置する必要があります (存在する特定のキーワードを置き換えます)。これは実現できますか?
質問3: ファイルをリモートにコピーしてリモートで直接編集するべきでしょうか、それとも、ファイルをローカルで取得して「一時的な場所でローカルに編集」してからサーバーに配置するべきでしょうか? 2 番目の方がはるかに複雑だと思います。
参考にできる例はありますか?
よろしくお願いします
答え1
簡単に答えると、すべて「はい」です。
いくつか例を挙げます。以下は、ローカルの bash スクリプトをリモート マシン上で実行するコマンドの例です。リモートにコピーする必要がないことに注意してください。
ssh user@remote_pc 'bash -s' < local_file.sh
これは非常に単純なので、これを処理するためにスクリプト全体を書くほどの価値はないかもしれませんが、スクリプトで処理したい場合は、スクリプトを使用して調整することもできます。ただし、これを機能させるには、passwordless login
ssh 接続を設定する必要があります。設定しないと、スクリプト内の ssh/scp コマンドは、リモート ユーザーのパスワードの入力を待機するため停止します。
編集などに関しては、Unixには究極のストリームエディタがありsed
、まさにこれを行います。たとえば、コマンド
sed 's/a/A/g' old_file.txt > new_file.txt
小文字をa
大文字に置き換えA
、出力を新しいファイルに配置します。これも簡単にスクリプト化できます。
パラメータに関しては、シェルスクリプトはファイルからパラメータを読み込むことも、環境からパラメータを問い合わせることもできます。ユーザーにログイン名を尋ねる必要はありません。
echo $USER
whoami
スクリプト内からでもそれが実行されます。自宅住所echo $HOME
などについても同様です。
3 番目の質問については、私の最初の回答がその答えにもなっていることを願っています。最初のコマンドを使用すると、ローカルで編集したスクリプト ファイルをリモート サーバーにコピーしなくても実行できます。
*Nixの世界へようこそ。あなたの望みは私の命令です。
すみません、忘れていました:このコマンド
export -p | more
どこでも利用可能なすべてのローカル変数を表示します(技術的には、 輸出された)。