퍼미션을 확인하려면
ls -l 로 확인이 가능하다.
하지만 drwxfosfkeof 씨바 졸라 무슨 외계어 마냥 이해하기도 힘들고 보기도 불편하다.
그렇다 깔끔한 755 스타일로 바꿔보자! 755스타일에 대한 설명은 여기를 참고
어자피 퍼미션 바꿀 때 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라는 강력하고도 이상한 언어다.
문제는 매번 이렇게 길게 명령어를 칠 수는 없으니 단축키로 등록하자!
방법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을 입력한다.
훌륭하지 않은가? 매번 퍼미션 계산하고 앉아있는 상황은 피할 수 있다!
추가:
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을 실행시켜 보면 이렇게 잘 나온다.
방법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을 볼 수 있다. 물론 숫자 퍼미션도 잘 나온다!
끝
감사:
우분투한국사용자모임에서 질문에 도움을 주신 최정환님께 감사드린다.
색깔이 사라지는 문제는 최민호님이 해결해 주셨다. 감사드린다.
완성된 코드를 첨부한다.
###### 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
참고:
그런데 아직 저 옵션을 썼을 때 color highlighting이 안 돼서 불편한데 해결 방법을 찾아보자.
ReplyDelete이것은 최민호 님이 해결해 주심
Deleteexport LSCOLORS=GxFxCxDxBxegedabagaced 이 셋팅이 색깔이 그리 예쁘지가 않다. 내맘대로 바꿔보자.
ReplyDeletehttp://geoff.greer.fm/lscolors/