준호씨의 블로그

osx에서 coreutils(gnu util) 사용하기. grep, find, tail 등등 본문

개발이야기

osx에서 coreutils(gnu util) 사용하기. grep, find, tail 등등

준호씨 2018. 2. 25. 20:34
반응형

osx에도 grep, find, tail 등등 gnu커맨드와 비슷한 커맨드들이 있습니다. 그런데 gnu유틸의 커맨드들과는 조금씩 동작이 다른 경우가 있는데요.

예를 들어 아래와 같이 -n 옵션을 뒤에 적어 주면 해당 옵션은 무시되고 오류가 발생하는데요.

$ tail -f some.log -n 3
tail: -n: No such file or directory
tail: 3: No such file or directory

==> some.log <==
hello
world
nice
to
meet
you

-n 옵션을 앞에 적어주면 잘 됩니다.

$ tail -n 3 -f some.log
to
meet
you

그에 비해 리눅스에서는 -n을 앞에 적으나 뒤에 적으나 잘 되는데요. 이럴 때 리눅스에서 사용하는 coreutils(gnu util)을 설치해 주면 osx에서도 리눅스에서 처럼 -n을 뒤에 붙여서도 사용할 수 있게 됩니다.

 

osx에 coreutils(gnu util) 설치하기

$ brew install coreutils

설치 후에 나오는 정보에 PATH 정보를 추가해 주라는 문구가 나타납니다. 혹시 놓쳤다면 brew info coreutils로 확인할 수 있습니다.

$ brew info coreutils
...
==> Caveats
Commands also provided by macOS and the commands dir, dircolors, vdir have been installed with the prefix "g".
If you need to use these commands with their normal names, you can add a "gnubin" directory to your PATH with:
  PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
...

bash를 사용하면 ~/. bashrc에 추가해 주고 zsh을 사용하면 ~/. zshrc에 PATH 내용을 추가해 줍니다.

 

이제 OSX에서도 리눅스에서 처럼 tail 명령어에서 -n 옵션을 뒤에 붙여서도 사용할 수 있게 되었습니다.

$ tail -f some.log -n 3
to
meet
you

 

tail 외에도 다양한 명령어들을 사용할 수 있습니다.

$ ls
'['	    chcon    cp       dircolors   factor   id	     ls       nice     pathchk	  readlink   sha224sum	 sort	  tac	    true       unlink   yes
 b2sum	    chgrp    csplit   dirname	  false    install   md5sum   nl       pinky	  realpath   sha256sum	 split	  tail	    truncate   uptime
 base32     chmod    cut      du	  fmt	   join      mkdir    nohup    pr	  rm	     sha384sum	 stat	  tee	    tsort      users
 base64     chown    date     echo	  fold	   kill      mkfifo   nproc    printenv   rmdir      sha512sum	 stdbuf   test	    tty        vdir
 basename   chroot   dd       env	  groups   link      mknod    numfmt   printf	  runcon     shred	 stty	  timeout   uname      wc
 basenc     cksum    df       expand	  head	   ln	     mktemp   od       ptx	  seq	     shuf	 sum	  touch     unexpand   who
 cat	    comm     dir      expr	  hostid   logname   mv       paste    pwd	  sha1sum    sleep	 sync	  tr	    uniq       whoami
반응형
Comments