
はじめに
生産性やチームのリクルートに関係なく、車は常に高速になります。 人生の厳しい真実。 一方、同じアクションを何度も実行する場合は、マシンを苦しめないでください。 多くの時間、労力、エネルギーを要する単調なコマンドを入力するのではなく、
bash
(お気に入りのプログラミング言語)でスクリプトを作成し、毎回このスクリプトを呼び出します。 そして、スクリプトがその仕事をする間、宇宙船が私たちの宇宙の広がりを耕す方法について夢を見ることができます。
前回の記事では、
bash
プログラミングの基礎について説明しました。 今日は、習得した知識を実践します。
自動化計画
- クイック
diff
- Fast
diff
+ Jira API - クリーニング
_dist
- 多数のリポジトリをアップ
- 多数のリポジトリのクローニング
- 便利なエイリアス
このリストには、1日に数回、または1時間に1回実行するタスクが含まれています。 一般に、日常的なプロセスの自動化は創造的で純粋に個人的なプロセスです。
あなたが思い付くことができるすべてを自動化することができます。 記事の最後に、自動化のための独自の計画があり、自動車が苦しくなることを願っています。 香り豊かなコーヒーを1杯飲んで、座ってください。
bash
を使用すると、自動化の世界に魅力的な旅ができます。
クイック差分
プロジェクトの作業ではGitを使用します 。
diff
作成はかなり一般的なタスクです。 特定のブランチの
diff
を作成するには、次のコマンドを実行する必要があります。
git diff origin/master origin/<branch-name> > "${HOME}/diff/diff-<branch-name>.diff"
<branch-name>
diff
を作成するブランチの名前
このアプローチの欠点
- コマンドを入力する必要があるたびに
- 採用プロセス中のエラーの可能性が高い
- 覚えにくい
これらの欠点は
bash
で簡単に解決できます。 理想的には、すべてが次のように機能するはずです。
- チームを入力しました
- 彼らは彼女に枝の名前を与えました
-
diff
チームの最終ビュー
gdd <branch-name>
自動化
これで、長いコマンド行ではなく、キーボードで
./fast_diff.sh <branch-name>
と入力するだけです。 ブランチの名前を指定するのを忘れた場合、このスクリプトはこれを親切に知らせてくれます。
最後のタッチ
やめて しかし、チームの最終的な外観についてはどうでしょう。 実際、現在の形式では、このスクリプトはあまり便利ではありません。スクリプトが配置されているディレクトリに関連付けられています。
実行可能ファイルへの相対/絶対パスを毎回書き込むのではなく、実行可能ファイルに対して個別のコマンドを作成する方法をより詳細に検討してみましょう。
ホームディレクトリ(
~
)の各ユーザーには、
bin
サブディレクトリがあります。 ない場合は、作成できます。 実行可能ファイルを保存できます。 便利なのは、そのようなファイルは名前でアクセスでき、それらへの相対/絶対パスを指定する必要がないということです。 このディレクトリに、
diff
を作成する
gdd
ファイルを配置します。
#!/bin/bash "${HOME}/htdocs/rybka/tools/fast_diff.sh" "$@"
いくつかの重要なポイント:
- ファイルは拡張子を指定するために受け入れられません。
- 属性
x (chmod +x <filename>)
は、ファイルに対して明示的に指定する必要がありますx (chmod +x <filename>)
。
-
bin
ディレクトリが$PATH
変数にない場合は、明示的にPATH="${PATH}:${HOME}/bin"
に追加する必要があります。
このファイルを使用可能にするには、ターミナルを再起動します。
diff
を作成するには、次のコマンドを実行するだけです:
gdd <branch-name>
コマンドごとに
bin
ディレクトリに個別のファイルを常に作成するのはあまり便利ではありません。 シンボリックリンクを使用してこれを最適化できます。
ln -s "${HOME}/htdocs/rybka/tools/fast_diff.sh" gdd
Fast diff + Jira API
Jiraタスクマネージャーまたは作業でAPIを提供する他のタスクマネージャーを使用する場合は、さらに先に進むことができます。 たとえば、Jira APIを使用して、
diff
を特定のタスクに添付できます。 これにはcURLも必要です。
決定アルゴリズム
- スクリプトを呼び出します
- タスク
id
を渡します - タスク
id
転送されない場合、ユーザーにメッセージを表示します - すべてが正しい場合は、
diff
を生成してタスクに添付します
チームの最終ビュー
gdd_jira <issue_id>
自動化
お気づきかもしれませんが、ブランチ名を指定する必要はありません。 gitコマンドを使用した簡単な操作を使用して取得します。
branch=$(git rev-parse --abbrev-ref HEAD)
クリーニング_dist
はじめに、
_dist
ディレクトリが何を担当
_dist
ているかを把握しましょう。 これは、ビルドシステムの起動後( Grunt 、 Gulpなど)、
CSS
、
JavaScript
ファイル、あらゆる種類のテンプレート( Jade / Pug 、 Handlebarsなど)およびその他のファイルが置かれる場所です。 このディレクトリは
_dist
と呼ばれる
_dist
はありません。 バリエーションが可能です。

プロジェクトの1つにGruntを使用します。 多くの場合、私たちのチームは、Gruntが一部のファイルの変更に常に気付かないという問題に遭遇します(問題は主にLessファイルにあります)。 この状況を修正するには、トピックの1つまたはすべてのトピックの
_dist
ディレクトリを一度にクリアする必要があります。 はい、この問題はGruntの助けを借りて解決できます。 このディレクトリをいつでも手動で削除することもできます。 しかし、
bash
の場合ほど効率的で便利ではありません。 これらのディレクトリの数(
_dist
)は1
_dist
2
_dist
、10でも20でもありません。 たくさんあります。 スクリプトの主な要件は、余分なラッパーや依存関係を不必要に使用しないことです。
bash
を使用しないオプションを検討してください。 この問題を解決するために、シェルのすべての力を使用します。
find <path-to-themes> -type d -name "_dist" | xargs rm -rfv
<path-to-themes>
-すべてのトピックが置かれているディレクトリへのパス
このアプローチの欠点は、
diff
を作成するタスクの場合に引用したものとほぼ同じです。 さらに、この場合、
_dist
ディレクトリを削除する必要がある特定のトピックを指定する方法はありません。
決定アルゴリズム
- スクリプトを呼び出します
- トピック名が転送されていない場合は、すべてのトピックの
_dist
ディレクトリを削除します - トピック名が転送された場合、特定のトピックの
_dist
ディレクトリを削除します
チームの最終ビュー
clean_dist [<theme_name>]
自動化
多数のリポジトリをアップ

大規模なプロジェクトで作業していると想像してください。 このプロジェクトには、開発していないが最新の状態を維持するために必要なサードパーティのリポジトリ用に予約されたディレクトリがあります。 もちろん、これらのリポジトリが2つまたは3つある場合、これはそれほど大きな問題ではありません。 ここで私は主張しますが。 そして、あなたがそのようなリポジトリ10-15を持っているなら、この数字は絶えず成長しています。 その結果、あなたは彼らをフォローする時間がないか、サポートに不釣合いな時間を費やすことができません。 このタスクを自動化しないのはなぜですか。
決定アルゴリズム
- リポジトリのあるディレクトリに移動します
- リポジトリが
master
ブランチにあることを確認します - リポジトリが
master
ブランチにない場合、git checkout
実行します -
git pull
重要なポイント 。 リポジトリが
master
ブランチ上にある場合でも、それが最新であることを確認することはできません。 これに基づいて、とにかく
git pull
を行います。
チームの最終ビュー
up_repo
自動化
多数のリポジトリのクローニング
このタスクは、以前の自動化ポイントと密接に関連しています。 エンドユーザーが実際に前のチームを使用できるようにするには、
bash/core/vendors
に配置されるサードパーティリポジトリのセットを提供する必要があります。 npmモジュールと同様に、このリポジトリのセットはメインリポジトリに付属しません。 ユーザーが行う必要があるのは、コマンドを実行し、リポジトリが複製されるまで待つことだけです。
決定アルゴリズム
- リポジトリのリストは配列として与えられます
- この配列でループを開始します
- 1つのベンダーに複数のリポジトリがある場合は特に注意を払います
- 追加のチェックを実施します
-
git clone
実行する
チームの最終ビュー
clone_repo
自動化
便利なエイリアス
読者にいくつか質問があります。 自分に正直に答えなければなりません。 このコマンドはどのくらいの頻度で使用しますか?
git branch
このチームはどうですか?
git status
しかし、このチーム?
git push origin <branch-name>
このチームはどうですか?
ps aux | grep <user-name>
そうです、このリストは無限に続くことができ、誰もが自分のものを持っています。 そして、予想外に、洞察が私たちにやってくる:

そうだね。 頻繁に使用するチームの場合は、エイリアスを作成します。 ここに、私が使用しているエイリアスの小さなリストを示します。
設定したエイリアスを確認するには、パラメータなしで
alias
コマンドを実行するだけです。
エイリアスを置く場所
ほとんどの場合、ユーザーのホームディレクトリにある
.bashrc
、そのような目的に使用されます。
.gitconfig
というファイルもあります。このファイルには、
git
ためのエイリアスを追加できます。
夜間にエイリアスを変更しないでください
エイリアスは強力なツールです。 パスワードの場合と同様、ここでのみ。 エイリアスを夜遅く変更しないでください。 ある晴れた夜、エイリアスの1つを変更して忘れました。 翌日、何も機能しなかった理由を解明するために半日費やしました。
結論の代わりに
bash
プログラミングの基本を理解し始めるとすぐに、私を訪問した最初の考えは「やめなさい、これはシステム管理者にとってもっと必要なことです...」。 しかし同時に、私は日常の日常業務から何らかの形で自分を救うためにこの知識が必要であることに気付きました。 システム管理者だけでなく、この知識が必要であると自信を持って言えます。 これらは、少なくとも何らかの形でリモートサーバーとやり取りするか、
OS *nix
ようなシステムで実行する
OS *nix
ます。 Windows OSで作業するユーザーにとっても、この知識は役に立ちます( Windows上のUbuntu、Windows 、 およびUbuntuの相互運用性 に関するBash )。 最も単純な場合、スクリプトはファイルに書き込まれたシステムコマンドの単純なリストにすぎません。 このようなファイルを使用すると、就業時間が短縮され、日常的なタスクを手動で実行する必要がなくなります。
例で使用されたいくつかの
bash
機能に関する便利なリンク:
以上です。 ご清聴ありがとうございました。 最後まで読んでくれた人、ありがとう。