GNU Core Utilitiesをインストール
更新履歴
- 初版 2016/07/11
- 更新日 2017/12/04
はじめに
- macOSに入っているコマンドは,BSDで提供されたものなので,一部のコマンドがLinuxと動作が異なる.たとえばdateコマンドは日付けフォーマットの方法が異なるので互換性が無くて困る.
- そんな時には,GNU Core UtilitiesをMacにインストールすれば,Linuxと互換性が高くなる.この手順書ではインストールとパスの設定について説明する.
インストール
- パッケージを探す.
MBA2014:~ ujpadmin$ brew search coreutils
coreutils xml-coreutils
MBA2014:~ ujpadmin$
インストールする.
MBA2014:~ ujpadmin$ brew install coreutils
==> Downloading https://homebrew.bintray.com/bottles/coreutils-8.25.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring coreutils-8.25.yosemite.bottle.tar.gz
==> Caveats
All commands have been installed with the prefix 'g'.
If you really need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
Additionally, you can access their man pages with normal names if you add
the "gnuman" directory to your MANPATH from your bashrc as well:
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
==> Summary
🍺 /usr/local/Cellar/coreutils/8.25: 425 files, 8.3M
MBA2014:~ ujpadmin$
- インストール完了.コマンド群がインストールされたパスが表示されている.
インストールされたコマンドを確認
- ファイルを確認.
MBA2014:~ ujpadmin$ ls /usr/local/opt/coreutils/libexec/gnubin
[ du mkdir rm tee
base32 echo mkfifo rmdir test
base64 env mknod runcon timeout
basename expand mktemp seq touch
cat expr mv sha1sum tr
chcon factor nice sha224sum true
chgrp false nl sha256sum truncate
chmod fmt nohup sha384sum tsort
chown fold nproc sha512sum tty
chroot groups numfmt shred uname
cksum head od shuf unexpand
comm hostid paste sleep uniq
cp id pathchk sort unlink
csplit install pinky split uptime
cut join pr stat users
date kill printenv stdbuf vdir
dd link printf stty wc
df ln ptx sum who
dir logname pwd sync whoami
dircolors ls readlink tac yes
dirname md5sum realpath tail
MBA2014:~ ujpadmin$
- リストで再度確認.
MBA2014:~ ujpadmin$ ls -la /usr/local/opt/coreutils/libexec/gnubin
total 832
drwxr-xr-x 106 ujpadmin admin 3604 1 20 19:55 .
drwxr-xr-x 5 ujpadmin admin 170 1 20 19:55 ..
lrwxr-xr-x 1 ujpadmin admin 12 1 21 03:56 [ -> ../../bin/g[
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 base32 -> ../../bin/gbase32
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 base64 -> ../../bin/gbase64
lrwxr-xr-x 1 ujpadmin admin 19 1 21 03:56 basename -> ../../bin/gbasename
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 cat -> ../../bin/gcat
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 chcon -> ../../bin/gchcon
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 chgrp -> ../../bin/gchgrp
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 chmod -> ../../bin/gchmod
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 chown -> ../../bin/gchown
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 chroot -> ../../bin/gchroot
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 cksum -> ../../bin/gcksum
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 comm -> ../../bin/gcomm
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 cp -> ../../bin/gcp
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 csplit -> ../../bin/gcsplit
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 cut -> ../../bin/gcut
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 date -> ../../bin/gdate
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 dd -> ../../bin/gdd
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 df -> ../../bin/gdf
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 dir -> ../../bin/gdir
lrwxr-xr-x 1 ujpadmin admin 20 1 21 03:56 dircolors -> ../../bin/gdircolors
lrwxr-xr-x 1 ujpadmin admin 18 1 21 03:56 dirname -> ../../bin/gdirname
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 du -> ../../bin/gdu
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 echo -> ../../bin/gecho
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 env -> ../../bin/genv
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 expand -> ../../bin/gexpand
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 expr -> ../../bin/gexpr
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 factor -> ../../bin/gfactor
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 false -> ../../bin/gfalse
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 fmt -> ../../bin/gfmt
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 fold -> ../../bin/gfold
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 groups -> ../../bin/ggroups
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 head -> ../../bin/ghead
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 hostid -> ../../bin/ghostid
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 id -> ../../bin/gid
lrwxr-xr-x 1 ujpadmin admin 18 1 21 03:56 install -> ../../bin/ginstall
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 join -> ../../bin/gjoin
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 kill -> ../../bin/gkill
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 link -> ../../bin/glink
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 ln -> ../../bin/gln
lrwxr-xr-x 1 ujpadmin admin 18 1 21 03:56 logname -> ../../bin/glogname
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 ls -> ../../bin/gls
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 md5sum -> ../../bin/gmd5sum
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 mkdir -> ../../bin/gmkdir
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 mkfifo -> ../../bin/gmkfifo
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 mknod -> ../../bin/gmknod
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 mktemp -> ../../bin/gmktemp
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 mv -> ../../bin/gmv
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 nice -> ../../bin/gnice
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 nl -> ../../bin/gnl
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 nohup -> ../../bin/gnohup
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 nproc -> ../../bin/gnproc
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 numfmt -> ../../bin/gnumfmt
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 od -> ../../bin/god
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 paste -> ../../bin/gpaste
lrwxr-xr-x 1 ujpadmin admin 18 1 21 03:56 pathchk -> ../../bin/gpathchk
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 pinky -> ../../bin/gpinky
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 pr -> ../../bin/gpr
lrwxr-xr-x 1 ujpadmin admin 19 1 21 03:56 printenv -> ../../bin/gprintenv
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 printf -> ../../bin/gprintf
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 ptx -> ../../bin/gptx
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 pwd -> ../../bin/gpwd
lrwxr-xr-x 1 ujpadmin admin 19 1 21 03:56 readlink -> ../../bin/greadlink
lrwxr-xr-x 1 ujpadmin admin 19 1 21 03:56 realpath -> ../../bin/grealpath
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 rm -> ../../bin/grm
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 rmdir -> ../../bin/grmdir
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 runcon -> ../../bin/gruncon
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 seq -> ../../bin/gseq
lrwxr-xr-x 1 ujpadmin admin 18 1 21 03:56 sha1sum -> ../../bin/gsha1sum
lrwxr-xr-x 1 ujpadmin admin 20 1 21 03:56 sha224sum -> ../../bin/gsha224sum
lrwxr-xr-x 1 ujpadmin admin 20 1 21 03:56 sha256sum -> ../../bin/gsha256sum
lrwxr-xr-x 1 ujpadmin admin 20 1 21 03:56 sha384sum -> ../../bin/gsha384sum
lrwxr-xr-x 1 ujpadmin admin 20 1 21 03:56 sha512sum -> ../../bin/gsha512sum
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 shred -> ../../bin/gshred
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 shuf -> ../../bin/gshuf
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 sleep -> ../../bin/gsleep
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 sort -> ../../bin/gsort
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 split -> ../../bin/gsplit
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 stat -> ../../bin/gstat
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 stdbuf -> ../../bin/gstdbuf
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 stty -> ../../bin/gstty
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 sum -> ../../bin/gsum
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 sync -> ../../bin/gsync
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 tac -> ../../bin/gtac
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 tail -> ../../bin/gtail
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 tee -> ../../bin/gtee
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 test -> ../../bin/gtest
lrwxr-xr-x 1 ujpadmin admin 18 1 21 03:56 timeout -> ../../bin/gtimeout
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 touch -> ../../bin/gtouch
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 tr -> ../../bin/gtr
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 true -> ../../bin/gtrue
lrwxr-xr-x 1 ujpadmin admin 19 1 21 03:56 truncate -> ../../bin/gtruncate
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 tsort -> ../../bin/gtsort
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 tty -> ../../bin/gtty
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 uname -> ../../bin/guname
lrwxr-xr-x 1 ujpadmin admin 19 1 21 03:56 unexpand -> ../../bin/gunexpand
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 uniq -> ../../bin/guniq
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 unlink -> ../../bin/gunlink
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 uptime -> ../../bin/guptime
lrwxr-xr-x 1 ujpadmin admin 16 1 21 03:56 users -> ../../bin/gusers
lrwxr-xr-x 1 ujpadmin admin 15 1 21 03:56 vdir -> ../../bin/gvdir
lrwxr-xr-x 1 ujpadmin admin 13 1 21 03:56 wc -> ../../bin/gwc
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 who -> ../../bin/gwho
lrwxr-xr-x 1 ujpadmin admin 17 1 21 03:56 whoami -> ../../bin/gwhoami
lrwxr-xr-x 1 ujpadmin admin 14 1 21 03:56 yes -> ../../bin/gyes
MBA2014:~ ujpadmin$
ファイル検索パスの設定
- .bashrcに以下の設定を追加.
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
dateコマンドを実行してみる
- Linuxで動くコマンドファイルパスを確認.
MBA2014:ShellTest ujpadmin$ which date
/usr/local/opt/coreutils/libexec/gnubin/date
MBA2014:ShellTest ujpadmin$
- 実行.
MBA2014:ShellTest ujpadmin$ date -d "1 day" +"%Y/%m/%d"
2016/07/01
MBA2014:ShellTest ujpadmin$
- Mac用で実行.
MBA2014:ShellTest ujpadmin$ /bin/date -d "1 day" +"%Y/%m/%d"
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
MBA2014:ShellTest ujpadmin$
- 文法が異なるのでエラーになる.

