본문 바로가기

리눅스14

for 문의 continue문 활용하기 디렉토리 dir01를 만들고 ls -la를 하면 현재 디렉토리 c, dir01 이 보인다. 하지만 이렇게 if 문에 -d옵션(디렉토리만 출력)을 주고 filr을 출력하게 하면 파일만 출력하게 할 수가 있다. 그러면 실행해도 파일만 출력되는 것을 볼 수 있다. 백업파일 만들기 백업 파일을 만들고 싶다면 cp(복사) 해당 파일을 선택하고 .bak로 백업파일을 만들어준다. 그러면 이렇게 백업파일이 만들어진 것을 알 수 있다 그러나 이럴 경우 실행할 때마다 백업파일의 백업파일이 만들어지게 된다. case.sh.bak.bak이렇게 말이다 따라서 이것도 조절을 해주어야 한다. 우선 백업 파일을 모두 지우기 위해 rm -rf ./*.bak(모든 파일에 대해 확장자가 .bak인 파일을 지워준다) if [ "${file.. 2021. 11. 22.
셸 스크립트 프로그래밍 C언어와 유사하게 프로그래밍이 가능 변수, 반복문, 제어문 등의 사용이 가능 별도로 컴파일 하지 않고 텍스트 파일 형태로 바로 실행 vi나 gedit으로 작성 가능 ==pico, nano gedit ==노트패드처럼 사용 가능 => gui환경에서만 사용이 가능한 것이 위의 다른 스크립트와의 차이점이다 리눅스의 많은 부분이 셸 스크립트로 작성되어 있다. ※magic number #!/bin/bash ==셸 스크립트 가장 상단에 이렇게 매직 넘버를 넣어준다. 이것은 어느 환경에서 실행되는 지 프로그램 이름을 집어넣어주는 것이다 즉 위의 예처럼 적는다면 bin안에 bash에서 실행된다는 의미이다. # which는 위치정보를 알려줌 먼저 mkdir -p/app/script를 만들어 구조 vi first.sh를 통.. 2021. 11. 4.
SED 스크립트에 따라 표준 출력 결과를 편집하여 주는 명령어 실제 파일도 편집해 주는 편집기 역할을 한다. SED [스크립트] [ 파일명] 형태로 사용한다. 주요 옵션 1. 옵션이 없을 경우 해당하는 행을 한 번더 출력한다. 2. -n : 해당하는 행만 출력한다. 거의 필수!! 3. -e : 스크립트를 여러개 사용할 수 있도록 한다. 4. -i : 파일을 실제로 수정하도록 한다. 정규식 : '/regex/p' : 정규식에 해당하는 행을 출력 '/n,/regex/p' : n번째부터 정규식에 해당하는 행을 발견할때까지의 행을 출력 정규식은 '/regex/,/regex/p' 와 같이 여러 개를 지정 가능하다. (or 조건으로 동작한다) 스크립트 명령어 p (print): 해당하는 행을 출력하여 주는 명령어 => '.. 2021. 11. 3.
AWK AWK AWK의 기능을 디자인한 사람들의 이니셜로 이다. A: Alfred V. W:Peter J. [w]einbergerK : Brian W. [K]ernighan 사용방법 awk [옵션 ] [awk 프로그램 ] [파일명] 형태로 사용 # 옵션 # -F(Field) : 필드 구분자 지정 # -f (file): awk 프로그램 파일 경로 지정 # -v :: awk 프로그램에서 사용할 유효한 특정 값지정 grep 가 행으로 패턴에 해당하는 값을 찾았다면 awk는 열로 패턴에 해당하는 값을 찾는다. #awk 프로그램 기본 구조 pattern { action } 형태 => ex. ) echo -e 'no\title\t\n1\tsubject1' | awk '/sub/ { print }' pattern 을 생략하.. 2021. 10. 27.
명령어 , 파일디스크립터, GREP -------------------------------------------------------- 파일 디스크립터 # 파일의 종류와 상관없이 모든 열려있는 파일을 참조하는 데 사용 # 모든 파일마다 각각의 파일 디스크립터를 가지고 있지만 모든 파일마다 #공통되는 파일 디스크립터가 존재한다. 0: 표준입력 1: 표준출력 2: 표준 에러 $$ pid 확인 proc폴더에 확인가능하다 ls -l /proc/$$/fd를 통해 파일 디스크립터의 정보를 볼 수 있다. exec 0,1,2 :표준 출력을 의미함 [root@localhost fd]# exec 3$4를 통해서 표준입력은 echo를 통해 넣었다. ★모든 파일에는 0,1,2번의 파일 디스크립터가 존재한다. 혹은 3,4번을 주어 만들 수도 있다. ------.. 2021. 10. 26.
매개변수 확장 ${ 변수이름#정규식} : 변수이름의 앞부분부터 가장 짧게 일치하는 정규식을 삭제 변수뒤에 #/를 하니 가장 먼저 있는 /가 사라졌고 #을 누른 후 원하는 문자를 넣으면 그 문자는 삭제된다. * 모든 문자 ${ 변수이름##정규식} : 변수이름의 앞부분부터 가장 길게 일치하는 정규식을 삭제 ##은 가장 길게 일치하는 것을 삭제 한다. 따라서 home을 잇는 것을 지워버렸다. ## 뒤에 붙은 것이 나올 때까지 것을 삭제한다. 이 매개변수는 가장 자주 사용하는 것들중에 하나이다. 이렇게 만약 전체조회가 아니라 sysconfig라는 현재 디렉토리만 보고 싶을 때 사용한다. 위에 것과 반대로는 #가 아니라 % 이다. ${ 변수이름%정규식} ${ 변수이름%%정규식} 치환 VAR안에 값의 /Hello를 /Hi로 바꿔.. 2021. 10. 26.
쉘 명령편집기능 export (부모 쉘의 있는 값을 자식 쉘 까지 가지고 가는 것) export를 하기 전에 TEST를 출력하면 값이 나오지 않는 것을 알 수 있다. 그러나 TEST를 export 한후 자식 bash 쉘에 들어가 출력하지 값이 나온다. 매개변수 확장 { } 를 사용 ex) VAR="this is General Parameter" echo ${ VAR } => 매개변수 확장 모드이다. ${#변수이름} : 변수의 문자열 길이를 출력 친 배열 ${변수이름[인덱스]} : 해당 인덱스 값 출력 ${변수이름[*]} : 해당 배열의 모든 값 출력 ${#변수이름 [*]} : 해당 배열의 모든 값 개수 출력 배열 값들중 나눠서 출력하고 싶은 경우 ${변수이름: N} : N번째 이후의 값들을 출력 ${변수이름:n:m} n.. 2021. 10. 26.
퍼미션 SUID, SGID, Sticky bit 전 퍼미션을 다룰 때 chmod 를 r : 4 , w : 2, x : 1로 바꿀 수 있다고 하여 chmod 777 이런 식으로 썼었다. 그러나 이것은 0777로 0이 생략된 것인데 SUID SGID 여기서 0이 set(id), sgid이다. => 실행 파일에서만 적용된다. 파일이 실행된 프로세스는 실행한 사용자 소유로 실행 권한이 부여되자만, suid, sgid 를 설정한 파일의 프로세스는 소유자나 그룹 소유자의 id로 실행된다. 실행 권한에 s 로 명시된다. suid : 4000 ,u+s ( suid가 4로 설정되어 있으면 x가 s로 바뀐다. sgid : 2000, g+s 만약 사용자나 그룹사용자 권한이 없다면 s가 대문자로 바뀐다. chmod 4000으로 suid 권한을 주었지만 실행권한이 없어 S .. 2021. 10. 17.
소유권 리눅스 파일 구조 구조 drwxr-x--- 2 root root 4096 Dec 19 12:30 aa 파일종류 퍼미션 하드링크수 소유자 그룹소유자 크기 마지막 변경일자 파일명 퍼미션 구분 파일 디렉토리 r 읽기 파일 목록보기 w 쓰기(수정) 파일 생성(삭제) x 실행 들어가기 1)rwx 2)rwx 3) rwx 1) user 2) group 3) other 표기 (8진수) 퍼미션은 각 문자의 합으로 표현!! r: 4 w: 2x:1ex) rwxr-xr-x: 7(4+2+1)5(4+1)5(4+1)rwxr--r--: 744 chmod (퍼미션 수정 명령) chmod [옵션] [퍼미션] [파일] ※ chmod 명령어는 root나 그 해당 소유자만 사용이 가능하다 chmod -R 옵션을 주면 해당 모든 디렉터리의 권.. 2021. 10. 17.
사용자 생성과정 전 리눅스에서는 useradd, userdel 등을 알아봤는데 여기서는 사용자를 생성할 때 어떻게 만들어지는지 정리해보겠다. 유저생성과정 /etc/default/useradd , /etc/login.defs => 유저 생성하기 위해 참조하는 파일들 /etc/passwd , /etc/group => 유저추가파일들 /홈 디렉터리 생성 /etc/skel/파일복사 /var/mail /계정 파일 생성 그럼 useradd의 생성과정을 보기 위해 useradd의 설정파일을 살펴보겠다. 해석 # useradd defaults file GROUP=100 HOME=/home => 홈 폴더는 무엇을 생성할 것인지? INACTIVE=-1 => 이 useradd라는 설정파일을 볼 것인지? EXPIRE= => 며칠간 유저를 유지.. 2021. 10. 17.
사용자 등록정보 사용자 관리 비밀번호 관리 사용자 패스워드 , 암호정책정보 /etc/shadow =>root:$6$kGdwdkOjk37xQPz.$SdbeCqAIdUwk379MDFj9HlQgo2uhoS5vGld4arn9U 이렇게 root유저의 암호화된 비밀번호를 볼 수 있다. 내 유저를 보면 hjseo:$6$iNpm8ZozKBa3PWHO$IkHy1b.GrB9zBycOlBjXEWuYpJNxRH/fTCNqo4cTEVRXkgfJZedwsSp0qB8KkZjf5TOXpDN0nc33/BTBxXF/y1:18915:0:99999:7::: 유저이름 암호변경일 암호 유효기간 =99999면 계속 사용가능하다 암호 만료일7일전 경고 계정만료일::: pwunconv ==기존에 etc/shadow에서 관리하던 암로를 --> etc/passwd가 .. 2021. 10. 17.
vi 에디터 => 윈도우스 에디터와 달리 에디팅하는 모드와 이를 편집하는 모드가 다르다. 명령 모드 : 입력 이외의 편집 입력 모드 : 데이터 입력 및 수정 실행 모드 : 파일 저장, 종료 vi 에디터는 3가지 모드로 이루어져 있다. 명령 모드, 삽입 모드 실행 모드 가장 처음 실행 시켰을 때 명령 모드로 시작한다. 명령 -> 삽입 i : 커서 위치부터 입력 a : 커서 다음 칸에 입력 o : 커서 아래 새로운 라인 삽입하고 입력 l : 커서가 위치한 라인 맨 앞에 입력 A: 커서가 위치한 라인 맨 뒤에 입력 명령 -> 실행 ; 삽입, 실행 -> 명령 esc 삽입 -> 실행 불가 실행모드 이동 w :저장 q : 저장 않고 종료 wq : 저장하고 종료 명령모드 h, j, k, i (왼쪽, 아래, 위 , 오른쪽) gg,.. 2021. 10. 14.