Profile

IT is Blog

LIMEWATER

리눅스 기본 명령어(02_2. 디렉토리 및 파일)

파일 생성 및 복사

touch

 touch는 파일의 날짜시간정보를 변경하는 명령어이다. 즉, 아무런 옵션 없이 사용되면 서버의 현재시간으로 파일의 최근에 사용한 시간과 최근에 변경된 시간을 변경한다. 만약 지정된 명령어가 존재하지 않는다면 파일의 크기가 0인 파일을 생성한다. -t 옵션을 사용하면 서버의 현재시간이 아닌 지정된 파일의 날짜시간정보를 변경한다.

 -t 옵션을 사용하면 특정 파일의 날짜시간정보를 지정한 것으로 변경한다.

mkdir

 mkdir은 "MaKe DIRectory"의 약어로서 새로운 디렉토리를 만들 때 사용되는 명령어이다. 간단히 "mkdir 디렉토리명"으로 간단하게 필요한 새로운 디렉토리를 생성할 수 있다.

 만약 상위 디렉토리 경로를 포함하는 디렉토리를 생성할 때에는 -p 옵션을 사용한다.

cp

cp는 copy의 약어로서 파일이나 디렉토리를 복사할 때 사용하는 리눅스 명령어 가운데 가장 기본적인 것이다. cp는 특정 옵션을 사용하면 지정한 디렉토리 전체를 복사할 수 있다.

-a : 소스파일의 구성과 속성도 함께 복사한다. -dpR 옵션과 같은 역할을 한다.

-b : 지우기 전에 백업 파일을 만든다. (파일명에 ~를 붙인 백업 파일 생성)

-d 링크를 보존한다.

-P : 원본 파일의 지정을 경로와 함께 했을 경우에 그 경로 그대로 복사된다.

-p : 소스 파일의 소유자그룹퍼미션 등을 유지

-f : 복사되기로 지정된 이름의 파일이 이미 존재할 경우 그냥 덮어 쓴다.

-i : 존재하는 파일을 덮어 쓰기 전 물어보는 옵션

-r/-R : 하위 디렉터리나 파일까지 복사한다. -r의 경우 일반 파일이면 그냥 복사된다.

-u : 목적지에 있는 타임 스탬프가 같거나 새로울 경우 복사하지 않음

-s : 파일을 복사하지 않고 심볼릭 링크를 생성한다.

-v : 파일명을 출럭하면서 복사

-x : 다른 파일 시스템의 파일은 복사하지 않음

파일 이동, 삭제 및 종류 확인

mv

 mv는 "Move"의 약어로서 파일이나 디렉토리를 다른 위치로 이동시키거나 파일명을 변경하고자 할 때 사용하는 명령어이다.

 우선 파일을 다른 위치로 이동시킬 때에는 mv 명령어 뒤에 이동시킬 파일을 지정하고 이후에 파일을 이동시킬 디렉토리를 지정한다.

 다음으로 mv 명령으로 파일명을 변경하려면 mv 뒤에 이름을 변경할 파일을 지정하고 그 뒤에 변경되는 파일명을 지정한다. 그렇지만 변경되는 파일과 동일한 이름의 디렉토리가 존재하면 앞에 지정한 파일은 뒤에 지정한 디렉토리로 이동한다.

 mv 명령으로 디렉토리의 이름도 변경이 가능하다. 파일명을 변경하는 것과 같이 mv 명령 뒤에 변경할 디렉토리명을 지정하고 이후에 변경되는 파일명을 지정한다. 그렇지만 변경되는 디렉토리명과 동일한 이름의 디렉토리가 존재하면 앞에 지정한 디렉토리는 뒤에 지정한 디렉토리로 이동한다.

 와일드카드를 사용하면 여러 파일들을 한 번에 이동할 수 있다. 예를 들어 특정 디렉토리 아래의 모든 파일들을 모두 이동시키려면 "mv 디렉토리경로/* 디렉토리경로"의 형식으로 명령을 내린다. 그리고 특정 디렉토리 아래의 특정한 문자를 가질 파일들을 모두 이동시키려면 "mv 디렉토리경로/*문자 디렉토리경로"의 형식으로 명령을 내린다.

-f : 강제적으로 이동(force)

-i : 기존 파일을 덮어 쓸건지 질문을 함(interactive)

-b : 기존 파일이 이미 지워지는 것을 대비해 백업 파일을 만든다.(backup)

-v : 파일을 옯기는 과정을 자세하게 보여준다.(verbose)

-u : 대상 파일이 이미 존재하는 경우에 해당 파일의 변경시간이 원본 파일보다 최근이면 파일을 덮어쓰지 않는다.

rm

 rm 명령어는 remove의 약어로서 파일이나 디렉토리를 삭제하는 명령어이다. 흔히 하나 이상의 파일을 삭제할 때 사용하지만 특정 옵션을 사용하면 디렉토리도 삭제할 수 있다.

 아무런 옵션 없이 rm 뒤에 파일을 지정하면 해당 파일이 삭제된다. 물론, 와일드카드를 사용하여 여러 파일들을 한 번에 삭제할 수도 있다. 여기에 -i 옵션을 사용하면 rm 명령을 내렸을 때 파일을 삭제할 것인지를 묻는다.

 홈디렉토리 아래의 .bashrc에 "alias rm=rm -i"라는 설정이 되어 있어서 rm 명령을 내리면 'rm -i' 명령을 내린 것과 동일하게 실행될수 있다.

-f : 모두 삭제

-i : 사용자의 확인을 요구

-r, -R : 하위 디렉터리 안의 파일까지 모두 삭제(recursive)

-v : 각각의 파일을 지우는 정보를 자세히 보여준다.(verbose)

rmdir

 rmdir 명령어는 "ReMove DIRectory"의 약어로서 비어있는 디렉토리를 삭제하는 명령어이다. rmdir 명령어로 디렉토리를 삭제하고자 할 때에는 디렉토리 아래의 모든 파일을 삭제하거나 이동시켜야 한다. 따라서 일반적으로 rmdir 명령어 보다는 "rm -r" 또는 "rm -rf" 명령이 사용된다.

-p : 지정된 경로 모두 삭제(디렉터리가 비어 있을 경우에만 가능)

file

 file 명령어는 지정된 파일의 종류를 확인하는 명령어이다. 즉, 텍스트 파일, 그림 파일, 동영상 파일, 문서 파일인지 확인하는 명령어이다. file 명령어는 종류를 확인하고자 하는 파일의 헤더를 읽어 매직파일(/usr/share/magic)의 내용을 참조하여 파일 종류를 표시해준다. 단순히 파일의 확장자만 보고 판단하지 않는다.

-C : 매직파일의 포맷을 검사하는 옵션이다.

-f 목록파일 : 많은 파일을 한 번에 확인하기 위하여 파일리스트인 "목록파일"을 만들어서 그 안에 입력된 파일을 한꺼번에 확인하는 옵션이다.

-m 매직파일 : 매직파일을 지정된 매직파일로 확인하는 것이다.

-z : 압축 파일의 형태만 검사

-L : 심볼릭 링크 파일에 대해서도 확인할 수 있다.

파일 찾기

와일드카드 이용법

 명령어에 파일을 인수로 사용할 경우 하나가 아닌 여러개를 동시에 지정할 필요가 있을 때, 파일을 하나씩 처리한다면 매우 불편할 것이다. 이런 작업을 쉽게 하기 위해 와일드카드를 사용한다.

? : 어떤 문자이던지 한 문자

* : 어떤 문자도 없거나 그 이상인 경우

[] : [] 내에 지정된 각각의 문자. [a-d]로 표시하면 [abcd]와 같은 의미. [ac]와 같이 비연속적 문자의 지정이 가능. [abcd]*로 표시하면 각각 a,b,c,d로 시작하는 모든 파일들을 의미. [rst]?로 표시하면 각각 r, s, t로 시작하고 다음에 하나의 문자가 오는 모든 파일들을 의미

 지우고나 하는 파일 이름이 'test'로 시작하고 다섯 글자인 파일이면 다음과 같이 하는데 예를 들자면 test1, test2 등과 같을 경우에는 test1을 지울 것인지 물어보고 다음에 test2를 지울 것인지에 대해 물어본다.

# rm test?

지우고자 하는 파일 이름이 'test'로 시작하는 모든 파일이면 다음과 같이 사용한다.

# rm test*

다음 예에서 [a-z]*.txt는 a부터 z까지의 문자로 시작하고 .txt 확장자로 끝나는 모든 파일들을 말한다.

# rm [a-z]*.txt

find

 find 명령은 리눅스 시스템 내에 존재하는 특정 파일들을 검색하는 명령어이다. 하지만 이 명령어는 단순히 파일을 찾는 역할만을 하는 것이 아니라 찾은 파일에 대해서 특정 작업까지도 할 수 있다. 예를 들어 찾은 파일들을 모두 삭제한다든지, 퍼미션을 변경하다든지, 소유자를 변경한다든지 하는 작업들을 find 명령어 내에서 모두 한 번에 할 수가 있는 매우 강력한 관리자 명령어이다.

# find [찾을 디렉토리 경로][찾기 옵션][찾은 후 행할 작업]

-name 패턴 : 파일명에 기초하여 쉘 패턴에 맞는 파일을 찾는다. 기본적으로 파일명을 지정한다. 와일드카드 사용이 가능하다.

-uid UID : 지정된 UID를 갖는 파일을 찾는다.

-gid GID : 지정된 GID를 갖는 파일을 찾는다.

-group 그룹명 : 지정된 그룹명을 가진 파일을 찾는다.

-user 소유자 : 지정된 파일을 소유하고 있는 소유자의 모든 파일을 찾는다.

-perm 모드 : 지정된 퍼미션을 가진 파일을 찾는다.

-newer 파일 : 지정된 파일 이후에 생성된 파일을 찾는다.

-used n : 상태가 변경된 후로 최종 접근된 지 n일 지난 파일을 찾는다.

-type : 파일 형식을 지정하여 지정한 형식의 파일을 찾는다. d(디렉토리), c(입출력 특수 파일), b(블록 파일), l(심볼릭 링크 파일), p(파이프 파일), f(일반 파일), s(소켓 파일) 등을 지원한다.

-links : 특정 개수의 링크를 가진 파일 찾기

-size : 파일 크기가 일치하는 파일 찾기

-atime n : n일 전에 엑세스한 파일 찾기. 범위를 정할 때에는 +n 또는 -n 형식으로도 사용이 가능하다.

-mtime n : n일 전에 마지막으로 수정된 파일 찾기. 범위 정할 때에는 +n 또는 -n 형식으로도 사용이 가능하다.

-exec : 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하도록 한다. {}는 검색된 파일들이 하나씩 대입되는 것을 의미하여, 검색된 파일의 개수만큼 명령이 실행된다. 마지막에는 \;를 붙인다.

-print : 표준 출력에서 완전한 파일명을 출력하도록 한다.

파일 정보의 비교, 추출, 정렬 및 분할

파일 비교

① cmp

 cmp는 "compare"의 약어로서 두 개의 파일이 어떤 부분이 다른가를 비교할 때에 사용하는 명령어이다. 두 개의 파일을 비교하여 단순히 같은가 다른가를 확인할 수도 있으며 또한 몇 행의 몇 번째 문자가 다른가를 확인할 수도 있다. 두 파일이 동일한가를 확인하고자 할 때에 주로 사용한다.

 cmp는 두 파일이 완전히 같다면, 결과가 출력되지 않고, 다른 부분들이 있다면, 처음으로 다른 부분이 발견된 행과 바이트를 출력한다.

# cmp file1 file2

② comm

 comm은 지정한 두 파일의 행과 행을 비교할 때에 사용하는 명령어이다. 특별한 옵션을 사용하지 않고 comm 명령어로 두 개의 파일을 비교하였을 때의 출력내용은 첫 번째 파일에만 존재하는 내용과 두 번째 파일에만 존재하는 내용 및 두 파일에 공통적으로 존재하는 내용의 순서대로 출력된다.

# comm [옵션] file1 file2

 -1. -2. -3 등과 같은 옵션을 사용하면 좀 더 자세한 출력 결과를 얻을 수 있다.

-1 : file1에만 있는 행들을 무시한다.

-2 : file2에만 있는 행들을 무시한다.

-3 : 양쪽 모두에 있는 행들을 무시한다.

③ diff

 diff는 "differences"의 약어로서 두 파일 사이의 내용을 비교하는 명령어이다. 두 파일의 다른 점을 확인하는 명령어로는 cmp가 있지만 diff가 다양한 형태의 비교가 가증하고 보다 직관적이고 명확하게 찾아준다. 이런 점에서 파일 비교용 프로그램으로는 diff가 일반적으로 사용된다.

# diff [옵션] 파일1 파일2 또는 # diff [옵션] 디렉토리1 디렉토리2

-a : 파일2에서 파일1로 첨가되어야할 것을 표시

-brief : 개략적으로 다른 점을 알려준다.

-c : 지정된 형식으로 두 파일의 차이점을 자세히 출력한다.

-d : 조그만 변화도 찾도록 하여 더욱 상세한 결과를 출력한다.

-r : 두 디렉토리를 서브디렉토리까지 재귀적으로 비교한다.

-s : 두 파일이 같을 때 보고한다.

-H : 용량이 큰 두 개의 파일을 비교할 때 빠른 비교를 위해 사용한다.

파일 정보 추출

① wc

 wc(word counter)는 지정한 하나 이상의 특정 파일들 내에 존재하는 바이트(bytes)수, 단어(words)수, 행(lines)수를 카운트하여 출력해 주는 명령어이다. 두 개 이상의 파일의 바이트, 단어, 행의 수를 카운트하면 전체 합과 함께 출력해 주기도 한다.

-c : 바이트(byte)의 수를 출력한다.

-m : 문자(character)의 수를 출력한다. 영문자 1개는 1바이트이다.

-l : 행(line)의 수를 출력한다.

-L : 가장 긴 행의 문자의 수를 출력한다.

-w : 단어(word)의 수를 출력한다.

② cut

 cut은 특정 파일의 각 필드들을 출력하여 제거하거나 원하는 필드만 출력할 수 있는 명령어이다. 이 명령어는 텍스트 문서의 특정 필드를 제거하여 편집하거나 원하는 입력폼으로 재생성하는 용도로 사용된다. cut 명령어를 사용할 때 순서(바이트, 문자 또는 필드)를 구분하는 경우에는 숫자로 표시하는데 이것은 다음과 같은 규칙을 가진다.

N : 1에서 N번째 위치한 것

N, M, O : N번째, M번째, O번째를 의미(쉼표로 구분하여 여러 숫자를 나열)

N - : N번째부터 시작하여 마지막까지

N-M : N번째부터 시작하여 M번째까지

-M : 1번째부터 시작하여 M번째까지

-b : 지정된 바이트(byte)를 출력

-c : 지정된 문자를 출력

-f : 지정된 필드를 출력

-d : 필드 구분자를 설정

-s : 필드 구분자를 포함할 수 없다면 그 행은 하지 않는다.

③ grep

 grep은 "Globally find Regular-Expression and Print"의 약어이며 지정된 파일 내의 특정 문자나 단어를 검색하는 명령어로서 파일 편집이나 특정 문자를 포함한 단어를 찾는데 매우 유용하게 사용된다. 그리고 grep 명령어는 지정된 파일 내에서 특정 문자가 몇 개나 들어있는가를 확인할 때에도 유용하게 사용되며, 특정 문자가 포함된 행 자체를 출력하여 확인할 때에도 빈번하게 사용된다.

 또한 압축된 파일 내에서 특정 문자나 단어를 검색하는 zgrep도 매우 유용하고, egrep은 grep의 확장판 명령어로서 파일 내의 특정 문자를 확장된 정규표현으로 검색한다. 또한 fgrep은 파일 내의 특정 문자열을 고정된 문자열로만 인식하여 검색한다. 따라서 egrep은 "grep -E" 명령과 같고, fgrep은 "grep -F" 명령과 같다.

자주 사용되는 검색문자패턴 정규표현을 알아 두도록 한다.

? : 아무 문자나 한 문자를 의미

* : 어떤 문자열이나 문자 길이에 무관한 문자열을 의미

^ : 행의 시작 위치를 의미

$ : 행의 마지막 위치를 의미

[ ] : 한 문자 길이의 패턴 리스트

[^ ] : 지정된 문자들 이외의 문자들을 의미(^는 여집합을 의미)

\ : 뒤에 오는 문자를 문자 그대로 인식(특수 문자를 그대로 표현할 때 사용)

/< : 단어의 시작 위치를 의미

/> : 단어의 마지막 위치를 의미

# grep [옵션] pattern files

-c, --count : 특정 문자를 포함한 행의 개수를 출력한다.

-v : 특정 문자를 포함하지 않는 행만 검색한다.

-E, --extended-regexp : PATTERN을 확장된 정규표현으로 해석한다.

-e PATTERN : PATTERN을 찾을 문자로 사용. -로 시작하는 패턴들을 보호하기 위해 유용하다.

-F, --fixed-strings : PATTERN을 고정된 문자열의 목록으로 해석하여, 그것 모두에 일치하는 행동을 출력한다.

-i : 대소문자 구분없이 특정 문자를 검색한다.

-l : 입력 파일의 일반 출력을 무시하고 찾을 문자와 일치하는 입력 파일의 이름을 보여준다.

-n : 각 행을 입력 파일 내의 행번호와 함께 출력한다.

-r : 각 디렉토리 아래의 모든 파일들을 읽는다.

-w : 전체 단어와 일치하는 단어들을 포함하는 행만 출력한다.

-x : 정확하게 전체 행과 일치하는 행들만 출력한다.

파일 정보 정렬 및 분할

① sort

sort 명령어는 텍스트로 된 파일의 행단위 정렬을 할 때 사용하는 명령어이다. 복잡한 워드 문서 등의 편집이 아닌 간단한 텍스트 문서를 대상을 정렬 작업을 할 때 주로 사용된다. 또한 이 명령어는 특정 DB, 프로그램 및 쉘프로그램 등의 입력값으로 사용되는 데이터를 직접 정렬 또는 편집할 때 편리하게 사용할 수 있다. 예를 들어 현재 디렉토리 내의 파일 리스트를 용량별로 정렬한다든지, 현재 디렉토리 내의 파일명을 기준으로 정렬한다든지, 특정 파일 내용의 특정열을 기준으로 하여 정렬한다든지 하는 작업을 할 수 있다.

# sort [옵션] filename

-b : 처음의 공백들은 무시한다.

-d : 공백과 알파벳 문자 순을 고려한다.

-f : 대소문자 구분하지 않는다.

-g : 일반 수치(numerical value)에 따라 비교한다.

-n : 스트링(string) 수치에 따라 비교한다.

-o file : 표준 출력 대신에 파일로 결과를 작성한다.

-r : 내용을 비교하여 내림차순(역순)으로 정렬한다.

-c : 이미 정렬되어 있다면 새로 정렬하지 않는다.

-k : 지정한 열을 기준으로 정렬한다. 기본값은 첫 번째 열이다.

-u : 중복된 행을 하나로 취급하게 유일하게 정리한다.

② split

 split는 지정된 파일을 주어진 방식대로 나누는(쪼개는, 조각내는) 명령어이다. 특정 파일을 나누는 방법으로 용량별로 나누는 방법, 행수로 나누는 방법 등이 있다. 이 명령어는 특정 파일의 용량이 너무 커서 (용량, 행 등의) 단위별로 나눌 필요성이 있거나 특정 목적에 의해 나누어서 사용해야 할 경우에 사용된다.

 아무런 옵션 없이 split으로 특정 파일을 나눌 경우 기본적으로 1000행씩 나누어서 저장하고, 파일명은 xaa, xab, xac, ... 등의 순서로 저장된다. 파일명은 기본 3문자로 생성되지만 파일명으로 사용할 문자의 개수도 지정이 가능하다.

-b, --byte=size : 지정된 바이트 단위로 파일을 자른다.

-l, --lines=number : 지정된 행수 단위로 파일을 자른다.

-C, --line-bytes=SIZE : 생성되는 파일에서 행들의 최대 바이트를 지정한다.

-a, --suffix-length=N : 파일명의 길이를 지정한 문자수로 하여 파일로 생성한다.

파일 저장장치 마운트와 언마운트

mount

 리눅스 / 파티션 아래에 다른 하드디스크 파티션이나 다른 미디어를 연결하기 위해 mount라는 명령어를 사용한다. 마운트(mount)를 통해 다른 파티션이나 저장 매체 등을 /의 하위에 둠으로써 통일적인 관리가 가능해 진다.

 ext4 파일 시스템인 두 번째 하드디스크의 첫 번째 파티션(/dev/sdb1)을 /mnt/data1 디렉토리에 마운트하였다.

# mount -t ext4 /dev/sdb1 /mnt/data1

-v : 진행 상황을 자세히 출력한다.

-a : /etc/fstab에 지정된 모든 파일 시스템을 마운트 한다.

-f : 실제 시스템 호출은 하지 않고 마운트할 수 있는지 점검한다. 보통 -v 플래그를 써서 mount 명령의 결과를 알고자 할 때 유용하다.

-r : 파일 시스템을 읽기 전용으로 마운트 한다. 같은 옵션으로는 -o ro 가 있다.

-w : 파일 시스템을 읽기/쓰기 형식으로 마운트 한다. mount의 기본값으로 설정되어 있다.

-t : 마운트 할 파티션의 파일 시스템 형식을 지정한다. 아래와 같은 형식을 사용할 수 있다.

adfs, affs, autofs, cifs, coda, coherent, cramfs, debugfs, devpts, efs, ext, ext2 ,ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs

-t 옵션이 주어지지 않고 auto 타입이 지정되면 mount가 요구되는 파일 시스템을 추측하여 마운트 한다.

umount

 umount는 마운트된 장치를 마운트된 장치를 마운트 해제, 즉 언마운트하는 명령어이다. 마운트된 하드 디스크, CD-ROM 등의 장치를 마운트 해제한다.

 umount는 장치를 해제할 때에는 마운트한 디렉토리나 장치명만 써주면 된다. 그렇지만 분리할 파일 시스템이 사용 중인 경우네는 언마운트 되지 않는다.

-n : /etc/mtab에 변경 내용을 저장하지 않고 언마운트한다.

-r : 언마운트가 실패할 경우에 읽기 전용을 다시 마운트한다.

-a : /etc/mtab에 기록된 모든 파일 시스템을 언마운트한다.

-t : 지정된 파일 시스템 형식에 해당하는 장치들만 언마운트 한다. 파일 시스템 형식은 콤마(,)로 구분해 여러 형식을 지정할 수 있다.


리눅스 기본 명령어(01. 사용자 계정의 생성 및 관리)


리눅스 기본 명령어(02_1. 디렉토리 및 파일)


리눅스 기본 명령어(03. 하드 용량 및 파일 압축, 인터넷)


리눅스 기본 명령어(04. 기타 명령어)

Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]