git bash windows が便利


そういうタイトルのページがいくつか出てくるが、自分なりに、補足してみたいと思う。

windows で git を使う場合には、git for windows をインストールすると思うが、インストール方法は、説明必要?と思ったし、他に説明しているサイトもたくさんあるので割愛する。

bash が使えるのが便利

インストールすると、スタートメニュー > git に Git Bash というメニューができる。

起動すると、dos プロンプトのようなものが起動する。bash という UNIX 系のシェルだ。ここから git を呼び出すことになる。(元々 UNIX に搭載されていた、ボーンさん作の sh (ボーンシェル) を gnu が作りなおして、ボーンアゲインシェル、という名前にしたのだったと思う。)

まず、bash の機能が使えるのが便利な点だろう。

よく使うものとしては、ヒストリー機能(history、!history番号・!コマンド名による実行、ctrl+n/ctrl+p (またはカーソルキー)による履歴検索・編集、ctrl+r による履歴検索など)やシェルスクリプト(バッチファイルのより強力なもの)だろう。

UNIX 系のコマンドが使えるのが便利

次に便利なものとして、あわせてインストールされる、UNIX系互換のコマンド群だろう。大昔に作られたものだが、今でも使えるものが多い。

よく使うものをあげて見る。

bash に組込まれているコマンド

  • alias (コマンドの別名を定義する)
  • cd (ディレクトリの移動)
  • for (ループ。コマンドではないかもしれない。for i in *.txt; do 何かのコマンド $i; done のようにして使ったりする)

非組み込みコマンド(/bin にインストールされるコマンド)

ls /bin とすると何がインストールされているかわかる。私がよく使うものを挙げてみたいと思う。(コマンドを実行する時 .exe は指定しなくてもよい)

  • base64.exe (base64 へのエンコード/からの復元)
  • basename.exe (フルパスから最後の要素、例えばコマンド名などの抽出)
  • bash.exe (bash 本体)
  • bunzip2.exe (bzip 形式の圧縮ファイルの解凍)
  • bzcat.exe (bzip 形式の圧縮ファイルを解凍して、標準出力に出力)
  • bzip2.exe (bzip 形式に圧縮)
  • cat.exe (ファイルの表示、結合)
  • cp.exe (ファイルのコピー)
  • cut.exe (cut -f 1 -d ‘,’ などのようにして、ファイルの指定した列の抽出)
  • date.exe (日付の表示。date +%y%m など)
  • dd.exe (ファイルのコピー。例えば、私は、dd if=/dev/urandom  of=~/hoge bs=1 count=100 のようにして100バイトの乱数ファイルを作ったりする)
  • df.exe (disk free space)
  • diff.exe (ファイルの差分。実際は、vimdiff を使うことが多いか。)
  • dirname.exe (ディレクトリ名の抽出)
  • dos2unix.exe (改行コードを dos 形式から unix 形式に変換)
  • du.exe (disk usage。du -s * など)
  • echo.exe (文字列や環境変数などの表示)
  • env.exe (環境変数を設定してから実行)
  • file.exe (何のファイルか調べる)
  • find.exe (ファイル検索。-exec オプションなどでマッチしたファイルにコマンド実行させたり、-delete オプションでファイルを削除したりもできる)
  • grep.exe (正規表現による文字列検索)
  • gzip.exe (gzip 形式でファイルを圧縮)
  • head.exe (ファイルの先頭の表示)
  • iconv.exe (文字列変換。sjis->utf-8など。)
  • kill.exe (プログラムの終了)
  • less.exe (標準入力やファイルを見る。上下に移動可能。F を押すと、ファイルの変更を追尾)
  • ln.exe (ファイルの別名を設定。通常 ln -s かな?)
  • ls.exe (ファイルの一覧)
  • md5sum.exe (md5 の計算)
  • mkdir.exe (ディレクトリの作成)
  • mktemp.exe (テンポラリファイルの作成)
  • mv.exe (ファイルの移動)
  • openssl.exe (openssl)
  • ps.exe (実行中プロセス一覧)
  • rm.exe (ファイルの削除)
  • rmdir.exe (ディレクトリの削除)
  • sed.exe (stream editor。sed -i .bak s/hoge/HOGE/g ファイル名のようにしてコマンドラインでファイルを編集)
  • sftp.exe (ファイル転送)
  • sh.exe (シェル本体)
  • sha256sum.exe (sha256 の計算)
  • sort.exe (ファイルのソート)
  • ssh.exe (リモートログイン、リモート実行、ポートフォワード、socks proxy サーバ)
  • ssh-add.exe (ssh の identity file の登録)
  • ssh-agent.exe (ssh の identity を自動入力。pagent のようなもの、というか pagent が ssh のエージェントか?)
  • ssh-keygen.exe (ssh のキー作成)
  • tail.exe (ファイルの末尾を表示。-f オプションでファイルの変更を追尾)
  • tar.exe (ファイルをまとめる。-z や -b オプションでファイルを圧縮)
  • tee.exe (画面に出力しつつ、ファイルに落とす)
  • touch.exe (ファイルのタイムスタンプの更新)
  • truncate.exe (ファイルサイズをきりつめる。truncate -s0 などで 0バイトにしたりする)
  • uniq.exe (重複する行を一つにまとめる。sort が必要)
  • unix2dos.exe (改行コードを dos 形式にする)
  • unzip.exe (zip ファイルの解凍)
  • vim.exe (テキストエディタ)
  • vimdiff.exe (差分モードで vim を開く)
  • wc.exe (word count)
  • which.exe (指定したコマンドのフルパスを表示)
  • xxd.exe (バイナリ<-> ヘキサダンプ)

各コマンドについて、詳しくは、コマンド名 –help でヘルプを見たり、man コマンド名で google 検索すると linux 用の man ページなどが出てくるだろう。また、ブログの記事なども見つかるかもしれない。