MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

おすすめシェル時短テクニック&ツールまとめ

目次

 

はじめに

高速でシェルを扱えるエンジニアになりたいので、

おすすめのテクニックをメモとして残しておきます。

基本的にはbashを使用することを想定しています。

 

新しくシェルを別タブで立ち上げる

自分は沢山タブでシェルを立ち上げる派なので重要です。

Mac:

cmd + t

Ubuntu:

ctrl+shift+t

 

タブ間を移動する

Mac:

cmd + Shift + 右左

Ubuntu:

alt+数字 (左から1,2,3)

 

コマンド履歴を検索する

percol (fzf)というツールを使って、

ヒストリー検索を楽にしています。

myenigma.hatenablog.com

ctrl + rでコマンドの履歴をファジー検索できるようにしています。

 

ファイル名でファジー検索して、vimで開く

$ vim fzf

 

コマンド履歴を複数のシェルで共有する設定

自分は複数のシェルを立ち上げる派なのですが、

bashはコマンド履歴を終了した時に保存する仕様なので、

あるシェルで実行したコマンドを、

別のシェルで実行したい時に、履歴から探索することができません。

そこで、.bashrc または .bash_profileに下記の設定を追記しておくと、

コマンドを入力した時に、自動でヒストリーに履歴を書き込んでくれるので、

他のシェルでもコマンド履歴が利用できるようになります。

 

# share bash history
function share_history {
    history -a
    history -c
    history -r
}
PROMPT_COMMAND='share_history'
shopt -u histappend

 

画面表示を一時停止 or 再開する

画面表示を一次停止

Ctrl + s

再開

Ctrl + q

 

標準出力を眺めている時に、

不意に変なものを見つけて、

止めたい時に使います。

 

シェルの入力コマンドを削除

スペース毎

ctrl + w

カーソルの左を全部消す

ctrl +u

 

シェルの画面を初期化する

ctrl + l

または

clear

 

bashのよく使うショートカット

基本的にはemacsのショートカットと同じみたいですが、

下記の3つをよく使います。

  • Ctrl + a 行頭に移動する

  • Ctrl + e 行末に移動する

  • Ctrl + u カーソルより前を削除する, 削除した文字列はコピーされる

 

cdを強化する

cdコマンドを使って、ディレクトリを移動することは多いと思いますが、

よく移動するディレクトリに、スムーズに移動するために、

enhancdというプラグインを利用しています。

github.com

http://qiita.com/b4b4r07/items/2cf90da00a4c2c7b7e60qiita.com

http://www.tellme.tokyo/entry/2015/07/21/142826www.tellme.tokyo

 

自分の場合、

cd コマンドを入力するとpercolが起動し、

過去に移動したディレクトリの履歴をファジー検索して移動することができます。

cd .. と入力すると、親ディレクトリにpercolを使って、一気に移動できるのも便利です。

 

あるファイルのフルパスを取得する

readlink -e hogehoge.txt

プログラムを書く時に結構便利です。

 

標準出力を表示したまま出力をファイルに保存

標準出力に大量にデータを流している時に、

その出力を見ながら、後で検索するように内容を保存したい時があります。

そんな時はteeコマンドを使いましょう。

teeは標準出力とファイル出力をT字のように、

分けることができるところから、teeという名前になったそうです。

使い方としては、

ls | tee hoge.txt

のようにパイプで繋げばOKです。

-a というオプションを付ければ、

ファイルに追記できます。

 

ssh越しに標準出力を表示したまま出力をファイルに保存

一方、sshでサーバにログインした時に

標準出力をteeで保存すると、

サーバ側にファイルが作成されてしまいますが、

出力ファイルはクライアント側に作りたい時もあります。

そんな時は、scriptというLinuxコマンドを使いましょう。

 

コンソールにて、下記のようなコマンドを入力することで、

その後のすべてのコンソール出力をlog.txtに出力することができます。

script log.txt

出力を止める場合は、

exitもしくはctrl+dを押せばOKです。

 

sshの使い方

こちらを参照下さい。

myenigma.hatenablog.com

 

ファイル検索の方法

最も一般的な方法はfind関数を使うものです。

カレントディレクトリ以下のcppファイルを探す場合:

find . -name "*.cpp"

カレントディレクトリ以下のhogeが付くディレクトリを探す場合:

find . -type d -name "hoge*"

 

またfind関数は指定した

すべてのディレクトリを走査するので、

検索に時間がかかりますが、

locateというコマンドを使うと、

事前に検索データベースを作ってくれるので

検索が早くなります。

 

使い方はlocateの後ろに調べたいファイルの一部を入力するだけです。

sampleが付くファイルを探す

locate sample

すべてのパスに対して検索する場合でも、

非常に高速に検索してくれます。

 

Macの場合は少し設定しないと使いづらいので、

下記のリンクを参考に設定したほうがいいです。

 

ディレクトリ内のファイルの数を数える

$ ls -1 | wc -l

 

ハードディスクの空き容量を確認する 

df -f

 

各スレッド毎のCPU使用率を見る

top -H

 

ディレクトリの容量を見る

du -hS

 

巨大なファイルを読む

vimだと、すべてのデータを一旦メモリ上に読み込んでしまうので、

巨大なファイルを開くと重くなってしまいますが、

そんなときは、lessを使うと便利です。

man7.org

lessは今、表示している部分のみをメモリに展開するため、

大きなファイルでも開くことができます。

また、vimのように、

j, kで移動したり、/ <検索>文字で、検索することもできるため、

vimmerには使いやすいと思います。

 

また、& <検索文字> でマッチする行だけを表示することもできます。

 

ログファイルを監視

less -F

もしくは

lessで開いているうちに、Shift+f

「tail -f」を使うのは情弱、情強は「less +F」を使う

ログファイルの末尾の行だけ表示されるので、

便利そうですね。

 

起動プロセス一覧表示と検索

$ ps aux

検索するときは、

$ ps aux | grep hoge

 

ネットワーク内のIPアドレスを検索する

$ arp -a

MacとUbuntuの両方でデフォルトで可能です。

 

使われているポートを検索

$ nmap 127.0.1. -sTU

 

ポート番号/プロセスIDの詳細を確認

ポート番号から検索する場合

$ lsof -i:8080

プロセスIDで検索する場合

$ lsof -p PID

 

シェルの環境を一発で設定するdotfilesリポジトリを作った

新しいPCのセットアップなどは、ほとんどすることがありませんが、

なぜかワン・コマンドで実行したくなったので、

下記のリポジトリを作って、設定スクリプトを作っています。

https://github.com/AtsushiSakai/dotfilesgithub.com

READMEにある通り、

リポジトリのpythonコードをcurlでダウンロードして実行すると、

すべての設定がされるようにしています。

 

bashの使い方を学ぶ上でのおすすめ資料

はじめてbashを触る人には、下記の資料がおすすめです。

漫画ですが、非常に役に立つ知識が詰まっていると思いました。

[asin:B019O8NFDC:detail]

 

広くbashについて知りたい方は下記もおすすめです。

 

またより深くシェル技術を学びたい人は

下記の書籍もおすすめです。

 

参考資料

qiita.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

https://gumroad.com/l/myenigmasupportersgumroad.com