4 분 소요


파일 및 디렉토리 관련명령

파일 및 디렉토리 링크

링크란 여러개의 파일이 하나의 inode를 가리키게 하는 것을 말한다.

  1. 하드 링크
    동일한 inode에 여러 이름을 부여
  2. 심볼릭 링크
    inode가 아닌 파일 이름에 붙인다. (윈도우의 바로가기)
    원본의 위치를 알려주는 특수파일
  • ?: 와일드 문자
  • >: 리다이렉션 (출력방향 재지정)
  • cat: 파일내용 보기
ln [옵션] 원본파일 [링크명]

삭제는 inode에 붙은 이름을 삭제하는 것이므로 하드링크 파일을 삭제하거나 원본을 삭제해도 참조할 이름이 없어질 뿐 데이터는 그대로이다. (inode에 붙은 이름이 하나도 없으면 운영체제에서 데이터를 덮어 씌운다.)

디렉토리는 하드 링크 생성이 불가능하다. 심볼릭 링크를 이용!

ln -s 원본파일 [링크명]

심볼릭 링크는 윈도우의 바로가기와 다르다!

심볼릭 링크 생성시 상대경로로 지정할 경우 파일을 이동시키면 링크가 죽을 수 있다.

ls -l == ll


파일검색 관련명령

which

환경변수 PATH에 지정된 디렉토리 상에서 파일 검색, 경로 출력

which 파일명

whereis

파일위치와 메뉴얼까지 출력

whereis [옵션] 파일명
옵션 설명
-b 실행파일만 검색
-m 메뉴얼만 검색
-s 소스만 검색

find

실시간 검색을 실행

find [명령옵션] 검색경로 검색옵션

기본적으로 검색옵션이 복수 일경우 and 연산이지만 사이에 -o를 붙이면 or 연산

  • 자주 사용하는 검색옵션
옵션 설명
-name pattern 파일명이 패턴과 일치하는 파일 검색 패턴문자로 *,?,[] 사용가능
-cmin n 생성일자가 n분 이내인 파일 검색
-mmin n 수정일자가 n분 이내인 파일 검색
-perm mode 지정한 권한을 갖는 파일 검색
-perm -mode 지정한 권한이 존재하는가 만 검색
-perm +mode 지정한 권한이 하나라도 존재하는가 검색
-inum n inode에 걸린 링크를 모두 찾을 때
-size n[cwbkMG] charater, word, block(문단), 킬로바이트, 메가바이트, 기가바이트
-type c[bcdpflsD] block, charater, directory, pipe, file, symbolic link, soket, Door
# 사용예시
find / -fstype ext4 -uid 1001 -exec rm -fr {} \;

exec(excute) 앞의 명령을 수행해 {} 안에 넣어 뒤를 수행

find와 rm 명령의 끝이 어딘지 해석시키기 위해 exec의 끝을 \;로 표시해야 한다. (그냥;은 전체행 즉, find의 끝으로 인식해버림)


파일의 내용출력

cat [옵션] 파일경로
옵션 설명
-b 공백 제외 라인에 라인번호
-E 라인 끝에 $출력
-n 공백 포함 라인번호
-T 탭문자 출력
-v 보이지 않는 문자 표시

파일 내용 출력전에 파일 종류 확인하자

file 파일경로
tac 파일 경로 # 역순 출력
head [옵션] 파일경로 # 상단 부분
tail [옵션] 파일경로 # 하단 부분
옵션 설명
-c n n바이트만큼 출력
-n n n개의 라인 출력

필터와 리다이렉션

필터

  • ’|’ 필터 표기
    앞의 명령을 실행하고 그 결과를 뒤의 명령의 인자로 전달한다.

리다이렉션

echo "Hello World!" > report.txt # 표준입력을 표준출력 대신 파일로 리다이렉션하여 출력
cat /etc/mytab 2> report.txt # 에러출력을 파일로 리다이렉션하여 출력

입출력 디스크립터: 표준입력0, 표준출력1, 에러출력2

grep

파일의 내용을 검색한다.

grep [옵션] 패턴 파일
옵션 설명
-n 라인번호 출력
-v 패턴과 일치하지 않는 라인 출력
-i 패턴 검색에 대소문자 구분하지 않음
-li 패턴이 포함 되어있는 파일명만 출력
-c 포함 되어있는 패턴의 수를 출력
  • 패턴에 사용 가능한 특수문자
특수문자 설명
^단어 단어로 시작하는 라인
단어$ 단어로 끝나는 라인
. 문자가 없거나 하나
문자* 문자가 없거나 여러개
[문자열] []안에 포함된 문자들 중의 하나
[^문자열] []안에 포함된 문자들을 제외한 모든 문자

ls -l | grep ^d 목록을 불러 디렉토리만 걸러서 표시

egrep

패턴검색에 정규식 표현 등 좀 더 많은 메타문자 이용이 가능하다.

egrep [옵션] 패턴 파일
^단어 단어로 시작하는 라인
단어$ 단어로 끝나는 라인
. 문자가 없거나 하나
문자? 선행문자가 없거나 하나
문자+ 선행문자 하나
문자* 문자가 없거나 여러개
[문자열] []안에 포함된 문자들 중의 하나
[^문자열] []안에 포함된 문자들을 제외한 모든 문자
문자{n} 문자 n개
문자{n,} 문자 n개 이상
문자{n,m} 문자 n개 이상 m개 이하
(문자) 정규표현식 묶음
문자1|문자2 문자1 또는 문자2에 대응

(com)|(net)|(org) # 셋 중 하나


사용자 관리

useradd [옵션] 추가계정
passwd 추가계정비번
옵션 설명
-d path 계정의 홈 디렉토리를 지정
-c commnet 계정에 대한 설명을 지정
-e YYYY-MM-DD 계정의 만료기간을 지정
-f [+|-]n 만료기간 이후 계정을 비활성화 시킬 날짜수 지정
-g gid 계정의 소유그룹을 지정
-u uid 계정의 uid를 지정
-G groupname 소유그룹 이외에 소속될 그룹 지정
-M 계정의 홈 디렉토리를 생성하지 않음
-s shell_path 계정이 사용할 쉘을 지정(default:bash)
-o uid가 중복되는 계정을 생성할 경우 지정
-k path 홈 디렉토리 생성 시 사용할 템플릿 디렉토리를 지정
-m 홈 디렉토리를 생성

wheel 그룹에 있어야 sudo 명령 사용 가능하다.

  • 암호의 개념
    단방향 - 암호화 한 암호를 복호화 불가
    양방향 - 암호화 한 암호를 복호화 가능
    암호화->암호화된 데이터->해시코드(해시함수에 의해) «이걸 비교

계정 삭제

userdel [옵션] 삭제할계정명

그룹 추가

groupadd 추가할그룹명

그룹 삭제

groupdel 삭제할그룹명

;: 순차실행


권한관리

# ls -l 사용 시 나오는 정보들
-rw-r--r-- 링크수 소유자 소유그룹 파일크기 파일생성일 파일및디렉토리이름
# 첫문자는 파일타입(d: 디렉토리, -: 일반파일, l: 링크 등)
# 두번째 부터 세종류의 권한(소유자 권한/소유 그룹 권한/기타 사용자 권한)의 read, write, excute를 나타낸다.

권한지정

chmod [옵션] 권한 파일및디렉토리

1.숫자로 지정 읽기r, 쓰기w, 실행x을 각각 이진수로 표현한다. user group other 111 101 001 => 751

chmod 751 nafile

2.문자로 지정 (잘 안씀)

# 상대권한지정(기타 사용자 권한에 read 추가)
chmode o+r nafile
# 절대권한지정(소유자에 rwx, 소유 그룹에 rx, 기타 사용자에는 권한 없음)
chmod u=rwx,g=rx,o= nafile

!명령어 마지막으로 명령어로 실행한 명령 실행

3.숫자 네자리로 권한 표현

권한6개 앞에 sticky bit가 붙는다.

1또는 2또는 4 이런식으로 붙인다.

  • (2)010=> g에 s
  • (1)001=> o에 T
  • (5)101=> u와 o에 s, T

u에 붙으면:실행 시 소유자의 권한으로 실행(SetUID;s)을 붙인다.

g에 붙으면:u와 동일하다.

T가 붙으면:주로 디렉토리에 붙는데, 권한이 있으면 누구나 읽고 쓰나 삭제는 소유자만 가능하다.

소유자 변경

chown [옵션] 소유자[.소유그룹] 파일또는디렉토리경로

소유자:소유그룹 « 동시변경 시 ‘:’를 사용한다.

그룹만 변경할 때는 chgrp이 있지만 chown 쓰면 된다.

소유권 변경은 root사용자만 가능하다.

자신의 소유 파일에 관해서 권한병경은 모든 사용자가 가능하다.

삭제권한은 쓰기권한이 있으면 가능하다. (sticky bit가 붙으면 소유자만 삭제 가능함)


yum(yellow dog updater, modified)

RPM 기반의 시스템을 위한 자동 업데이터 겸 패키지 설치 제거 도구이다.

yum [옵션] [명령] [패키지]
# yum에서의 검색 예
yum list | grep 패키지명

vi 편집기

emacs와 더불어 유닉스에서 사용하는 표준편집기이다.

기본적으로 세가지 모드가 있으며 각각 편집모드(default), 명령모드, 입력모드이다.

입력모드와 명령모드는 서로 바로갈 수 없고 편집모드를 거쳐야 한다.

키입력 설명
ESC 편집모드 전환
: 명령모드 전환
Insert, i, I, a, A, o, O 입력모드 전환

입력모드 전환

키입력 설명
a 현재 커서의 뒤로 입력
A 현재 커서가 있는 라인의 마지막부터 입력
i 현재 커서의 앞으로 입력
I 현재 커거사 있는 라인의 처음부터 입력
o 현재 커서가 있는 다음 라인에 공백라인을 추가 후 입력
O 현재 커서가 있는 이전 라인에 공백라인을 추가 후 입력

명령모드

명령 설명
q 편집기 종료. 내용이 변경된 경우 저장하지 않으면 종료 불가
q! 강제 종료
w [file] 저장
wq [file] 저장 후 종료
set 환경변수 설정
r [file] 불러오기
! [명령] 외부명령 실행
sh 쉘 프롬프트로 잠시 나간다. 다시 돌아오려면 exit
new 새 문서 작성. 화면 분할하여 문서 생성(Ctrl+w로 이동)

Reference

  • 이 포스트는 SeSAC 인공지능 SW 개발자 양성 과정 - 김기희 강사님의 강의내용을 정리한 것입니다.

태그:

카테고리:

업데이트:

댓글남기기