Self-Improvement

Linux 특성2(변수, 메타데이터, history, alias, 환경파일) 본문

리눅스/명령어

Linux 특성2(변수, 메타데이터, history, alias, 환경파일)

JoGeun 2018. 10. 21. 13:33

*Variable(변수)
 1.지역변수 : #VAR=5
 2.환경변수(=전역) : #export VAR=5
 -확인할때는 #echo $VAR(=변수명), 삭제할때는 #unset VAR(=변수)

 //지역변수 vs 환경변수(=전역)
 지역변수 - #var=5 -> #echo $var -> #bash -> #echo $var (값이 안나오게됨)
 환경변수 - #export var=4 -> #bash -> #echo $var (값이 나옴)
 -환경 변수는 자신이 선언한 쉘의 서브쉘에서 적용, 상위 쉘에는 적용되지 않음

 //set(모든변수 출력) vs env(환경변수만 출력) 
 #set | wc -l ; env | wc -l (각 몇개인지 알아낸다음)
 #var1=centos, #export var2=linux -> #set | wc -l ; env | wc -l (set개수는 2개 증가 env는 1개증가로 볼 수 있다.)

 //환경변수 종류
 #echo $PS1 (프롬프트)
 #echo $PS2 (명령어가 끝나지 않을시 계속 이어지게끔 해주는것)
 #echo $HOME (사용자의 홈디렉터리)
 #echo $PWD (현재 작업중인 경로)
 #echo $LOGNAME (현재 사용자 로그인할시 이름)
 #echo $TERM (터미널 정의 변수, ex) #export TERM=vt100)
 #echo $LANG (언어 변수)
 #echo $USER (현재 사용자이름 변수)
 #echo $UID (현재 사용자 UID)
 #echo $PATH (명령어들 경로를 모아놓은, ex) #export PATH=$PATH:/bin -> 명령어 경로를 계속 적용시키고 싶으면 #vi ~/.bash_Profile에 적는다.)

 3.특수변수 : $$, $?, $!, $0, $1..
 #echo $$ (현재쉘의 PID, =#ps로 보는것과 같음)
  ex) #touch tmp.$$ (자주 사용하는 형식)
 #echo $? (이전에 수행된 명령어의 수행여부에 관한 리턴값, 0이면 정상 아니면 비정상)
 #echo $! (이전에 백그라운드로 실행된 프로세스의 PID번호)

 4.인자변수
 -$로 표시하여 인자변수의 값이 몇 번째 인지 나타낼 수 있다.

*Metacharacter(메타캐릭터)
 ''(작은 따옴표) : 쉘이 해석 할 수 없도록 막아준다
 ""(큰 따옴표) : 쉘이 해석 할 수 없도록 막아준다. 단 인식되는 문자($, '', \)들도 있다
 ``(역 따옴표) : 쉘이 해석할 때 명령어로 인식한다.
  =ex) #touch server_`date +%m%d`.log
 \(역 슬래쉬) : 바로 이후에 있는 문자를 쉘이 해석 할 수 없도록 막는다
  =ex) #\CMD (CMD의 alias을 뺀 상태로 명령)
  =ex) #CMD\ (CMD가 끝이 안났다고 생각하여 그 아랫줄에 계속 됨)
 ;(세미콜론) : 한개의 라인에 여러개 명령어 수행할 때 사용

*history (사용자의 명령어를 저장하며 Stack 공간에 할당)
 #history
 HISTSIZE=1000
 HISTFILE=~/.bash_history (#history했을시 나오는 명령어 목록)
 HISTFILESIZE=1000

 //HISTTIMEFORMAT 변수 (history했을시 해당 명령어 사용시간이 나오게해주는 것)
 #man bash -> /HISTTIMEFORMAT 검색해서 %F, %T에 관한 정보 얻기 (언어가 영어야 검색가능 #export LANG=en_US.UTF-8)
 #vi /etc/profile -> export HISTTIMEFORMAT="%F %T   " -> #. /etc/profile

*alias(별칭)
 #alias cp='cp -i' (alias 등록, ~/.bashrc에 등록시 계속 적용)
 #alias cp (alias 확인)
 #unalias cp (alias 삭제)
 
 //alias 이름과 명령어 이름이 중복되는 경우
 -alias을 우선시함

*환경파일 (사용자와 root 로그인시 좀 다름)
 //사용자가 로그인시 읽혀지는 파일순서
 1./etc/profile(관리자 설정)
 2./etc/profile.d/*.sh
 3.~/.bash_profile(사용자 설정, 파일이 없으면 ~/.bash_login -> 없으면 -> ~/.profile)
 4.쉘 실행 (~/.bashrc read -> /etc/bashrc)
 
 //쉘 or 서브쉘이 실행 될때 읽혀지는 파일순서
 1.~/.bashrc(사용자)
 2./etc/bashrc(관리자)
 3./etc/profile.d/*
 
 //사용자가 로그아웃시 읽혀지는 파일
 1.~/.bash_logout

 //예제
 -/etc/profile, /etc/profile.d/test.sh(test.sh을 만듬), ~/.bash_profile, ~/.bashrc, ~/etc/bashrc 파일에 vi로 열어서 첫번째 줄에 echo "|-----> 파일이름 read" 해놓으며 telnet으로 로그인하거나 #bash 쉘 생성하면 뜨게됨 , ~/.bash_logout에는 clear은 주석처리하고 echo "|------>파일이름" 하기