
プログラミング言語やフレームワーク、各種ツールの使い方など、世界中にはさまざまな分野に関し、情報を完結にまとめたチートシート(虎の巻)が多数存在します。
本日紹介する「cheat.sh」はこれら多くのチートシートに統一的なアクセスを提供するチートシートサービスです。
Webサービスの形式として提供されているため、ブラウザでそのまま確認できるほか、curlを使ってターミナルから情報を取得することもできます。
公式サイトによると以下のような特徴を持っています
- 簡単なcurl/ブラウザインターフェイス
- 55のプログラミング言語、複数のDBMS、1000異常の重要なUNIX/Linuxコマンド
- 世界最高のコミュニティ主導のチートシートりっぽじ鳥とStackOverflowへのアクセスを提供
- インストール不要
- 超高速。原則として100m秒以内に回答
- エディタ内部からも呼び出すことができる
- ステルスモード搭載
以下使用方法を説明します。
curlから利用
cheat.shのサービスを利用するにはcurlを利用して閲覧するのが一番簡単かもしれません。curl cheat.sh/キーワード(あるいはcurl cht.sh/キーワード)の形式で、例えば以下のように使用します。
curl cheat.sh/tar curl cht.sh/curl curl https://cheat.sh/rsync curl https://cht.sh/tr
例えばcurl cheat.sh/tarと実行するとtarの各種コマンドの使い方がずらっと表示されます。
$ curl cht.sh/tar
# To extract an uncompressed archive:
tar -xvf /path/to/foo.tar
# To create an uncompressed archive:
tar -cvf /path/to/foo.tar /path/to/foo/
# To extract a .gz archive:
tar -xzvf /path/to/foo.tgz
# To create a .gz archive:
tar -czvf /path/to/foo.tgz /path/to/foo/
# To list the content of an .gz archive:
tar -ztvf /path/to/foo.tgz
# To extract a .bz2 archive:
tar -xjvf /path/to/foo.tgz
# To create a .bz2 archive:
tar -cjvf /path/to/foo.tgz /path/to/foo/
# To list the content of an .bz2 archive:
tar -jtvf /path/to/foo.tgz
# To create a .gz archive and exclude all jpg,gif,... from the tgz
tar czvf /path/to/foo.tgz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} /path/to/foo/
# To use parallel (multi-threaded) implementation of compression algorithms:
tar -z ... -> tar -Ipigz ...
tar -j ... -> tar -Ipbzip2 ...
tar -J ... -> tar -Ipixz ...
追加のパラメータを与えより詳しい情報を探しだすこともできます。例えばRuby言語で配列を逆順にソートしたい場合、curl cht.sh/ruby/reverse+a+listのように実行します。
$ curl cht.sh/ruby/reverse+a+list
# reversing the order of an array in ruby
irb(main):001:0> a = [12,16,5,9,11,5,4]
=> [12, 16, 5, 9, 11, 5, 4]
irb(main):002:0> a.reverse
=> [4, 5, 11, 9, 5, 16, 12]
=begin
n I'm not seeing what you're seeing.
n
n Edit: Expanding on what Ben noticed, you may be reversing a string.
=end
irb(main):005:0> "12,16,5,9,11,5,4".reverse
=> "4,5,11,9,5,61,21"
=begin
n If you have to reverse a string in that manner, you should do
n something like the following:
=end
irb(main):008:0> "12,16,5,9,11,5,4".split(",").reverse.join(",")
=> "4,5,11,9,5,16,12"
curlから使用する場合検索キーワードは「reverse+a+list」のように「+」で結合します。
cht.shから利用
curlのほかcht.shという名前の専用のシェルスクリプト経由で利用することもできます。LinuxやmacOSのようなUNIX環境の場合、専用スクリプトをcht.sh利用するともう少し簡潔に問い合わせできます。
まずcht.shを保存します。
curl https://cht.sh/:cht.sh > ~/bin/cht.sh chmod +x ~/bin/cht.sh
cht.shは以下のように実行します。curlの場合プラス記号で結合する必要があったパラメータですが、cht.shではスペース区切りでより自然に扱えます。
$ cht.sh go reverse a list $ cht.sh python random list elements $ cht.sh js parse json
さらにインタラクティブに利用できるシェルモードや、テキストを選択するだけで問い合わせできるステルスモード(実際はmacOSの場合iTerm2などのようにテキスト選択時にクリップボードに情報がコピーされる必要があります。)など、より便利な機能が使えます。

▲ステルスモードの様子。赤字部分が自動的検索対象となっている文字列です。
その他、VimやEmacsに組み込む事も可能です。詳細は公式サイトでご確認ください。
cheat.sh
cheat.shはコミュニティベースで作られたチートシートへの統一的なアクセス手段を提供するWebサービスです。チートシートに掲載されている情報はばらつきがありますが、必要な情報を素早く参照できる
