Git BashをCygwinとして代用


はじめに

Git for WindowsにはGit Bashというプログラムが含まれています。Git Bash上ではCygwinのようにシェル環境と色々なUnixコマンドを利用できるようになります。
https://git-for-windows.github.io

既にCygwinに色々なパッケージを導入して利用している人にはメリットはほとんどありませんが、Cygwinが導入されていないWindows環境でもUnix環境を使えるため知っておいて損はないと思います。

まとめ

Git for Windowsを導入することにより、Git Bashで以下のような操作ができるようになります。

  • bash (パイプ、リダイレクト等も利用可能)
  • ls, cd, mv, cp, find, grep, awk, sed等の基本操作
  • git
  • ssh, scp
  • curl
  • vim (Huge版), vimgrep
  • perl

※「何故Perlがあって、PythonやRubyがないんだ!」と疑問をもつ人もいるかもしれませんが、単純にGitの一部がPerlで実装されているためPerlが含まれているからでしょう。

使用バージョン

  • Git for Windows v2.12

Git Bashの起動方法

起動方法は大きく二通りあります。

  • スタートメニューから「Git」→「Git Bash」を選択する。
  • デスクトップ上またはエクスプローラ上で右クリックして「Git Bash Here」を選択する。

右クリックから選択できる「Git Bash Here」は意外と便利なため、インストール時に有効にしておくことをお勧めします。

利用可能なコマンド一覧 (抜粋)

個人的にLinux環境などでよく使用するコマンドの一覧です。より多くのコマンドを知りたい人はlsコマンドで /mingw64/bin/usr/bin あたりを確認するとよいです。

  • awk
  • basename
  • bash
  • bunzip2
  • bzcat
  • bzip2
  • cat
  • cksum
  • clear
  • cd (bashシンタックス)
  • cp
  • curl
  • cut
  • date
  • dd
  • df
  • diff
  • du
  • echo
  • egrep
  • expr
  • file
  • find
  • fmt
  • git
  • grep
  • gunzip
  • gzip
  • head
  • kill
  • ldd
  • less
  • ln
  • ls
  • md5sum
  • mkdir
  • mktemp
  • mv
  • nohup
  • od
  • patch
  • perl
  • printenv
  • ps
  • pwd
  • rm
  • rmdir
  • scp
  • sed
  • sftp
  • sh
  • sleep
  • sort
  • ssh
  • ssh-agent
  • ssh-keygen
  • tail
  • tar
  • tee
  • test
  • timeout
  • touch
  • uname
  • uniq
  • unzip
  • vi
  • view
  • vim
  • vimdiff
  • wc
  • which
  • xargs
  • xxd
  • yes
  • zcat
  • zdiff

ファイルおよびディレクトリのパス指定

Git Bash上では、Cygwinと同様にUnix形式パスとWindows形式パスを指定できます。ちなみに共有ディスク(NAS)等のパスを指定して作業することもできます。

Unix形式パス

以下のようにルート直下のドライブ名(ex. C, D, E)を指定することができます。ちなみに ls / で確認してもドライブ名は表示されませんが、ちゃんとアクセスできます。

cd /c/Users/taro/Desktop

ちなみにCygwinだと /cygdrive 配下にCドライブ等の各ドライブのディレクトリが配置されているためGit Bashとはパスが異なります。

# Cygwinの場合
cd /cygdrive/c/Users/taro/Desktop

Windows形式パス

スラッシュでもバックスラッシュ(円マーク)のどちらでも指定可能です。ただしバックスラッシュの場合はエスケープする必要があります。

# スラッシュ
cd c:/Users/taro/Desktop

# スラッシュ×2
cd c://Users//taro//Desktop

# バックスラッシュ(エスケープあり)
cd c:\\Users\\taro\\Desktop

シングルクオートまたはダブルクオートで囲むことにより、Windows形式パスのバックスラッシュ版をエスケープ無しで記述することができます。

# バックスラッシュ(エスケープ無し)
cd "c:\Users\taro\Desktop"

# パスの最後に\があるとダブルクオートがエスケープされるためNG
cd "c:\Users\taro\Desktop\"  

ドラッグ&ドロップ

フォルダ等をGit Bash画面上にドラッグ&ドロップすると、現在のGit Bashのカーソル位置に「エスケープ無しのバックスラッシュ版Windowsパス形式」の文字列が貼り付けられます。
Bashのシェル上で使用する場合は、以下のような手順でドラッグアンドドロップを活用できます。

  1. 最初にダブルクオート2個を入力
  2. その中にカーソルを移動
  3. ファイルやフォルダをGit Bash画面にドラッグドロップ
  4. ダブルクオートの間にWindows形式パスがフルパスで貼り付けられる