タグ別アーカイブ: シェル

空のディレクトリをgit管理下に入れるワンライナー(empty directories)


背景

chefを利用する機会が増えてきて汎用的な社内クックブックを作る状況が増えてきた昨今、

knife コマンドでクックブックをジェネレートするコマンドを実行すると

$ knife cookbook create COOKBOOK_NAME -o site-cook-books

バババっと以下のように基本的なディレクトリ構成で出力されるが、幾つか のディレクトリがある。

COOKBOOK_NAME
├── CHANGELOG.md
├── README.md
├── attributes
├── definitions
├── files
│   └── default
├── libraries
├── metadata.rb
├── providers
├── recipes
│   └── default.rb
├── resources
└── templates
    └── default
        └── sudoers.erb
attributes/, definitions/, files/default/, libraries/, proiders/, resources/ がそれぞれ空のディレクトリになっている

gitは空のディレクトリを管理下に置けないので、Railsに習って .keep という空ファイルを置くことにした。
(全てのリポジトリでディレクトリ構成の見た目を変えたくなかったので空のディレクトリもgit管理下に置くことにした。)


空のディレクトリに.keepを作るシェルのワンライナー

参考:
find/xargsを使った検索に便利なコマンド一覧

findで空のディレクトリを検索して、空のディレクトリに対して.keepという空ファイルをtouchで作成する。
Redhat系とUNIX(BSD)系では使えるオプションが違うようなので以下の用プラットフォームに合わせて実行する。

  • Redhat系
    -i オプションを指定することで ‘{}’で xargsに渡される値を取得できる
$ find . -type d -empty -print0 |xargs -0 -i touch '{}'/.keep
  • Unix系(MacOS)
    -Iオプションで % という文字列を xargsに渡される値として参照できるようにする
$ find . -type d -empty -print0 |xargs -0 -I % touch %/.keep

シェルのreadlineについて改めて調べてみた


ターミナルで作業していると、よくカーソルを行頭・行末へ一気に移動したいとか
入力した文字列をコピーしておきたいとか。。。などなど、色々やりたくなります。

そこで、、、readline だ!!!ということで色々とショートカットを調べてみました。

よく利用するショートカット達

C-a  行頭へ
C-e  行末へ
C-j  改行

C-b  一文字戻る
C-f  一文字進む

C-h  Backspace
C-d  delete

C-k  現在のカーソルから行末までをyank
C-u  現在のカーソルから行頭までをyank
C-w  単語単位でバックスペースでyankする
C-y  ペースト

C-l  画面をクリア

C-p  コマンドヒストリを戻る
C-n  コマンドヒストリを進める

C-r  コマンドヒストリをインクリメントサーチ(向きバック)
C-s  コマンドヒストリをインクリメントサーチ(向きフォワード)

注意)

  • man readline でその他のコマンドが調べられます。
  • 自分はzshの環境を使って実際に動かして試したので、各々の環境で少し違う点が出てくるかもしれません。