파일과 디렉토리 조작
-
파일이나 디렉토리를 다룰 때 가장 빈번하게 사용되는 명령어
cp
- 파일 및 디렉토리 복사mv
- 파일 및 디렉토리 이동 그리고 이름 바꾸기mkdir
- 디렉토리 새로 만들기rm
- 파일 및 디렉토리 삭제ln
- 하드 링크 또는 심볼릭 링크 만들기복잡한 파일 관리작업들은 커맨드라인 프로그램으로 하는 것이 더 쉬움
ex) 어떤 디렉토리에 저장된 모든 html파일을 다른 디렉토리로 복사
cp -u *.html destination
-
와일드카드
파일명의 그룹을 지정할 수 있도록 특수한 문자들을 지원 글로빙이라고도 함
-
*
: 모든문자ex)
b*.txt
- b로 시작하되 .txt형식 파일 -
?
:ex)
Data???
- Data로 시작하면서 뒤에 정확히 세개의 문자만 있는 파일 -
[characters]
: characters 문자셋에 포함된 문자ex)
[abc]*
- a,b,c로 시작하는 모든 파일 -
[!characters]
: characters 문자셋에 포함되지 않은 문자ex)
[![:digit:]]*
- 숫자가 포함되지 않은 모든 파일 [[:class:]]
: 지정된 문자 클래스에 포함된 문자
가장 많이 사용되는 문자 클래스[:alnum:]
: 모든 알파벳과 숫자 문자[:alpha:]
: 모든 알파벳 문자[:digit:]
: 모든 숫자-
[:lower:]
: 모든 소문자ex)
[[:lower:123]
: 파일명이 소문자로 끝나거나 1, 2, 3 으로 끝나는 파일 -
[:upper:]
: 모든 대문자ex)
[[:upper:]]*
: 대문자로 시작하는 모든 파일
-
-
mkdir : 디렉토리 생성
mkdir directory mkdir dir1 mkdir dir1 dir2 dir3
-
cp : 파일과 디렉터리를 복사
cp item1 item2 -- item1을 iem2라는 파일 또는 디렉토리로 복사 cp item ... --다수의 파일을 복사 cp --help
-a, —archive
파일 및 디렉토리뿐만 아니라 소유자 및 권한 정보와 같은 속성까지 모두 복사한다. 반면, 일반적으로는 복사를 하는 사용자의 기본적인 성을 복사
-i, —interactive
기존 파일을 덮어쓰기 전에 확인 메시지를 보여주는 옵션이다. 이 옵션 없이 cp 명령어를 사용하면 확인 과정 없이 그대로 파일을 덮어쓰게 됨
ex) cp -i filel file2
-r, —recursive
디렉토리와 그 안의 내용까지 복사할 때 쓰는 옵션. 이 옵션(또는 -a 옵션)은 디렉토리를복사할 때 필요
ex) cp -r dirl dir2
dir1 디렉토리와 그 안에 있는 든 내용을 dir2 디렉토리로 복사. dir2 가 없으면 새로 생성될 것이고 dir1 디렉토리에 있는 모든 내용들이 복사
-u, —update
어떤 디렉토리에 있는 파일을 다른 디렉토리로 복사 , 그 디렉토리에는 없거나 최신 버전인 파일만을 복사하기 위해서 이 옵션을 사용
-v, —verbose
복사가 완료되었다는 메시지를 보여주는 옵션
-
mv : 파일 이동과 이름 변경
i, - -interactive
: 기존 파일을 덮어쓰기 전에 확인 메시지를 보여주는 옵션. 이 옵션 없이 mv 명령어률 사용하면 확인 없이 그대로 파일을 덮어쓰게 됨.ex) mv -i filel file2 : file2파일이 있다면 사용자에게 덮어쓰기 여부를 확인
u, - -update
: 디렉토리에는 없거나 또는 최신 버전인 파일만을 이동하기 위해 사용
v, - -verbose
: 이동이 완료되었다는 메시지를 보여주는 옵션 - rm : 파일 및 디렉토리 삭제
4-9) rm 사용예제
rm file1
: file1/ 파일을 완전히 삭제
rm -i file1
: fiie1 파일을 삭제하기 전에 사용자 확인 메시지를 보여줌
rm -r file1 dir1
: file1 파일과 dir1 디렉토리 및 하위 내용까지 모두 삭제함
rm -rf file1 dir1
: file1 과 dir1모두 다 삭제하되 file1 이나 dir1 이 존재하지 않더라도 rm 영령어가 실행됨 -
ln : 링크생성
ln file1 Link
: 하드링크 만들 때 사용하는 것
ln -s item Link
: item 파일 또는 디렉토리에 심볼릭 링크를 생성 -
하드링크는 링크를 생성하는 기존 유닉스 방식
- 파일시스템 외부에는 파일을 참조할 수 없음.
- 하드 링크는 디스크 파티션에 있는 파일이 아니면 조작할 수 없음.
- 하드 링크는 디렉토리를 참조할 수 없음.
- 하드 링크는 파일 그 자체만으로 구분해내기 어려움.
- 하드 링크를 포함한 디렉토리 목록은 해당 링크가 가리키고 있는 것이 무엇인지 보여 주지 않음.
- 하드 링크가 삭제될 때, 링크도 함께 사라지지만 파일 내용은 그 파일의 모든 링크가 삭제될 때까지 계속 남아 있음
(즉, 파일에 할당된 공간이 그대로 남게 된다는 것임)
- 심볼릭 링크는 하드링크의 한계를 극복하기 위해 탄생
- 윈도우 바로가기 기능과 유사
- 원본파일의 정보가 포함되어 있지 않고, 원본파일의 위치정보만 포함
- 참조될 파일이나 디렉토리를 가리키는 텍스트 포인터가 포함된 특수한 파일을 생성
-> 하드링크는 원본 파일이 사라지더라도 데이터만 살아 있다면 원본 파일에 접근이 가능하고, 심볼릭링크는 원본 파일이 사라지면 해당 데이터에 접근할 수 없음.
- 디렉토리 생성
cd mkdir playground cd playground mkdir dir1 dir2
- 파일복사
cp /etc/passwd ls -l cp -v /etc/passwd cp -i /etc/passwd
- 파일이동 및 이름변경
mv passwd fun mv fun dir1 mv dir/fun dir2 mv dir2/fun mv fun dir1 mv dir1 dir2 ls -l dir2 ls -l dir2/dir1 mv dir2/dir1 mv dir1/fun
- 하드링크 생성
ln fun fun-hard ln fun dir1/fun-hard ln fun dir2/fun-hard ls -l ls -li
- 심볼릭링크 생성
ln -s fun fun-sym ln -s ../fun dir1/fun-sym ln -s ../fun dir2/fun-sym ls -l dir1 ln -s /home/me/playground/fun dirl/fun-sym ln -s dirl dirl-sym ls -l
- 파일 및 디렉토리 삭제
rm fun-hard ls -l rm -i fun ls-l
- 깨진 링크 사용하기
less fun-sym
- 심볼릭 링크를 삭제해서 정리
rm fun-sym ls -l cd rm -r playground