つまり
- Linuxを日々使っているけど、知らないコマンドたくさんあるな、と思った。
-
Ubuntu 20.04
で最初から入っているコマンドたちについて調べようと思った。 - 挫折した。
環境
Ubuntu 20.04
をMicrosoft Storeから入手、インストール後に、sudo apt update
とsudo apt upgrade
実施済みの、WSL2上の環境。
> cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
コマンド
まず、パスの通っているところにあるコマンド(実行ファイル)の数を数えてみた。(同名異バイナリもありそうだけど、ひとまず同一カウント)
> echo $PATH | sed "s/:/\n/g" | grep -v "^\/mnt" | while read d; do ls -1 "$d"; done | sort | uniq | wc -l
1339
1339、、知らないコマンドを一日1個ずつ覚えても数年はかかりそうなので、コマンドを全て把握するのは諦めることにした(挫折1)。
パッケージ
コマンドは諦めたとしても、どんなパッケージがインストールされているのかは知っておきたい。
> apt list --installed | wc -l
608
608!?。無理っす(挫折2)。そこで、パッケージの依存関係から、様々なパッケージから参照されているパッケージは重要度が高いんだろうと考え、パッケージのreverse dependencyをざっくりカウントして、ランキングを見てみた。
> apt list --installed | sed "s:\/.*::" | while read p; do n=`apt-cache rdepends "$p" | wc -l`; echo -e "$n\t$p"; done | sort -rn -k1 | head
22107 libc6
6633 libstdc++6
5683 libgcc-s1
4427 perl
3140 libglib2.0-0
2508 zlib1g
2126 python3
1956 libgmp10
1596 libx11-6
1198 dpkg
libc6
がトップだったが、パッケージで展開されるファイルをdpkg-query -L libc6
で確認すると、libディレクトリに展開されるスタティックなオブジェクトばかりで、bin関係のディレクトリは無かった。そもそも、lib
で始まるパッケージの多くはbinディレクトリへ展開されないようだ(除くlibc-bin, libpam-modules-bin, libglib2.0-bin, libcap2-bin, libperl5.30, libpam-runtime
)。では、ランキング上位のperl
パッケージから見ていきたい。
> dpkg-query -L perl | grep "bin"
/usr/bin
/usr/bin/corelist
/usr/bin/cpan
/usr/bin/enc2xs
/usr/bin/encguess
/usr/bin/h2ph
/usr/bin/h2xs
/usr/bin/instmodsh
/usr/bin/json_pp
/usr/bin/libnetcfg
/usr/bin/perlbug
/usr/bin/perldoc
/usr/bin/perlivp
/usr/bin/perlthanks
/usr/bin/piconv
/usr/bin/pl2pm
/usr/bin/pod2html
/usr/bin/pod2man
/usr/bin/pod2text
/usr/bin/pod2usage
/usr/bin/podchecker
/usr/bin/podselect
/usr/bin/prove
/usr/bin/ptar
/usr/bin/ptardiff
/usr/bin/ptargrep
/usr/bin/shasum
/usr/bin/splain
/usr/bin/xsubpp
/usr/bin/zipdetails
、、、わりと見たことのないものが多い。必要になってから学ぶ、でも良いのではと思い直すことにした(挫折3)。
今後
もう少しminimal installな状態でやるべきだったかもしれない。そもそも、自分が何を目指していたのか見失ってしまった。
coreutils
とかbsdutils
とかutil-linux
のパッケージに入っているコマンドを学ぶところから始めた方がよさそうな気がしてきた。