Help us understand the problem. What is going on with this article?

Command Line で使用しているツールまとめ vol.6

More than 3 years have passed since last update.

はじめに

コマンドラインで使用しているツールを簡単にではありますが、まとめてみようと思います。前回の続きです。私が知らない便利ツールはまだまだたくさんありますので、ここに掲載されているもの以外で便利なものがあれば、ぜひ教えてください。

この記事に貼り付けてあるリンクは、キーワードに関連する適切な場所へと誘導してくれます。非常に有効なので、ぜひ参照してみてください。

powerline-bash

ShellのPromptを簡単に変更するためのツールが公開されています。oh-my-zshのものよりも手軽でいいかもしれません。

例えば、zshの場合は、 cd && git clone https://github.com/milkbikis/powerline-bash.gitで複製した後、以下のように書きます。

~/.zshrc
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

~/.zshrc
## 翻訳
# 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}"
}
~/.tmux.conf
# 翻訳
# 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で使える csshcsshX というものがあります。複数のホストに同じような処理をさせたいときなどに便利です。

brew install csshx

csshX user1@192.168.0.1 user2@192.168.0.2 user3@192.168.0.3

~/.ssh/config

configファイルに記述しておくと、様々なオプションを省略することができます。

参考:csshXを使ってリモートホストの一括操作を行う

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

学校に登校してみます。

~/.zshrc
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です。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away