anchor
MacのTerminalにはいくつのコマンドが有るのか〜どういうコマンドが有るのか〜こうやって一覧を見ることができる
Macというのは実は昔のMacintoshに似たUIをかぶったUNIXであるというのは結構言い古された事実だ。
ところが今のOS Xを使い込んでいない人々や、昔のOS9以前のMacまでしか使ったことがないMacユーザにはほぼ理解されていない。
でもこのことを理解して今のMacを使ってみれば、色々とメリットがあることは今のユーザの多くが理解していることだ。
そのメリットはいろいろあるのだが、UNIXで一般的なコマンドの多くがMacでも使えるというあまり知られていない、地味だけど、一部の人には強烈に印象的なメリットがある。
最初に覚えたコマンドは何ですか?
多くの人はきっと
fsck
あたりが最初だと思う。
ちょっと前だったら
update_prebinding
なんてコマンドもポピュラーだったかもしれない。(今のLeopard以降のOS Xではこのコマンドは無効になっている)
では、どんなコマンドがいくつくらいあるのだろうか?
これは実は簡単に見ることができる。
UNIXでいうところのコマンドというのはMacのGUIでいうところのアプリのようなものだ。
その名前をTerminalなどのシェルで呼ぶと起動してきて予め決められた機能を実行する。
アプリと同じように所定のフォルダの中に収まっている。
その実体はUNIX実行ファイルだ。
だからその入っているところを覗けばどれくらいの数のコマンドが入っているのか、何があるのかを把握することができる。
この場所は
/bin
/sbin
/usr/bin
/usr/sbin
の中にある。
もし自分でmake installしてパスを通したコマンドがあるならその中にもある。
MainMenuのようなアプリを使って「不可視領域を表示」するメニューを叩く
するとFinderでコマンドの在処を直接見ることができる
/binの中にはシステムのベーシックなコマンドが用意されている
/sbinの中にはさらにバリエーションのコマンドが用意されている
お馴染みのfsck、halt等のコマンドが見える
usr/binにはユーザ権限で実行できるコマンドが用意されている
そしてusr領域にもusr/sbinがあってこれらの領域に
併せて1300以上のコマンドが用意されていることがわかる
そこにどんなコマンドがあるのかリスト化してみた
cd /binと打ってls、cd /sbinと打ってls、
cd usr/binと打ってls、cd usr/sbinと打ってlsを繰り返す
先ほど見えていたhaltコマンドは「システム終了」のコマンド
GUIではまず使うことはないがsshなどで他のマシンにリモートで入っている時に
halt、rebootは知っておく必要があるコマンドだ
とても全部を把握することはできないが意味をを知っていると便利なものも多くある
以下上の手順でリスト化したコマンドが以下の通り。
1300以上有って「UNIXコマンド入門」なんて記事を書いている私だが、意味を知らないものがどっさりある。
先は長いぞ。
/binのコマンド
[ date expr ln
pwd stty zsh
bash dd hostname ls
rcp sync
cat df kill mkdir
rm tcsh
chmod domainname ksh mv
rmdir test
cp echo launchctl pax
sh unlink
csh ed link ps
sleep wait4path
/sbinのコマンド
SystemStarter fsck_exfat halt mount mount_hfs
mpioutil ping
autodiskmount fsck_hfs ifconfig mount_acfs mount_msdos
newfs_exfat ping6
disklabel fsck_msdos ip6fw mount_afp mount_nfs
newfs_hfs quotacheck
dmesg fsck_udf ipfw mount_cd9660 mount_ntfs
newfs_msdos reboot
dynamic_pager fstyp kextload mount_cddafs mount_pdudf
newfs_udf route
emond fstyp_hfs kextunload mount_devfs mount_prodiscfs
nfsd rtsol
fibreconfig fstyp_msdos launchd mount_exfat mount_smbfs
nfsiod shutdown
fsck fstyp_ntfs md5 mount_fdesc mount_udf
nologin umount
fsck_cs fstyp_udf mknod mount_ftp
mount_webdav pfctl
/usr/binのコマンド
2to3 infokey ptar
2to3- infotocap ptar5.10
2to3-2.7 install ptar5.12
2to32.6 install-info ptardiff
RSA_SecurID_getpasswd instmodsh ptardiff5.10
a2p instmodsh5.10 ptardiff5.12
a2p5.10 instmodsh5.12 pubsub
a2p5.12 instruments purge
addftinfo iodbc-config pwpolicy
afclip iodbctest pydoc
afconvert iodbctestw pydoc2.5
afhash iofile.d pydoc2.6
afinfo iofileb.d pydoc2.7
afmtodit iopattern python
afplay iopending python-config
agentxtrap iosnoop python2.5
agvtool iotop python2.5-config
alias ip2cc python2.6
allmemory ip2cc5.10 python2.6-config
ant ip2cc5.12 python2.7
applesingle ipcount python2.7-config
appletviewer ipcount5.10 pythonw
apply ipcount5.12 pythonw2.5
apr-1-config ipcrm pythonw2.6
apropos ipcs pythonw2.7
apt ipptool qc2movie
apu-1-config iprofiler qlmanage
arch iptab qtdefaults
asctl iptab5.10 quota
at iptab5.12 radclient
atos irb radconf2xml
atq isc-config.sh radcrypt
atrm jar radeapclient
atsutil jarsigner radlast
automator java radsniff
auval javac radsqlrelay
auvaltool javadoc radtest
avconvert javah radwho
avmetareadwrite javap radzap
awk javaws rails
banner jcmd rake
base64 jconsole rdoc
basename jdb read
bashbug jhat readlink
batch jinfo refer
bc jmap reindexdb
bg jobs renice
biff join reset
binhex jot rev
bitesize.d jps ri
bsdtar jrunscript rlm_dbm_cat
bspatch jsadebugd rlm_dbm_parser
bunzip2 jstack rlogin
bzcat jstat rmic
bzcmp jstatd rmid
bzdiff jvisualvm rmiregistry
bzegrep kcc rs
bzfgrep kdestroy rsh
bzgrep kextutil rsync
bzip2 keytool ruby
bzip2recover kgetcred runocc.d
bzless kill.d ruptime
bzmore killall rvictl
c++filt kinit rview
c2ph klist rvim
c2ph5.10 kpasswd rwbypid.d
c2ph5.12 krb5-config rwbytype.d
c_rehash kswitch rwho
caffeinate lam rwsnoop
cal last s2p
calendar lastcomm s2p5.10
cancel lastwords s2p5.12
cap_mkdb latency sample
captoinfo ldapadd sampleproc
cd ldapcompare sandbox-exec
certtool ldapdelete sandbox-simplify
checknr ldapexop sar
chflags ldapmodify say
chfn ldapmodrdn sc_usage
chgrp ldappasswd scandeps.pl
chpass ldapsearch scandeps5.12.pl
chsh ldapurl schemagen
cksum ldapwhoami scp
clear leaks screen
clusterdb leave script
cmp less sdiff
codesign lessecho sdx
col libnetcfg security
colcrt libnetcfg5.10 sed
colldef libnetcfg5.12 seeksize.d
colrm lipo seq
column lkbib serialver
comm loads.d servertool
command locale setregion
compress localedef setuids.d
config_data locate sftp
config_data5.10 lockfile shar
config_data5.12 logger shasum
corelist login shasum5.10
corelist5.10 loginfix.sh shasum5.12
corelist5.12 logname shlock
cpan look showmount
cpan2dist lookbib sigdist.d
cpan2dist5.10 lp sips
cpan2dist5.12 lpoptions slogin
cpan5.10 lppasswd smbencrypt
cpan5.12 lpq smbutil
cpanp lpr smtpd.py
cpanp-run-perl lprm smtpd2.5.py
cpanp-run-perl5.10 lpstat smtpd2.6.py
cpanp-run-perl5.12 lsbom smtpd2.7.py
cpanp5.10 lsm sndiskmove
cpanp5.12 lsvfs snfsdefrag
cpio lwp-download snmp-bridge-mib
cpuwalk.d lwp-download5.10 snmpbulkget
crc32 lwp-download5.12 snmpbulkwalk
crc325.10 lwp-dump snmpconf
crc325.12 lwp-dump5.10 snmpdelta
creatbyproc.d lwp-dump5.12 snmpdf
createdb lwp-mirror snmpget
createlang lwp-mirror5.10 snmpgetnext
createuser lwp-mirror5.12 snmpinform
crlrefresh lwp-request snmpnetstat
crontab lwp-request5.10 snmpset
csplit lwp-request5.12 snmpstatus
csreq lwp-rget snmptable
cu lwp-rget5.10 snmptest
cups-config macbinary snmptranslate
cupstestdsc macerror snmptrap
cupstestppd macerror5.10 snmpusm
curl macerror5.12 snmpvacm
curl-config machine snmpwalk
cut mail sntp
cvaffinity mailq soelim
cvcp mailstat sort
cvmkdir mailx spfd
cvmkfile makeinfo spfd5.10
dappprof malloc_history spfd5.12
dapptrace man spfquery
darwinup manpath spfquery5.10
db_archive mcxquery spfquery5.12
db_checkpoint mcxrefresh splain
db_codegen mddiagnose splain5.10
db_deadlock mdfind splain5.12
db_dump mdimport split
db_hotbackup mdls sqlite3
db_load mdutil srm
db_printlog memcached ssh
db_recover mesg ssh-add
db_stat mib2c ssh-agent
db_upgrade mib2c-update ssh-keygen
db_verify mkbom ssh-keyscan
dbicadmin mkfifo stat
dbicadmin5.12 mklocale stringdups
dbilogstrip mktemp strings
dbilogstrip5.10 mmroff stty.pl
dbilogstrip5.12 mnthome stty5.12.pl
dbiprof moose-outdated su
dbiprof5.10 moose-outdated5.12 sudo
dbiprof5.12 more sum
dbiproxy mp2bug sw_vers
dbiproxy5.10 msgs symbols
dbiproxy5.12 mvn symbolscache
dc nano syscallbypid.d
defaults native2ascii syscallbyproc.d
diff nbdst syscallbysysc.d
diff3 nc sysdiagnose
diffstat ncal syslog
dig ncurses5.4-config tab2space
dirname neqn tabs
diskhits net-snmp-cert tail
dispqlen.d net-snmp-config talk
ditto net-snmp-create-v3-user tar
dns-sd nettop tbl
dprofpp newaliases tccutil
dprofpp5.10 newgrp tclsh
dprofpp5.12 newproc.d tclsh8.4
dropdb nfsstat tclsh8.5
droplang nice tconf
dropuser nl tee
drutil nohup telnet
dscacheutil notificationconf testrb
dscl notifyutil texi2dvi
dserr nroff texi2pdf
dsexport nslookup texindex
dsimport nsupdate textutil
dsmemberutil ntp-keygen tfmtodit
dtruss ntpq tftp
du od tic
easy_install odutil tidy
easy_install-2.5 open tiff2icns
easy_install-2.6 opendiff tiffutil
easy_install-2.7 opensnoop time
ecpg openssl tkcon
efax orbd tkmib
efix osacompile tkpp
egrep osadecompile tkpp5.12
emacs osalang tmdiagnose
emacs-undumped osascript tmutil
emacsclient pack200 tnameserv
enc2xs package-stash-conflicts toe
enc2xs5.10 package-stash-conflicts5.12 top
enc2xs5.12 pagesize tops
encode_keychange par.pl topsyscall
env par5.12.pl topsysproc
eqn parl touch
eqn2graph parl5.12 tput
erb parldyn tr
errinfo parldyn5.12 trace
etags passwd traptoemail
ex paste treereg
execsnoop patch treereg5.12
expand pathchk trial
expect pathopens.d troff
extcheck pbcopy true
eyapp pbpaste tset
eyapp5.12 pcap-config tsort
false pcsctest tty
fax pcsctool twistd
fc pdfroff type
fddist perfdiagnose ubcontrol
fdesetup perl ul
fg perl5.10 ulimit
fgrep perl5.12 umask
file perlbug unalias
filebyproc.d perlbug5.10 uname
filtercalltree perlbug5.12 uncompress
find perldoc unexpand
find2perl perldoc5.10 uniq
find2perl5.10 perldoc5.12 units
find2perl5.12 perlivp unpack200
findrule perlivp5.10 unvis
findrule5.12 perlivp5.12 unzip
finger perlthanks unzipsfx
fixproc perlthanks5.10 update_dyld_shared_cache
fmt perlthanks5.12 uptime
fold pfbtops users
fontrestore pg_basebackup uucp
formail pg_config uudecode
format-sql pg_dump uuencode
format-sql5.12 pg_dumpall uuidgen
from pg_restore uulog
fs_usage pg_upgrade uuname
ftp pgrep uupick
funzip phar uustat
fuser phar.phar uuto
fwkdp php uux
fwkpfv php-config vacuumdb
gdiffmk phpize vi
gem pic view
gen_bridge_metadata pic2graph vim
gencat pico vimdiff
genstrings piconv vimtutor
getconf piconv5.10 vis
getopt piconv5.12 vm_stat
getopts pidpersec.d vmmap
gluedialect pkgbuild w
gluedialect5.10 pkill wait
gluedialect5.12 pl wall
gluedoc pl2pm wc
gluedoc5.10 pl2pm5.10 wdutil
gluedoc5.12 pl2pm5.12 weblatency.d
glueedit plockstat what
glueedit5.10 pltcl_delmod whatis
glueedit5.12 pltcl_listmod whereis
gluemac pltcl_loadmod which
gluemac5.10 plutil who
gluemac5.12 pmset whoami
gluescriptadds pod2html whois
gluescriptadds5.10 pod2html5.10 wifidiagnose
gluescriptadds5.12 pod2html5.12 wish
gnuattach pod2latex wish8.4
gnuclient pod2latex5.10 wish8.5
gnudoit pod2latex5.12 write
gnuserv pod2man wsgen
gnutar pod2man5.10 wsimport
grap2graph pod2man5.12 xar
grep pod2readme xargs
grn pod2readme5.10 xattr
grodvi pod2readme5.12 xattr-2.5
groff pod2text xattr-2.6
groffer pod2text5.10 xattr-2.7
grog pod2text5.12 xcode-select
grolbp pod2usage xcodebuild
grolj4 pod2usage5.10 xcrun
grops pod2usage5.12 xed
grotty podchecker xgettext.pl
groups podchecker5.10 xgettext5.10.pl
gunzip podchecker5.12 xgettext5.12.pl
gzcat podselect xip
gzexe podselect5.10 xjc
gzip podselect5.12 xml2-config
h2ph policytool xmlcatalog
h2ph5.10 post-grohtml xmllint
h2ph5.12 postgres_real xpath
h2xs pp xpath5.10
h2xs5.10 pp5.12 xpath5.12
h2xs5.12 ppdc xslt-config
hash ppdhtml xsltproc
hdid ppdi xsubpp
hdiutil ppdmerge xsubpp5.10
head ppdpo xsubpp5.12
heap pr xxd
hexdump pre-grohtml yes
hiutil priclass.d ypcat
host pridist.d ypmatch
hostinfo printenv ypwhich
hotspot.d printf zcat
hpftodit procmail zcmp
htmltree procsystime zdiff
htmltree5.12 productbuild zegrep
httpdstat.d productsign zfgrep
ibtool profiles zforce
iconutil prove zgrep
iconv prove5.10 zip
id prove5.12 zipcloak
idle psed zipgrep
idle2.5 psed5.10 zipinfo
idle2.6 psed5.12 zipnote
idle2.7 psql zipsplit
idlj pstopdf zless
indxbib pstruct zmore
info pstruct5.10 znew
infocmp pstruct5.12 zprint
/usr/sbinのコマンド
AELWriter cvgather kextstat
postlog slapindex
AppleFileServer cvlabel krbservicesetup
postmap slappasswd
BootCacheControl cvmkfs ktutil
postmulti slapschema
DevToolsSecurity cvupdatefs languagesetup
postqueue slaptest
DirectoryService dbmmanage localemanager
postsuper smbd
KernelEventAgent ddns-confgen logresolve
pppd snmetadump
Kobil_mIDentity_switch dev_mkdb lpadmin
praudit snmpd
NetBootClientStatus diskarbitrationd lpc
pwd_mkdb snmptrapd
PasswordService diskmanagementd lpinfo
qmasterca softwareupdate
ab disktool lpmove
qmasterd spctl
ac diskutil lsof
qmasterprefs spindump
accept distnoted lwresd
qmasterqd spray
accton dnsextd mDNSResponder
quotaoff sshd
amt dnssec-dsfromkey mDNSResponderHelper
quotaon sso_util
aosnotifyd dnssec-keyfromlabel makedbm
racoon stdethers
apachectl dnssec-keygen mkextunpack
racoonctl stdhosts
apxs dnssec-revoke mkfile
raddebug symstacks.rb
arp dnssec-settime mkpassdb
radiusconfig sysctl
arpaname dnssec-signzone mtree
radiusd syslogd
aslmanager dot_clean named
radmin system_profiler
asr dsconfigad named-checkconf
radwatch systemkeychain
audit dsconfigldap named-checkzone
raidutil systemsetup
auditd dseditgroup named-compilezone
rarpd tcpdump
auditreduce dsenableroot named-journalprint
rc.radiusd timed
authserver dtrace natd
reject timedc
automount edquota natutil
repquota tokenadmin
avbdeviced envvars ndp
revnetgroup traceroute
awacsd envvars-std netbiosd
rndc traceroute6
bless fdisk netstat
rndc-confgen uninstall
blued filecoordinationd networksetup
rotatelogs universalaccessd
bnepd genrandom newsyslog
rpc.lockd usernoted
cfprefsd gpt nlcontrol
rpc.statd uuchk
chat graphicssession notifyd
rpcbind uucico
checkgid gssd nsec3hash
rpcinfo uuconv
checkrad hdik ntpd
rtadvd uusched
chown htcacheclean ntpdate
rtsold uuxqt
chroot htdbm ntpdc
rwhod vifs
coreaudiod htdigest ntptrace
sa vipw
createhomedir htpasswd nvram
sc_auth visudo
cron httpd ocspd
screencapture vpnd
cupsaccept httpd-wrapper pboard
scselect vsdbutil
cupsaddsmb httxt2dbm pcscd
scutil weakpass_edit
cupsctl inituser pdisk
securityd webpromotion
cupsd installer periodic
sendmail xsanadmin
cupsdisable ioreg php-fpm
serverinfo xsanctl
cupsenable iostat pictd
setkey xscertadmin
cupsfilter ipconfig pkgutil
setquota ypbind
cupsreject isc-hmac-fixup postalias
sharing ypinit
cvadmin kadmin postcat
slapacl yppoll
cvdb kadmin.local postconf
slapadd yppush
cvdbset kdcsetup postdrop
slapauth ypset
cvfsck kextcache postfix
slapcat ypxfr
cvfsdb kextfind postkick
slapconfig zdump
cvfsid kextlibs postlock
slapdn zic
2013年6月30日
anchor
MacのTerminalにはいくつのコマンドが有るのか〜「どうせならUNIX的な方法で数えたらどう?」〜おっしゃるとおりです(∪^ω^)
先日こういう記事を書いたらBBSに情報をいただいた。
MacのTerminalにはいくつのコマンドが有るのか〜どういうコマンドが有るのか〜こうやって一覧を見ることができる
「MaxOS Xがunixであるが故に使い始めた私です。
コマンドの数を勘定する方法ですが、
% /bin/ls -1 /bin /sbin /usr/bin /usr/sbin | wc
とかやると一発です。いかにもunix的なやり方ですが、システムの自動管理などにはこういう手法は不可欠ですね。
私のシステムではこれらのディレクトリに1504のファイルがありました。」
「ついでに。シェルから呼び出せるコマンドのありかは環境変数またはシェル変数PATHに入っていますので、それを数え上げようと思えば以下のようにすればできます。
% /bin/ls -1 `echo $PATH| tr ":" " "`|wc
trは文字列の置換えを行うコマンドです。」
「すず」さん情報ありがとうございます。
なるほど、行数を数えるwcコマンドを使うのだな。
lsコマンドのオプションで「-1」(数字の1)を置くと1単語を一行でリストするから、ファイルの数を数えられるわけだ。
なるほど!知らなかった。
これは使わせてもらいます。
少し整理すると
ls -1 /bin /sbin /usr/bin /usr/sbin | wc -l
とするとコマンドの総数だけを表示してくれるようになりそう。
wcのオプションは「-l」(アルファベットのL)にすればファイル数だけを表示。
先日の記事ではデフォルトの4つのパスの数字だけを数えていたのだが、それ以外にパスを通したところもあるし、コマンドサーチパスを表示させて全部数えた方が正確な数はわかるよねと…とちらっと思いはしたけど、大した数ぢゃないしめんどくさいな…とシカトしていた。
しかしユニクサたるものそれぢゃいかんよね。
ということでコマンドサーチパスをリストしてそれを数えるというコマンドも情報をいただいた。
これも少し整理してみた。
ls -1 `echo $PATH| tr ":" " "`|wc -l
(これもlsのオプションは数字の1、wcのオプションはアルファベットのL)
こうすれば4つのデフォルトのコマンドサーチパスだけでなく、自分で通したサーチパスのコマンドも全部一気に数えてくれる(!)
なるほど、方法というのはあるものなのですね。
このtrというコマンドも知らなかった。
勉強になります。
情報ありがとうございました。
すずさんに教えてもらったコマンドを打ってみた
ls -1 /bin /sbin /usr/bin /usr/sbin | wcとすると3つ数字を出す
ファイル数と何かとキャラクター数かな
何かが何かは不明
何かが何かをmanして調べてみたが…ようわからん
そこでls -1 /bin /sbin /usr/bin /usr/sbin | wc -lとしてみた
こうするとすっきりとファイル数だけを表示するのでズバリの数がわかる
さらにデフォルトのパスだけでなく自分で通したコマンドサーチパス
もふくめた全部のコマンドの数を表示するコマンドも試してみた
ls -1 `echo $PATH| tr ":" " "`|wc -lで打つと1356という数が得られた
(上の行でしくじっているのは無視するように!)
2013年7月1日
anchor
MacのTerminalにはいくつのコマンドが有るのか〜「どうせならUNIX的な方法で数えたらどう?」〜<追記>さらに正確な数を抽出できる方法〜と思いきやこの問題は簡単ではない
先日軽い気持ちでMacのTerminalにはどんなコマンドが入っているのか、いくつくらい入っているのかと思ってこんな記事を書いた。
MacのTerminalにはいくつのコマンドが有るのか〜どういうコマンドが有るのか〜こうやって一覧を見ることができる
そしたら「UNIXのコマンドの話てるんだからどうせならUNIXのコマンド使って数えようよ」という指摘をいただいた。
ごもっともだ。
MacのTerminalにはいくつのコマンドが有るのか〜「どうせならUNIX的な方法で数えたらどう?」〜おっしゃるとおりです(∪^ω^)
そしたらさらにTwitterから「monoshiriG3」さんと「Gururi」さんからもっと正確な数を数えるコマンドを教えていただいた。
ありがとうございます。
このサイトは皆様のお知恵によって成り立っています。
「monoshiriG3」さんからいただいた情報はこちら
「lsでパイプするときは、1オプションはいりませんよ。あと、実行ファイルのみを数えるのでしたら、 ls -F パス名 | grep "*" |wc -l でどうでしょう。これだとシンボリックリンクのカウント重複もないと思いますよ」
確かにls -1で行数を出させるよりも実行ファイルを探させる方が本質に近いのかな。
整理すると/binのコマンドの数を知りたい時は、
ls -F /bin | grep "*" |wc -l
デフォルトのコマンドサーチパスにあるコマンドの数を出したいなら
ls -F /bin /sbin /usr/bin /usr/sbin | grep "*" |wc -l
これでよさそう。
自分で通したパスもコマンドサーチパスもチェックするなら、先の「すず」さんの情報と組み合わせて
ls -F `echo $PATH| tr ":" " "` | grep "*" |wc -l
とできるかな。
確かに違うパスに同じコマンドが入っているみたいで、シンボリックリンクがあるのではないかという気がしていた。
GUIでは見えないが、見えてるエイリアスもある。
そういうのは大した数ではないので、シカト…と思っていたらしっかりそこを指摘されてしまった。
シンボリックリンクは確かに外したいが、このエイリアスは除外した方がいいのかと思ってオリジナルをたぐってみるとオリジナルは違うコマンドだったりする。
ひとつのコマンドセットに機能に合わせて違う名前のエイリアスがあるのだろうか?
この場合のコマンドはひとつと勘定するのか、ふたつと勘定するのか?
ふたつだよね〜
これは除外したくないよね…
そう思ってあちこちパスを見ていたら、Xcodeのコマンドが多数あることに気がついた。
clamscanのコマンドはパスが通っていないことに気がついた。
このコマンド数の問題はどうやら、簡単ではない問題を含んでいる。
そういうのは後からインストールしたものだから、数に含めないというルールが最適かな。
いや、今そういうルールに決めた。
(Xcodeぐらい開発者でなくても入れるけどなぁ…どうなんだろ?)
そう思っていたら「Gururi」さんからそんなことしなくても「実行ファイルの数を数えるコマンド」というそのものズバリのコマンドを教えてもらった。
wich -as
と打ってEnter、tabキーを2回叩く。
すると実行ファイルの総数が出て「全部表示するか?y/n」と聞いてくる。
yを叩くと先日lsコマンドでやったコマンドのリストも出力した。
これで解決…と思ったが数が合わない。
それぞれバラバラな結果を出しているのでどれが正しい数字か分からない。
この企画、実は「Macのコマンドってたくさんあるんだよ〜」ということを書きたかっただけのゆる〜い企画で、だからコマンドの数も「1000超えてるか超えてないか」を知りたかっただけだった。
で、100の位なんか切り上げ…というくらいのゆる〜い考えで数え始めたんだけど、ユニクサの皆さんは当然そういうゆる〜い考え方は許せないらしい。
というか
「コマンド数えるのになんでGUIでFinderに表示させた数の合計足して計算してんの?
コマンドならコマンドで数える方がいいでしょ?」
と言われた時点で、私、ぐうの音も出ないんですが…
ということでおおよその近似値は出ました。
Macのデフォのコマンドの数は
1100から1400の間
ということになりそうです(`;ω;´)
情報いただいたlsを使った「実行ファイルを数える」コマンド
実行ファイルでgrepしてwcでリストした実行ファイルの行数を数える
この方法ならシンボリックリンクの重複を除外できるとのこと
/binは37でまあここは異論がないところ
上がコマンドサーチパスをechoさせてその中の実行ファイルの数を数えるコマンド
下がデフォルトの4つのパスのコマンドを数える構文
ぞれぞれ1190と1187という数字が出た
大分少ないのはそれだけシンボリックリンクやエイリアスの重複があるということか
ここでふと思ったのはエイリアスになっているコマンドのオリジナルを
表示させると違うコマンドになっているケースが結構多いことだ
これはひとつのコマンドと勘定すべきかふたつと勘定するべきか…
ふたつだよなぁ…シェルでコマンド打っている時にはそれがエイリアスか
どうかなんて気にしないし違うコマンドならふたつと数えるよなぁ…
どうやら「コマンドどうやって数える問題」は考えていたほど簡単な問題ではない…
と思っていたら「Gururi」さんからコマンドを数えるという
そのものズバリのコマンドを教えてもらった
wich -asと打ってEnter、tabを2回叩くと
実行ファイルの総数とそのリストを表示するか聞いてくる
1397と前のふたつの方法よりもちょっと多めの数が出てきた
Xcodeとかも含んでいるのだろうか?
先ほどのコンファームでyを叩くとリストも表示した
こういうシンプルな方法が有ったんだ…
でも数がそれぞれバラバラなのはどういう解釈の違いだろうか…
2013年7月1日