Handling Directory
리눅스에서 디렉터리를 다루는 것은 파일 시스템을 효율적으로 관리하는 기본적인 능력입니다.
어떤 분야에서든 디렉터리 구조를 잘 이해하고 다룰 수 있다면 개발, 서버 관리, 데이터 분석 등 다양한 작업을 보다 체계적이고 효율적으로 수행할 수 있습니다.
이번 게시글에서는 디렉터리를 다루기 위한 기초 명령어를 알아보겠습니다.
현재 디렉터리 출력
$pwd
현재 디렉터리 출력이 pwd 라는 것이 한번에 와닿지 않으실 거 같습니다. 줄임말을 그대로 풀어 써본다면 pwd 는 print working dir 입니다. 즉 현재 작업하고 있는 디렉토리라고 할 수 있습니다.
현재 디렉터리 변경
$cd
cd 또한 마찬가지 입니다. 줄임말을 그래도 풀어 써본다면 cd 는 changing directory 입니다. 즉 디렉터리를 바꾸다 입니다.
현재 본인이 작업하는 환경을 상위 폴더 혹은 하위 폴더로 변경 할 때 쓰는 명령어 입니다. 가장 많이 쓸 명령어라고 생각합니다.
cd & ls 기초 명령어 활용
$ cd . (. 은 현재 디렉터리를 의미합니다)
$ cd ..(.. 은 부모 디렉터리를 의미합니다) 부모 디렉터리란 현재 디렉터리위에 바로 상위 디렉터리 입니다.
$ cd ~(~은 자신의 홈 디렉터리를 의미합니다) 보통 자신의 기본 작업공간입니다.
$ cd ~사용자명( ~사용자명은 특정 사용자 홈 디렉터리를 의미합니다)
$ ls -al /usr/bin (bin 디렉토리 안에 있는 모든 숨김 파일들 또한 자세한 정보로 출력합니다)
파일과 디렉터리 만들기
파이썬에서 마찬가지로 os.mkdir가 있었습니다. 같은 기능으로 디렉토리를 생성하는 명령어 입니다.
이 때 추가적인 기능을 넣을 수 있습니다.
$mkdir [옵션](-m : 기본 권환을 지정, -p :필요한 경우 상위 경로까지 생성) <작성할 디렉토리 경로 및 이름>
파일을 만들 경우에는
$touch <생성할 파일 경로 및 이름 > ~... 파일은 여러 개를 동시에 만들 수 있습니다.
파일 / 디렉터리 복사
$cp file1 file3 : ! 주의 이미 존재하는 파일일 경우에는 덮어써집니다. 이를 유의하기 위해서 새로운 명령어 옵션이 따로 존재합니다.
$cp -i file1 file3 이 명령어는 이미 존재할 경우에 알려줍니다.
디렉터리는 카피가 되지않습니다. 하지만 recursive옵션을 통해 카피할 수 있습니다.
$cp -r dir2 dir3
옵션 종류는 다음과 같습니다.
-i ( 복사 대상의 파일이 있을 경우, 사용자에게 직접 복사 여부를 질문합니다 )
-f (force의 약자로 , 복사대상 파일이 있을 경우, 사용자에게 확인없이 강제 복사합니다. ) 이는 유의해야 합니다.
-r,-R(디렉토리를 복사할 경우 하위 디렉토리와 파일을 전부 복사합니다)
파일/디렉터리 이동
mv (option) (이동 파일 ) .. (이동 위치)
$mv file4 dir1/
현재 경로에 있는 file4를 dir1 이동 시킵니다.
? 스스로 생각해봐야 할 점 ? : 만약 상위 폴더로 이동시키려고 한다면?
$mv file5 dir1/file5_
file5를 dir1 디렉터리로 이동시키고 파일 명을 변경합니다. 리눅스에서는 파일명을 바꾸는 기능이 없기 때문에 이러한 형식을 활용하여 파일의 이름을 변경합니다.
Ex) mv file6 ./file6
option에 들어가는 인자를 확인해보겠습니다.
-i : .bashrc에 alias 되어 있는 옵션입니다. 파일이 있을 경우 사용자를 확인 합니다.
-u : 이동해야 할 파일이 이동할 위치에 있는 파일보다 최근 파일일 경우 이동하는 역할입니다.
-b : 대상에 파일이 이미이 있어, 지워지는 것을 대비해 백업파일을 생성합니다. 안정성을 보장합니다.
-f : 대상에 파일이 이미 있어도 어떻게 처리할지 묻지 않습니다.
-v : 파일을 옮기는 과정을 자세하게 보여줍니다.
-i | 덮어쓰기 전에 확인 요청 | mv -i file1 dir1/ |
-u | 최신 파일만 이동 | mv -u file1 dir1/ |
-b | 덮어쓰기 전에 백업 생성 | mv -b file1 dir1/ |
-f | 강제 이동 (덮어쓰기 확인 없음) | mv -f file1 dir1/ |
-v | 이동 과정 출력 | mv -v file1 dir1/ |
옵션 예제
덮어쓰기 전에 확인 (-i)
mv -i file8 dir1/
file8이 dir1/에 존재하면 덮어쓸지 묻는 메시지 출력
최신 파일만 이동 (-u)
mv -u file9 dir1/
file9가 dir1/에 이미 존재하는 경우
파일이 더 최신일 때만 덮어씀
백업 파일 생성 (-b)
mv -b file10 dir1/
file10이 dir1/에 이미 있으면
file10~ 백업 파일을 자동 생성
강제 이동 (-f)
mv -f file11 dir1/
기존 파일이 있어도 묻지 않고 덮어씀
이동 과정 보기 (-v)
mv -v file12 dir1/
실행 과정이 출력됨
여러 개 파일 이동
mv file1 file2 file3 dir1/
file1, file2, file3을 dir1/로 이동
mv *.txt dir1/
현재 디렉터리의 모든 .txt 파일을 dir1/로 이동
파일/디렉터리 삭제하기
rm [option] 삭제파일1 삭제파일2
옵션
-f : 파일/디렉터리 삭제시 사용자에게 처리여부를 묻지 않는다 이전과 같으 force의 약자 f는 경고 메시지를 무시한 채 작업합니다.
-r,-R : 일반 파일이면 그냥 지우고, 디렉터리를 포함한 하위, 파일을 모두 삭제합니다
rmdir 딕레터리 이름
$rm file6_ [file6_의 디렉터리를 삭제합니다]
$rm dir2/* (와일드 카드를 이용한 것은 다음게시글에 언급하겠습니다)
$rm -rf dir1
파일이 있어도 모두 강제로 삭제하는 옵션이 됩니다. 옵션을 동시에 여러 개를 추가할 수 있습니다.
'Linux' 카테고리의 다른 글
Linux | wild card..? (0) | 2025.03.18 |
---|---|
Linux 첫 걸음 (0) | 2025.03.18 |