##はじめに
コマンドラインで使用しているツールを簡単にではありますが、まとめてみようと思います。前回の続きです。私が知らない便利ツールはまだまだたくさんありますので、ここに掲載されているもの以外で便利なものがあれば、ぜひ教えてください。
この記事に貼り付けてあるリンクは、キーワードに関連する適切な場所へと誘導してくれます。非常に有効なので、ぜひ参照してみてください。
##powerline-bash
ShellのPromptを簡単に変更するためのツールが公開されています。oh-my-zshのものよりも手軽でいいかもしれません。
例えば、zshの場合は、 cd && git clone https://github.com/milkbikis/powerline-bash.git
で複製した後、以下のように書きます。
function powerline_precmd() {
export PS1="$(~/powerline-bash/powerline-bash.py $? --shell zsh)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
install_powerline_precmd
##ターミナル上での翻訳
###Command-Line-Fu
まずは、ワンライナーでも検索してみましょう。色々と出てきます。
git clone git://github.com/samirahmed/fu.git
cd fu/
sudo make install
sudo python setup.py install --record installRecords.txt
fu -a translate | w3m
###tmux
## 翻訳
# http://blog.takapra.com/index.php/2013/01/10/
# w3m でGoogle translate English->Japanese
tmux_moment_pane/
function gte() {
google_translate "$*" "en-ja"
}
# w3m でGoogle translate Japanese->English
function gtj() {
google_translate "$*" "ja-en"
}
# 実行方法
# google_translate "検索文字列" [翻訳オプション(en-ja 英語->日本語)]
function google_translate() {
local str opt cond
if [ $# != 0 ]; then
str=`echo $1 | sed -e 's/ */+/g'` # 1文字以上の半角空白を+に変換
cond=$2
if [ $cond = "ja-en" ]; then
# ja -> en 翻訳
opt='?hl=ja&sl=ja&tl=en&ie=UTF-8&oe=UTF-8'
else
# en -> ja 翻訳
opt='?hl=ja&sl=en&tl=ja&ie=UTF-8&oe=UTF-8'
fi
else
opt='?hl=ja&sl=en&tl=ja&ie=UTF-8&oe=UTF-8'
fi
opt="${opt}&text=${str}"
w3m +13 "http://translate.google.com/${opt}"
}
# 翻訳
# http://blog.takapra.com/index.php/2013/01/10/tmux_moment_pane/
# Ctrl-t a => alcの単語検索
# Ctrl-t m => manページを開く
# Ctrl-t g => google翻訳 (英語から日本語)
# Ctrl-t G => google翻訳 (日本語から英語)
# 一時ペインでコマンドを実行する
bind-key a command-prompt -p "Alc:" "split-window 'source ~/dotfiles/.zshrc.command; alc %%'"
bind-key m command-prompt -p "Man:" "split-window 'man %%'"
bind-key g command-prompt -p "Google Translate en->ja:" "split-window 'source ~/dotfiles/.zshrc.command; gte %%'"
bind-key G command-prompt -p "Google Translate ja->en:" "split-window 'source ~/dotfiles/.zshrc.command; gtj %%'"
なかなか便利そうですね。ちなみに、こちらの記事にある単語検索スクリプトが非常に便利そうだったのですが、規約違反だったみたいです。
##Paco
パッケージマネージャーになかったり、あったとしてもバージョンが最新出なかったりした場合、ソースからコンパイルして使うということが多いかと思います。
しかし、この場合、管理が面倒くさい(自動化されていない)という問題があります。今回紹介する Paco
は、その問題を解決してくれるかもしれません。
cd /usr/local/var
wget http://downloads.sourceforge.net/paco/paco-2.0.9.tar.gz
tar zxfv paco-2.0.9.tar.gz
cd paco-2.0.9
./configure --disable-gpaco
make
sudo make install
しかし、Macではインストールはできるものの使えないようです。
Note: Paco does not work on systems in which binaries are linked statically,
like FreeBSD or OpenBSD.
参考:「Paco」で「make uninstall」できないソフトを削除する
ただ、MacのHomebrew
では、 Formula
と呼ばれる簡単な定義ファイルさえ作ればソフトを管理対象にできるようなので、あまり問題は無さそうです。
ちなみに、 Homebrew
の補完は以下の様な感じで行えます。Homebrew
インストール時にダウンロードされるようです。
##brew_zsh_completion.zsh
$ cat ~/.zshrc | grep fpath
fpath=(~/.zsh/functions/ $fpath)
$ ln -s /usr/local/Library/Contributions/brew_zsh_completion.zsh ~/.zsh/functions/_brew
##csshX
Macで使える cssh
に csshX
というものがあります。複数のホストに同じような処理をさせたいときなどに便利です。
brew install csshx
csshX user1@192.168.0.1 user2@192.168.0.2 user3@192.168.0.3
###~/.ssh/config
config
ファイルに記述しておくと、様々なオプションを省略することができます。
##Sysinternals
Sysinternalsは、Windowsのシステム管理ツール群です。コマンドラインとは関係ありませんが、便利そうです。
Windows の標準ツールより一歩踏み込んで、さらに詳細な情報を収集したり、標準ツールより高機能です。例えば、 Procexp.exe
は、プロセス一覧を色付きで表示できます。
##位置情報
###exiftool
exiftool
とは、写真のEXIF情報を確認したり、編集したりするためのツールです。
brew install exiftool
では、試しに写真でもダウンロードして、色々と試してみましょう。
# 画像ファイルのダウンロード
$ w3m http://photozou.jp/photo/photo_only/651083/115404902
[a]でリンク先の画像を保存できます
# 画像ファイルを表示する
$ display 115404902_org.jpg
# 画像ファイルのEXIF情報を日本語で表示する
$ exiftool -lang ja 115404902_org.jpg
せめて学校の位置情報でも追加してみます。
exiftool -GPSLongitude=136.233105 -GPSLatitude=35.203918 115404902_org.jpg
学校に登校してみます。
function exmap (){
str=`exiftool -c "%.6f" -GPSPosition ${1} | sed -e 's/GPS Position//' -e 's/://' -e 's/E//' -e 's/S//' -e 's/W//' -e 's/N//' -e 's/ //g'`
open -a Google\ Chrome "https://maps.google.co.jp/maps?q=$str"
}
exmap 115404902_org.jpg
本当に学校に登校してみたい人は、こちらのアプリを使用してみるといいかもしれません。
###GeoIP
IPアドレスから地域判定する事ができるようです。
sudo port install py-geoip
sudo touch /opt/local/etc/GeoIP.conf
geoipupdate
curl ifconfig.me | xargs geoiplookup
どうやらデータベースが必要みたいです。
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mv GeoLiteCity.dat /opt/local/share/GeoIP/GeoIPCity.dat
###wi-fi_location
無線LAN機器のMacアドレスから位置情報を割り出す方法です。* 現在は使えません。
Macアドレスを調べる方法は、以下のようになります。 Aircrack-ng
を使えば、もっと高度なスキャンができると思いますが、最低限必要な情報は、Macアドレスなので簡易なやり方のほうがいいです。
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s
sudo gem install wi-fi_location
wi-fi_location 00:11:22:33:44:55 AA:BB:CC:DD:EE:FF
どうやら http://www.google.com/loc/json
が存在しないらしいですね。404 Error
が出ます。
参考 : OSX のコマンドラインから、wi-fi の情報をつかって位置情報を得る
##Finder
Finder 上で行う Markdown プレビューについてです。
###Finderからのプレビュー
実は、 Finder
では、ファイルのプレビューが簡単に出来ます。これは、 Space
キーを押すと、プレビューが実行されます。
ということで、今回のプレビューもコマンドからと思いきや、既定のプログラムが起動してしまいました。
open . hoge.md
ちなみに、 open .は、カレントディレクトリ、つまり現在作業しているディレクトリを Finderで開くコマンドです。
よって、仕方なく Finderから直接指定するために、 Finderのある場所を特定してみることにしました。
###Finderのある場所
ファイルを検索する方法は数多くありますが、ここでは、Macで有効な2つの方法を紹介します。
mdfind
は、Mac固有の検索コマンドです。私は、このコマンドはあまり使いませんが、便利そうです。
mdfind Finder
pgrep
は、 proctools
に含まれるツールの一つです。
sudo port install proctools
- 最近、
Homebrew
を止めてMacPort
を使い始めました。混同して申し訳ないです。
pgrep -fl Finder
どうやら、/System/Library/Core….
以下にあるらしいです。
###qlmanage
しかし、.md
ファイルの既定のプログラムをFinder
変更してもうまくいきません。したがって、qlmanage
を使ってみます。これは、「ファイルのサムネイル画像を一括生成する」ことなどにも使えるコマンドです。
qlmanage -p hoge.md
できました。次は、 Quick Look
の Markdown Preview プラグインについてです。
###QLMarkdown
qlmarkdownをダウンロードして、解凍します。そして、解凍してできたフォルダ内にある QLMarkdown.qlgenerator
を /Library/QuickLook
にコピーします。
w3m https://github.com/toland/qlmarkdown/downloads
aunpack QLMarkdown-1.3.zip
sudo cp QLMarkdown/QLMarkdown.qlgenerator /Library/QuickLook/
ちなみに、aunpack
コマンドの詳細は、過去の記事を参考にしてください。
watch -n 1 qlmanage -p hoge.md
終了するときは、 pkill qlmanage
です。