commandlinefu とは
"commandlinefu" というウェブサイトをご存知でしょうか。世界中の開発者やシステム管理者等が便利な Linux コマンドを掲載しているウェブサイトで、Linux コマンドの組み合わせでこんなことも出来るのか!というコマンドが多数掲載されています。ウェブブラウザで下記ウェブサイトにアクセスして検索欄でコマンドの一部や、何か実現したいことのキーワードを入力すれば様々なコマンド一覧と実現できることの説明が表示されます。
http://www.commandlinefu.com/
しかしターミナル上でコマンドを打ちつつ、ブラウザで上記ウェブサイトで検索するというのは決して効率の良い方法とは言えませんよね。そこで下記ツールを導入してコマンドラインから commandlinefu に掲載されている情報を検索できるようにしてみましょう。
commandlinefu を検索するツールを導入
ツールの URL はこちらになります。https://github.com/samirahmed/fu
インストールは非常に簡単で、次のようにすればツールを導入できます。
$ git clone git://github.com/samirahmed/fu.git $ cd fu/ $ sudo make install
コマンドの使い方
使い方は非常に簡単で、fu コマンドの後に検索したいキーワードを入力して検索するだけです。ここでは ssh を検索キーワードに指定しました。あとは表示された結果をコピー&ペーストすればターミナルから離れずに有用なコマンドを探し出して効率アップを図れます。$ fu ssh 1 # output your microphone to a remote computer's speaker dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp 2 # Mount folder/filesystem through SSH sshfs name@server:/path/to/folder /path/to/mount/point 3 # Compare a remote file with a local file ssh user@host cat /path/to/remotefile | diff /path/to/localfile - 4ms total:25
また検索キーワードとしてコマンド名ではなく、windows 等のキーワードでも以下のように検索してみました。関係無さそうなコマンドも表示されますが、結果を取捨選択しましょう。
$ fu windows 1 # Shutdown a Windows machine from Linux net rpc shutdown -I ipAddressOfWindowsPC -U username%password 2 # Convert PDF to JPG for file in `ls *.pdf`; do convert -verbose -colorspace RGB -resize 800 -interlace none -density 300 -quality 80 $file `echo $file | sed 's/\.pdf$/\.jpg/'`; done 3 # Save your sessions in vim to resume later :mksession!861ms total:25
デフォルトでは人気のある?!3件のコマンドだけが表示されるようですが、全ての検索結果を表示するには "-a" オプションをつけてあげれば以下のように全件表示されるようになります。
$ fu -a ssh 1 # output your microphone to a remote computer's speaker dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp 2 # Mount folder/filesystem through SSH sshfs name@server:/path/to/folder /path/to/mount/point 3 # Compare a remote file with a local file ssh user@host cat /path/to/remotefile | diff /path/to/localfile - 4 # SSH connection through host in the middle ssh -t reachable_host ssh unreachable_host 5 # Copy your SSH public key on a remote machine for passwordless login - the easy way ssh-copy-id username@hostname 6 # Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys" 7 # Create a persistent connection to a machine ssh -MNf@ 8 # Remove a line in a text file. Useful to fix ssh-keygen -R 9 # Attach screen over ssh ssh -t remote_host screen -r 10 # directly ssh to host B that is only accessible through host A ssh -t hostA ssh hostB 11 # Synchronize date and time with a server over ssh date --set="$(ssh user@server date)" 12 # Duplicate installed packages from one machine to the other (RPM-based systems) ssh root@remote.host "rpm -qa" | xargs yum -y install 13 # Port Knocking! knock 3000 4000 5000 && ssh -p user@host && knock 5000 4000 3000 14 # run complex remote shell cmds over ssh, without escaping quotes ssh host -l user $( /dev/null" 22 # Tell local Debian machine to install packages used by remote Debian machine ssh remotehost 'dpkg --get-selections' | dpkg --set-selections && dselect install 23 # throttle bandwidth with cstream tar -cj /backup | cstream -t 777k | ssh host 'tar -xj -C /backup' 24 # Resume scp of a big file rsync --partial --progress --rsh=ssh $file_source $user@$host:$destination_file 25 # Single use vnc-over-ssh connection ssh -f -L 5900:localhost:5900 your.ssh.server "x11vnc -safer -localhost -nopw -once -display :0"; vinagre localhost:5900 5ms total:25
fu コマンドを利用すればターミナルから離れずに、素晴らしいコマンドテクニックを検索してすぐに利用できるようになりますので、是非導入しましょう。