2013-10-19

맥/리눅스, 터미널에서 퍼미션 755 스타일로 확인하기

퍼미션을 확인하려면

 

ls -l 로 확인이 가능하다.

Screen Shot 2013 10 18 at 5 22 20 PM

 

하지만 drwxfosfkeof 씨바 졸라 무슨 외계어 마냥 이해하기도 힘들고 보기도 불편하다.

 

그렇다 깔끔한 755 스타일로 바꿔보자! 755스타일에 대한 설명은 여기를 참고

http://blog.hansune.com/451

 

어자피 퍼미션 바꿀 때 755나 777 이런 식으로 하지 않는가? 그런데 저딴 식으로 나와서는 곤란하다. 그래서 바꿔보자!

 

755스타일을 구현하는 방식이다.

ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'

 

드디어 알아볼 수 있게 나온다! 하지만 저 명령어는 무슨 외계어인지 알 수가 없다. awk라는 강력하고도 이상한 언어다.

Screen Shot 2013 10 18 at 5 26 37 PM

 

문제는 매번 이렇게 길게 명령어를 칠 수는 없으니 단축키로 등록하자!

 

방법1. 맥에서 하는 방법

 

파일을 만든다.  기본적으로 없다. (마운틴 라이언)

touch ~/.bash_profile

 

파일을 수정한다.

sudo nano ~/.bash_profile

 

이것을 추가한다. 나는 단축키로 lsn을 치면 저게 나오도록 했다. n은 nummeric permissions의 약자다.

alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

맥 터미널을 껏다가 켠다. lsn을 입력한다.

Screen Shot 2013 10 18 at 5 33 00 PM

 

훌륭하지 않은가? 매번 퍼미션 계산하고 앉아있는 상황은 피할 수 있다!

 

추가:

awk로 계산된 퍼미션 값이 나올 때 터미널 텍스트 색깔이 사라지는 문제가 있었는데, ls 앞에 CLICOLOR_FORCE=1을 붙여주면 된다.

alias lsn="CLICOLOR_FORCE=1 ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

색깔이 적용된 lsn을 실행시켜 보면 이렇게 잘 나온다.

Screen Shot 2013 10 19 at 7 38 18 AM

 

방법2. 리눅스에서 하는 방법.

리눅서들은 대부분 고수일 테니까 이것만 알려줘도 될 것 같다.

맥에서는  ~/.bash_profile 이것을 수정하지만, 리눅스에서는 조금 다르다.

 

경우1> 콘솔만 사용하는 경우 (라즈베리파이의 경우)

홈폴더에 있는 ~/.profile 을 수정하면 된다.

 

경우2> X-window에서 Terminal을 사용하는 경우 (Ubuntu의 경우)

홈폴더에 있는 ~/.bashrc 를 수정한다.

 

텍스트 색깔이 안 나오는 버젼

#without color
#alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

텍스트 색깔이 나오는 버젼 --color=always를 추가해 준다. 이것은 ls 옵션 중 하나이다.

#with color
alias lsn="ls -alG --color=always | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

리눅스에서도 색깔이 적용된 lsn을 볼 수 있다. 물론 숫자 퍼미션도 잘 나온다!

Screen Shot 2013 10 19 at 7 35 57 AM 

 

감사:

우분투한국사용자모임에서 질문에 도움을 주신 최정환님께 감사드린다.

색깔이 사라지는 문제는 최민호님이 해결해 주셨다. 감사드린다.

 

완성된 코드를 첨부한다.

###### Terminal coloring Settings
### change terminal color by jong
### this is the original file.
### http://stackoverflow.com/questions/1550288/mac-os-x-terminal-colors

# enable coloring for terminal
export CLICOLOR=1

# enable coloring forced in all area
export CLICOLOR_FORCE=1

### prompt sets
##mac default
#export PS1="\h:\W \u\$ "
##raspbian
#export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] "
##custom-1 (good) (/w blue 01;34m)
#export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] $ "
##custom-2 (good) (/w cyan ~ 01;36m)
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;36m\]\w\[\033[00m\] $ "

### LSCOLOR sets
## default LSCOLOR
#export LSCOLORS=exfxcxdxbxegedabagacad
## white theme
#export LSCOLORS=ExFxBxDxCxegedabagacad
## dark theme
#export LSCOLORS=GxFxCxDxBxegedabagaced
## custom-1
#export LSCOLORS=GxFxCxDxBxegedabagaced
#export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
## custom-2 (good)
#export LSCOLORS=Exfxcxdxbxegedabagacad
##custom-3 (good)
export LSCOLORS=ExFxCxDxBxegedabagacad

 

###### making sh alias

### lsn -al with numberic permissions with coloring
### http://agileadam.com/ls-al-octal-permissions
alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

###EOF

 

참고:

http://agileadam.com/ls-al-octal-permissions

3 comments:

  1. 그런데 아직 저 옵션을 썼을 때 color highlighting이 안 돼서 불편한데 해결 방법을 찾아보자.

    ReplyDelete
  2. export LSCOLORS=GxFxCxDxBxegedabagaced 이 셋팅이 색깔이 그리 예쁘지가 않다. 내맘대로 바꿔보자.

    http://geoff.greer.fm/lscolors/

    ReplyDelete