普段LinuxやMacのシェルで使用している各種コマンドを、Windows環境でも使いたい!となった時には、BusyBoxを使えばいいよ!
仕事ではWindows、プライベートではMacまたはLinuxなんて人もいるかもしれません。そこな貴方、こんなシチュエーションがありませんでしょうか?
ふと仕事中に「
grep
使いたいなー」とか「awk
使いたいなー」とかなっても、Windowsのコマンドプロンプトじゃ足りないし、PowerShellはあの文法がいまいち性に合わない。ガッツリ使うわけじゃないから、わざわざ端末や仮想環境を用意するというわけにもいかない。
とか、
Windows使ってるのに普段のMacのノリで
ls
って入力しちゃって、Windowsに「そんなコマンドないよ」と言われた経験がある。
そんな貴方(私)のため、BusyBoxが十徳ナイフのごとく活躍してくれます。
以下に当てはまる方は、BusyBoxで幸せになれるかもしれません。
Windows 10だとWSL(Windows Subsystem for Linux)で、UbuntuなどのLinuxディストリビューションを利用できます・・・が、リリースモデルの1つ、Enterprise LTSC(Long Term Servicing Channel)だとWSLが利用できません。企業によっては、「安定性などを確保するために、OSに対する頻繁な変更は行いたくない」場合、このモデルが採用されている可能性があります。
この場合も、やっぱりBusyBoxの出番です。
※以前は「Long Term Servicing Branch(LTSB)」という名前でリリースされていましたが、現在は「Long Term Servicing Channel(LTSC)」に名称変更されました。
ダメじゃないです、全然大丈夫です。ただ、「ちょっとsed
使いたいなー」っていう場合には、機能てんこ盛りなCygwinだとオーバースペックだったりします。
VMwareなどの仮想環境が利用できるなら、そっちの方がいろいろ便利です。ただ、マシンスペックがイマイチだったり記憶容量があまりない場合は却ってストレスになるでしょうし、やっぱりちょっとだけ使うという用途に対してオーバースペックと言わざるを得ません。
終わりです。ダウンロードして展開すればいい実行ファイルなので、インストール権限は必要ないです。しかもめちゃくちゃ軽量なので、記憶容量をガツガツ食っちゃうこともありません。
なお、ソースもダウンロードが可能ですが、あまりニーズはないだろうと判断し、この記事の中では触れません。
BusyBox64.exe
と入力して実行してみます。
C:\hoge>BusyBox64.exe
BusyBox v1.31.0-FRP-2910-ge92596d0b (2019-01-10 14:16:45 GMT) multi-call binary
(mingw64-gcc 8.2.0-3.fc29; mingw64-crt 5.0.4-2.fc29)
BusyBox is copyrighted by many authors between 1998-2018.
Licensed under GPLv2. See source distribution for detailed
copyright notices.
Usage: BusyBox [function [arguments]...]
or: BusyBox --list[-full]
or: BusyBox --install [DIR]
or: BusyBox --uninstall [-n] file
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. The shell in this build
is configured to run built-in utilities without $PATH search.
You don't need to install a link to BusyBox for each utility.
To run external program, use full path (/sbin/ip instead of ip).
Currently defined functions:
[, [[, ar, arch, ash, awk, base64, basename, bash, bunzip2, BusyBox, bzcat, bzip2, cal, cat, chmod, cksum,
clear, cmp, comm, cp, cpio, cut, date, dc, dd, df, diff, dirname, dos2unix, dpkg-deb, du, echo, ed, egrep, env,
expand, expr, factor, false, fgrep, find, fold, fsync, ftpget, ftpput, getopt, grep, groups, gunzip, gzip, hd,
head, hexdump, iconv, id, ipcalc, kill, killall, less, link, ln, logname, ls, lzcat, lzma, lzop, lzopcat, man,
md5sum, mkdir, mktemp, mv, nc, nl, od, paste, patch, pgrep, pidof, pipe_progress, pkill, printenv, printf, ps,
pwd, realpath, rev, rm, rmdir, rpm, rpm2cpio, sed, seq, sh, sha1sum, sha256sum, sha3sum, sha512sum, shred,
shuf, sleep, sort, split, ssl_client, stat, strings, sum, tac, tail, tar, tee, test, timeout, touch, tr, true,
truncate, ttysize, uname, uncompress, unexpand, uniq, unix2dos, unlink, unlzma, unlzop, unxz, unzip, usleep,
uudecode, uuencode, vi, watch, wc, wget, which, whoami, whois, xargs, xxd, xz, xzcat, yes, zcat
利用方法や利用可能なコマンドが表示されます。awk
やfind
、grep
など一般的なコマンドを利用できることがわかります。
コマンドプロンプトを立ち上げ、下記のように入力し実行します。
BusyBox64.exe 実行したいコマンド
プロセスを参照したければps
を実行するわけですが、その場合は下記のように入力して実行します。
BusyBox64.exe ps
この場合、「BusyBox使ってps
を実行するぜ」と言っていることになります。
なお、オプションを利用してコマンド発行するのも普段と同様です。
BusyBox64.exe ls -la
このように入力して実行すればl
とa
のオプションが有効になります。
もちろん、そんなことはないです。ログインシェルとして利用することも可能です。その場合のコマンドは下記の通りです。
BusyBox64.exe sh -l
前述の通り、BusyBoxはログインシェルとしても利用できます。ただし、コマンドによっては管理者権限が要求されているようで、「Permission Denied」と言われ実行できないケースがありました。自分が実行した際は、grep
でこの症状が出ました。
そうなれば管理者権限を付与した状態でシェルを起動すればいい、ということになりますが、毎回「スタートボタンで右クリックしてコマンドプロンプトを管理者権限で実行してからBusyBox sh -l
を実行してシェル起動」するのは鬱陶しいので、最初から権限を付与して起動することにしました。
powershell start-process BusyBox64.exe -verb runas 'sh -l'
上記コマンドを、batファイルなどにするかエイリアス設定してやればいいわけです。自分は、個人用に作成したランチャーで上記のコマンドを実行しています。