정보통신공학과 노선변경기
리눅스 기초 3일차 UMASK, SHELL, CUT, AWK 본문
chmod 777 aa ==>other에서도 읽기쓰기 실행을 할 수 있는 문제점이 있다.
원래 파일은 일반적으로 읽고쓰기 권한이 거의 다인데, 실행권한이 주어지면 초록색으로 강조된다.
파일의 full permission = 666, 디렉토리의 full permission = 777
기본적으로는 file은 644권한을 default로 갖고 생성된다.
*UMASK, 기본권한을 설정
기본: umask = 0022, 왜 default를 만들어놓았는가?= 보안상의 이유, 실행권한이 있다면 뭐가 있는지 모르는데 접근가능하다면 위험하니까..,
022를 줘도 0022로 되는 이유→ umask에서는 special permission(1755같은것)을 따로 명시하지 않기때문.
파일= 666-027 = 640, 666-022 = 644
*0027로 둔다면
파일 권한 → 640 other 는 읽기가 안돼, 보안성이 더 크다
디렉토리 권한 → chmod o+w aaa ,,,,other에 write권한부여하면 색깔 하이라이트되서 나온다. 파일을 아무나 생성, 삭제가능하다는 뜻
현재 터미널에서 umask 바꾼다고 해도 로그인하는 모든 사용자에게 적용되거나 하지않는다.
.bash_profile == 로그인할 때 적용되는 설정 보관
특정 사용자에게 반영 bash_profile 에 umask값 따로 명시해줘야한다.
***********SHELL 명령어 사용*************
ls ~- ==> 이전 디렉토리 의 ls, ls ~+ ==> 현재 디렉토리의 ls
*별표문자
ls fi* ==> fi포함 하나이상의 문자를 포함하는 list 보여준다.
*물음표문자
하나의 문자대체
*대괄호 문자
aa[ad] ==> aaa or aad 를 이야기한다. ex) ls -ld aa[ad] aaa aad 모두 출력
*인용부호 메타문자
echo ==> 화면에 출력을 해준다. ex) echo user ==> user라는 글자가 출력
$가 앞에 붙으면 변수 혹은 환경변수를 의미한다. echo $user ==> user라는 변수내용 출력
변수 선언할 때 대문자는 이미 환경변수로 설정된 단어가 있을 수 있으니 웬만하면 소문자로 선언.
ex) a=10 , echo $a ==> 10이 출력됨
‘ : 변수를 무시하고 실행 ex) echo ‘$USER’ ==> USER 환경변수의 내용이 아닌 $USER 그대로 출력
“ : 변수를 인정하여 실행 ex) echo “$USER” ==> USER 환경변수의 내용이 출력, $가 없는 부분은 그대로출력
`, $( ): 안에 들어가는 명령어의 실행을 의미한다. ex) echo `ls -l` ,,,,, echo $(ls -l)
*파일 디스크립터
cat /etc/* 1> tmp/aa 2>&1 ==> cat의 결과물을 tmp/aa에 출력하고, 에러(2)를 1에 또한 저장
<: 표준 입력, >: 표준 출력
cat < aa 2> bb ==> aa를 cat에 redirection하고 그에대한 에러만 bb에 넣어라
0: 표준 입력(생략가능) , 1: 표준 출력, 2: 표준 에러
*파이프문자
선행 명령어의 output을 후행 명령어의 input으로 집어넣는다.
ex) ls -l | more ==> ls -l 의 결과를 more 의 input으로 넣고 출력
echo $? ==> 앞의 명령어, 출력에 오류가 있다면 1, 없다면 0으로 출력
a 파일이 없는상황 에서
ex) cat a && ls -l ==> a가 없으므로 출력결과 아예없음, 앞의 명령어 참 거짓 따라 뒤의 명령어 실행
ex) cat a ; ls -l ==>a 가 없다는 거짓임에도 ls -l 의 명령어 실행
*명령어 히스토리
.bash_history 에 히스토리값이 저장된다. 히스토리는 logout을 할 때 생긴다, 버퍼에 쌓아뒀던 히스토리를 로그아웃하면 .bash_logout에 집어넣는다.
앞으로 만드는 user의 umask 값을 고정하고 싶다?=> /etc/skel/ 의 .bashrc 에서 umask 값 넣어주고 useradd
/etc/skel/ 밑에 파일이나 디렉토리 생성시키면 새로운 user 생성할 대 그 파일이 그대로 새로운 user의 홈디렉토리에 생성된다.
History 명령어는 버퍼에 다 쟁여놓지만, 파일에 저장되는 히스토리인 .bash_history에는 로그아웃해야 버퍼가 적용된다.
History 검색으로 나온 명령어들, !명령어 숫자 ==> 실행된다. ex) history에서 114 clear ==> !114 하면 clear
ctrl + r ==> 히스토리에서 최근 실행한 명령어를 검색
************Shell programing*************
(gedit data ==> g 에디터로 data 파일 만들고 거기에 우분투 data 붙여넣기 진행해줬음)
*cut (잘라내서 없애는게 아닌 잘라내서 그것만 보여주는 것)
형식
cut [옵션] “파일이름”
사용 예 #cut –c 2-4 data
옵션
-c 문자수로 열을 계산해서 출력한다
-s <구분자> 필드 구분자를 사용한다.
-d <구분자> 파일 내의 필드로 따져서 추출한다.
-f field 의 약자
(((etc/passwd의 cut 적용..)))
cut -d “:” -f 1,3,7 /etc/passwd ==> : 구분자를 기분으로 1,3,7 필드를 가져와서 출력
그것을 위의 5개만 표현 ==> cut -d ":" -f 1,3,7 /etc/passwd | head 5
*paste
형식 paste [옵션] “파일이름”“파일이름”
사용 예 #paste –d : exam1 exam2
옵션 -s 한 파일의 내용을 한 줄로 보여준 후 다른 파일의 내용을 한 줄로 덧붙인다.
-d 출력되는 내용의 구분자를 지정한다.
*sort
형식
sort [옵션] “파일이름”
사용 예 # sort –k2 –r data
옵션 -f 대소문자를 구분하지 않는다.
-r 내림차순으로 정렬
-b space를 무시한다.
-k 필드 번호를 나타낸다.
-t <구분자> 필드 구분자로 <구분자>를 사용한다.
-n 숫자 순서로 정렬
sort를 옵션 없이 사용할 경우에는 첫 번째 필드를 기준으로 오름차순으로 정렬된다.
sort -t " " -k2 data ==> 공백을 기준 두번째 필드로 data를 정렬
sort -t : -k3 -n /etc/passwd | head -10 ==> 콜론 기준 세번째 필드를 숫자로 인식하여 위의 10줄 출력
sort -t : -n -k3 /etc/passwd | cut -d : -f 3 | head ==> 콜론기준 세번째 필드를 숫자로 인식하고, 콜론기준 세번째 것만 잘라서 head 10줄 출력
cut -d : -f 3 /etc/passwd | sort -n | head ==> 콜론기준 세번째 필드 잘라서, 숫자로 오름차순 정렬, 위의 10줄
-t 뒤에는 반드시 arguement(구분자)가 나와야한다.
*SED
sed -n '/011/p' data ==> 011 들어가는 줄만 보여준다
sed '/011/d' data ==> 011 들어가는 줄 삭제하고 보여준다.
sed '/seoul/d' data ==> seoul 들어가는 줄 삭제하고 보여준다
echo "s/japan/bosung/g" > sedfilter1
sed -f sedfilter1 data ==> japan을 bosung으로 바꾼 결과 출력
cat > sedfilter2 ==> cat을 이용한 필터를 적용할 때 옆으로 나열 X, 필터링 하나당 엔터로 줄교환
df -hTP | sed ‘2,$s/%/ /g’ ==> df의 결과를 2번째줄부터 마지막까지 %를 공백으로 교체해준다.
*awk
awk '{print $3,$1}' data
ls -l | grep ^d | awk '{print $1, $3, $9}' ==> ls -l 중 디렉토리를 1,3,9번째값만 출력해서 보여줌
ls -l | awk '$5 > 4096{print $0}' ==> 5번째가 용량인디, 4096 넘기는줄 전체출력(=$0)
'Sub2_리눅스 기초' 카테고리의 다른 글
리눅스 기초 4일차 Shell programming (0) | 2021.05.10 |
---|---|
리눅스 기초 2일차 mv, 하드링크, 심볼릭링크, vi에디터, permission (0) | 2021.05.10 |
리눅스 기초 1일차 ls, ln, cat, more, less, grep, head, tail, touch, cp, md5sum, mkdir, rm, rmdir 명령어 (0) | 2021.05.10 |