はじめに
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$
文法が異なるのでエラーになる.
Counter: 2973,
today: 1,
yesterday: 0
最終更新: 2016-07-11 (月) 23:03:21 (JST) (2817d) by shinnai(shinnai)