Linuxコマンドの代替コマンド、上位互換コマンドを紹介する動画を見ていて、知らないコマンドばかりだったので、実際に使ってみました。
コマンド自体はすべてmacOSでインストールして試しています。公式サイトのURLを付けていますので、その他のプラットフォームの場合は公式サイトご確認ください。
z – cdの代替コマンド
z
はcd
の代替コマンドです。cd
コマンドと比べて移動に関する操作が強化されています。
インストール方法
macOSへインストールするにはHomebrewを使用します。
brew install zoxide
インストール後、~/.zshrc
に以下を追記し、シェルを再起動します。
eval "$(zoxide init zsh)"
使用方法
コマンドが違うだけで基本的にはcd
コマンドと同じように使用できます。ただ、前にいたディレクトリへの復帰の方法がとても強力です。
$ z foo
$ mkdir -p bar/baz
$ mkdir -p abc/def
# foo/bar/bazディレクトリに移動する
$ z bar/baz
# 直前にいたfooディレクトリに戻る
$ z -
# 移動したことのあるbazディレクトリに直接移動する
$ z baz
$ z -
$ z abc/def
# 移動したことがあるなら直前にいたディレクトリでなくても移動可能
$ z baz
$ z def
2つ以上のディレクトリを行き来するときとかは重宝しそうです。
eza – lsの代替コマンド
ezaはexaからフォークしたコマンドで、現在はこちらがメンテナンスされているようです。
eza
はls
の代替コマンドです。ls
コマンドよりも高い可読性の表示が簡単にできるのが特徴です。
インストール方法
macOSへインストールするにはHomebrewを使用します。
brew install eza
使用方法
eza
や
eza -l
で
色つきや下線がついた見やすい表示になります。
fd – findの代替コマンド
fd
はfind
の代替コマンドです。特定の文字列を含むファイル名やディレクトリ名を簡単に探すことができます。
インストール方法
macOSへインストールするにはHomebrewを使用します。
brew install fd
使用方法
複雑なオプションを使わずにファイルやディレクトリを検索できます。
# fooを含むファイル名、ディレクトリ名を現在のディレクトリから再帰的に検索する
$ fd foo
# ファイルのみを検索したいとき
$ fd --type f foo
# ディレクトリのみ検索したい場合
$ fd --type d foo
# fooを含むファイル名、ディレクトリ名をディレクトリbarを基点に再帰的に検索する
$ fd foo bar
find
コマンドはオプションを色々覚えないといけないですし、環境やバージョンによってオプションが異なることがあるため、毎回調べる手間を大幅に削減できるのがうれしいですね。
rg – grepの代替コマンド
rg
はgrep
の代替コマンドです。ファイルの中に文字列をGrepすることに特化したコマンドで、サクラエディタのGrep機能をコマンド化したような使い心地です。
インストール方法
macOSへインストールするにはHomebrewを使用します。
brew install ripgrep
使用方法
オプションおよびコマンドの組み合わせなしでファイルの中身のGrepができます。
# 現在ディレクトリを基点に再帰的に'foo'が含まれる行を検索する
$ rg foo
# オプションなしで正規表現が使用可能
$ rg 'ba[rz]'
# 検索する基点となるディレクトリを指定可能(barディレクトリを基点に検索)
$ rg foo bar
# 拡張子を絞って検索することも可能
$ rg foo -g '*.css'
bat – catの代替コマンド
bat
はcat
の代替コマンドです。cat
コマンドよりも高機能かつ見やすい表示にしてくれます。
インストール方法
macOSへインストールするにはHomebrewを使用します。
brew install bat
使用方法
cat
と同じでファイル名を指定してファイルの中身を表示できるのは同じですが、more
コマンドなどと組み合わせる必要がなく、色も付けてくれるのでかなり見やすくなります。
tldr – manの補完コマンド
こちらは代替コマンドというよりは補完するコマンドだと言えます。tldr
コマンドで調べて、それでも不足している場合はman
コマンドで調べるという使い方がよさそうです。
インストール方法
macOSへインストールするにはHomebrewを使用します。かつてはtldr
という名前でインストールできていたようですが、現在はtlrc
という名前でインストールします。
brew install tlrc
使用方法
man
コマンドと同じようにコマンド名を引数にします。
すっきりとした見た目なので非常にわかりやすいですね。さっと調べたい場合はtldr
コマンドで調べて、もっと詳しくいろいろなオプションを調べたい場合はman
コマンドを使うようにするとよいと思います。
コマンドの使い方を調べるコマンドは他にもあるので簡単に紹介します。
cheat
tldr
と似ていますが、チートシートをローカルにダウンロードして、それを編集して自分で育てることができます。
$ brew install cheat
# コマンドを始めて調べるときはコミュニティ提供のチートシートをダウンロードできる
$ cheat sort
A config file was not found. Would you like to create one now? [Y/n]: y
Would you like to download the community cheatsheets? [Y/n]: y
Cloning community cheatsheets to /Users/t0k0sh1/.config/cheat/cheatsheets/community.
Enumerating objects: 335, done.
Counting objects: 100% (335/335), done.
Compressing objects: 100% (310/310), done.
Total 335 (delta 43), reused 213 (delta 23), pack-reused 0
Cloning personal cheatsheets to /Users/t0k0sh1/.config/cheat/cheatsheets/personal.
Created config file: /Users/t0k0sh1/.config/cheat/conf.yml
Please read this file for advanced configuration information.
# 以降はチートシートを表示する
# To sort a file:
sort <file>
# To sort a file by keeping only unique:
sort -u <file>
# To sort a file and reverse the result:
sort -r <file>
# To sort a file randomly:
sort -R <file>
# To sort a file and store the output in another file:
sort <inputFile> -o <outputFile>
# Sort by default uses /var/tmp to store temp files but size of /var/tmp directory is limited. In order to sort huge use a directory with adequate size:
sort -T <tempDirectory> <file>
# 一度ローカルに保存したチートシートは編集できる
$ cheat -e sort
howdoi
プログラマ向けのQ&Aサイトから回答を調べて表示するコマンドです。
$ brew install howdoi
# JavaのStream APIでsortをするときの書き方を調べるにはキーワードを並べる
$ howdoi java stream sort
List result = list.stream().sorted((o1, o2)->o1.getItem().getValue().
compareTo(o2.getItem().getValue())).
collect(Collectors.toList());
まとめ
個人的にはfd、rg
コマンドはこれからも使っていきたいと思いました。もちろん、シェルスクリプトではfind
コマンドやgrep
コマンドはこれからも使うと思います。
伝統的なコマンドを使いこなすことも重要ですが、使いにくいと思うコマンドを別のコマンドに置き換えてより効率的に作業をこなすのも重要なことだと思いますので、積極的に試していきたいと思います。