Removing File / Directories in Linux

sycho·2023년 7월 3일
0

cs-tips

목록 보기
2/16

학교에서 VM을 할당받으면 맨날 리눅스 VM이었다.

다행히 첫 수업에서 VSC를 활용해 ssh 연결하는 법을 자세히 알려줬었기 때문에 터미널에서 cmd 입력하면서 파일 관리를 할 일은 거의 없었지만...

가끔 VM을 내 실수로 터뜨려버릴때 putty로 원격 접속을 해가지고 분석하거나 특정 파일을 삭제 해야하는 경우는 있었다. (VSC resource 관련 파일이라든가)

오늘은 file, directory를 제거하는 방법을 알아보자.

File 제거

  • 흔히 rm이나 unlink 명령어를 사용한다. 리눅스 터미널에서 사용해야 한다.

예시 : hello.txt 제거

$ unlink hello.txt
$ rm hello.txt
  • 단, file이 쓰기 보호 (write-protected) 된 상태이면 경고가 나온다. 이 경우 y를 입력하면 제거가 된다. n을 입력하면 제거가 안된다.

예시 : 쓰기 보호된 hello.txt 제거

$ chmod a-w ex.txt
$ rm ex.txt
(Output) rm: remove write-protected regular empty file 'ex.txt'?
(Input) y
  • unlink 명령어는 사실 C의 STL에 있는 unlink()라는 함수를 호출하는 것으로, filesystem에서 해당 이름의 file을 제거하는 것일 뿐이다. 이 때문에 다른 process들이 해당 파일을 open 상태로 놔둔 상황이면 그 process들이 해당 file을 close하기 전까지는 존재한다.

  • (함수 형태로 사용시) unlink는 위에서 알 수 있듯이 file system과 관련된 함수이기에 우리가 흔히 아는 file 말고 다른 여러 곳에도 적용이 가능하다.
    symbolic link에 작용시 : 즉시 제거, open한 process들 사용 불가
    socket, FIFO file, device file : file system 상에서 이름은 제거되나 open한 process들은 사용 가능

  • 여러개의 파일을 제거할거면 rm 다음에 해당하는 file 이름들을 띄어쓰기로 집어넣으면 된다.

예시 : ex.txt, ex2.txt, ex3.txt 한번에 제거

$ rm ex.txt ex2.txt ex3.txt
  • 터미널의 working directory (현 directory)의 특정 확장자의 파일을 전부 제거하고 싶은 경우 wildcard(*)을 사용하면 된다.

예시 : root directory의 모든 pdf file 제거

$ rm *.pdf
  • 특정 파일을 정말 제거할지 경고를 받으면서 제거하고 싶으면 -i option을 사용하면 된다. 제거할거면 y를 입력하면 된다. 제거하지 않을거면 n을 입력하면 된다.

예시 : ex.py를 확인하면서 제거

$ rm -i ex.py
(Output) rm: remove regular file 'ex.py'?
(Input) y
  • write-protected file을 경고없이 제거하고 싶으면 -f option을 사용하면 된다.

예시 : write-protected ex.txt를 경고 없이 제거

$ chmod a-w ex.txt
$ rm -f ex.txt
  • rm option들은 합성이 가능하다.

예시 : verbose mode로 경고 없이 txt 파일들을 전부 제거

$ rm -fv *.txt

Directory 제거

  • 흔히 rm이나 rmdir 명령어를 사용한다. 리눅스 터미널에서 사용해야 한다.

  • rmdir은 empty directory만 삭제가 가능하다.

예시 : mydirectory 제거

$ rmdir mydirectory
  • rm은 empty directory를 제거하려면 -d option을 사용하면 된다.

예시 : mydirectory 제거

$ rm -d mydirectory
  • file, directory를 포함하는 directory를 제거하려면 rm-r option을 사용하면 된다.

예시 : mydirectory 제거

$ rm -r mydirectory
  • 단 directory 하위의 file이나 directory에 write-protected file이 있으면 경고가 나온다. 이때 write-protected file 개수만큼 경고가 나온다. 전부 y를 입력하면 제거가 된다.

예시 : ex.txt, ex2.txt라는 write-protected file을 보유한 mydirectory 제거

$ rm -r mydirectory
(Output) rm: remove write-protected regular empty file 'mydirectory/ex2.txt'?
(Input) y
(Output) rm: remove write-protected regular empty file 'mydirectory/ex.txt'?
(Input) y
  • 위의 경고를 무시하고 non-empty directory를 제거하고 싶으면 rm에 -rf option을 사용하면 된다. -r option과 -f option의 조합이다.

예시 : ex.txt, ex2.txt라는 write-protected file을 보유한 mydirectory 제거

$rm -rf mydirectory
  • 여러개의 directory를 제거 하고 싶으면 rm -r에다가 directory 이름들을 띄어쓰기로 넣으면 된다.

예시 : mydir1, mydir2, mydir3 한번에 제거

$rm -r mydir1 mydir2 mydir3

참고 링크

profile
CS 학부생, 핵심 관심 분야 : Embed/System/Architecture/SWE

0개의 댓글