Linuxコマンド・bashの使い方実例

Linuxコマンド・bashの使い方の実例を紹介します。
管理人は某企業で、一応SEとして働かせていただいております(本業は組み込み系)。
まだまだ未熟者ですが、皆さんのお役に立てたら幸いです。

gitサーバの構築(リモートリポジトリの作成)方法
サーバはLinux(ubuntu)、クライアントPCはWindowsを例に説明します

サーバ(ubuntu)での作業:
sudo apt-get install git ←gitのインストール
sudo apt-get update ←sshのインストール(サーバにインストール済みなら不要)
sudo apt-get install openssh-server ←sshのインストール(サーバにインストール済みなら不要)
sudo apt-get install  ssh ←sshのインストール(サーバにインストール済みなら不要)
mkdir /home/test/git_srv ←リモートリポジトリ用のディレクトリを作成
cd git_srv ←リモートリポジトリ用のディレクトリへ移動
git init --bare --shared  ←リモートリポジトリを作成。各オプションの解説は以下。

--bareはベアリポジトリの指定。作業ディレクトリを持たないことを意味する。つまりサーバではあくまでリモートリポジトリの管理情報を持つだけで、リポジトリのファイルへの変更はできないということ。リポジトリへの変更はクライアントPCから行います。
--sharedはリポジトリを他のユーザと共有するという意味。

クライアントPC(Windows)での作業 :
git for windowsをインストール
git bashを起動 ←以下はgit bashのターミナルでの操作。
mkdir git_test ←ローカルリポジトリ用のディレクトリを作成
cd git_test ←ローカルリポジトリへ移動
git init ←カレントディレクトリをローカルリポジトリとして初期化(カレントではなくディレクトリ指定も可能)
echo "gittest!!!!" > test.txt ←ローカルリポジトリに登録するテスト用ファイルを作成
git add . ←カレントディレクトリのファイルをインデックスへ登録
git commit ←インデックスへ登録したファイルをローカルリポジトリへコミット
git remote add gittest ssh://アカウント名:パスワード@サーバのIPアドレス/home/test/git_srv ←任意の名前「gittest」でリモートリポジトリにアクセスできるように設定(※1)
git push --set-upstream gittest master ←ローカルリポジトリの内容をリモートリポジトリへ反映(※2)

※1
gittestの箇所は任意の名前。git push時、この名前でアクセス情報の入力を省略できる。
アカウント、パスワードの箇所はサーバのssh通信時のアカウントとパスワードを設定。
サーバのIPアドレスはサーバ上でifconfig -aコマンドで確認できる。
ピンクの部分のパスは、サーバでgit initしたディレクトリを指定する。

※2
--set-upstreamは-uと省略して表記可能。
gittestの箇所はgit remote addで指定した任意の名前
masterはブランチ名。一般的にメインの安定ブランチを意味する。

クライアントPC(Windows)へ
サーバにあるリモートリポジトリのファイルを取得する方法:

git clone ssh://アカウント名:パスワード@サーバのIPアドレス/home/h/git_srv

git_srv/というフォルダができ、その下にtest.txtがあれば成功です。
なお、gitはリポジトリ単位で取得するので、細かいファイル単位で取得することはできません。

余談:
コマンドの説明書きが多くて読みにくかったらすみません。
表形式とかで書けたらいいのになぁ、ブログの書き方はほぼ無知なのです。。(そこには興味が無くて)
 
スポンサードリンク
スポンサードリンク

sedコマンドは文字列置換が便利です。
ストリームエディタ(つまりsedのこと)でも、複数行にまたがる置換ができます。
これを利用し、スクリプトから、別のスクリプトをカスタマイズする実例です。
スクリプトをアウトプットとする、スクリプト(ややこしい)の処理を作る時などに使えます。
 
置換対象スクリプト:target.sh
#!/bin/bash
echo "-------teststart!!!-------"
echo "target1"
echo "target2"
echo "target3"
echo "-------testend!!!-------"
exit 0

置換実行スクリプト:sedtest.sh
#!/bin/bash
sed -e "s/echo \"target2\"/if [ $? -eq 0 ]; then\n\techo \"success\"\nfi/g" -i.bak target.sh
exit

置換実行後スクリプト:target.sh
#!/bin/bash
echo "-------teststart!!!-------"
echo "target1"
if [ 0 -eq 0 ]; then
echo "success"
fi
echo "target3"
echo "-------testend!!!-------"
exit 0
 
解説:
ピンク色の部分が置換対象文字列。黄色の部分が置換後文字列。
エスケープシーケンス「\n」を使うことにより、複数行の文字列に置換することができます。
「\t」はタブです。echo文をif文に置換しているので、一応インデントを意識しました。
その他の「\」は「"」のエスケープです。
-i.bakは、sedコマンドのオプションです。「指定されたファイルを直接編集する。拡張子が指定されれば、その拡張子を付加してバックアップファイルを作成する。」という意味です。そのため、実行後はtarget.sh.bakというファイルがバックアップとして作成されます。
この-iオプションを知らないためか、直接編集したいのにわざわざ別ファイルに出力してコピーして置き換える処理とかたまに見ますけど、-iオプションを使ったほうがスマートです。

これにより、マスターのスクリプトを作っておいて、状況に応じて異なるスクリプトを出力するなんてことができます。

余談:
sedって便利ですが、しばらく使ってないと使い方わからなくなる典型ですよね。オプションに色々指定しなきゃいけないので。
備忘録も兼ねて書いてます。
 

当サイトに掲載されている広告について

当サイトでは、第三者配信の広告サービス
(Googleアドセンス、Amazonアソシエイト、
A8.net、楽天)などを利用しています。

このような広告配信事業者は、
ユーザーの興味に応じた商品や
サービスの広告を表示するため、
当サイトや他サイトへのアクセスに関する情報
『Cookie』(住所、氏名、電話番号、
メールアドレスは含まれません)
を使用することがあります。

またGoogleアドセンスに関して、
このプロセスの詳細やこのような情報が
広告配信事業者に使用されないようにする
方法については、こちらをクリックし
てください。

当サイトが使用しているアクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール
「Googleアナリティクス」を利用しています。
Googleアナリティクスはトラフィックデータの
収集のためにCookieを使用しています。
トラフィックデータは匿名で収集されており、
個人を特定するものではありません。

この機能はCookieを無効にすることで
収集を拒否することが出来ますので、
お使いのブラウザの設定をご確認ください。
この規約に関して、詳しくは
こちらをクリックしてください。

当サイトへのコメントについて

当サイトでは、スパム・荒らしへの
対応として、コメントの際に使用された
IPアドレスを記録しております。

これはブログの標準機能としてサポート
されているもので、スパム・荒らしへの対応以外に
このIPアドレスを使用することはありません。

また、メールアドレスとURLの入力に
関しては、任意となっております。
全てのコメントは管理人が事前に
その内容を確認し、承認した上での
掲載となりますことをあらかじめご了承下さい。

加えて、次の各号に掲げる内容を含む
コメントは管理人の裁量によって承認せず、
削除する事があります。

  • 特定の自然人または法人を誹謗し、中傷するもの。
  • 極度にわいせつな内容を含むもの。
  • 禁制品の取引に関するものや、他者を害する行為の
    依頼など、法律によって禁止されている物品、行為の
    依頼や斡旋などに関するもの。
  • その他、公序良俗に反し、または管理人によって承認
    すべきでないと認められるもの。


著作権について

当サイトは著作権の侵害を目的とする
ものではございません。
使用している版権物の知的所有権は
著作者・団体に帰属しております。


著作権や肖像権に関して問題がございましたら
お手数ですがこちらからご連絡下さい。

著作権所有者様からの警告及び修正・
撤去のご連絡があった際には迅速に
対処させて頂きます。

2016年6月4日 管理人

↑このページのトップヘ