다시 시작하는 리눅스 #6 디렉터리와 파일

최동민·2022년 12월 27일
0

Linux

목록 보기
15/25

mkdir : 디렉터리 생성

연습용으로 다룰 work 디렉터리 생성.
-p 옵션 사용하여 중첩된 디렉터리 한 번에 생성.
중간경로의 디렉터리가 존재하지 않으면 에러가 발생

touch : 파일 생성

원래 touch는 파일의 타임스탬프를 갱신하기 위한 명령어이다. 이때 대상이 되는 파일이 존재하지 않으면 새롭게 파일을 만든다. 그래서 단순히 빈 파일을 만드는 용도로도 많이 사용된다.
(touch로 이미 존재하는 파일을 지정해도 내용이 지워지거나 하지는 않는다.)

rm과 rmdir : 파일과 디렉터리 삭제

rm newfile : newfile이라는 파일을 삭제
rm 명령어로 디렉터리를 지우려면 재귀적으로 디렉터리 트리를 삭제하는 옵션인 -r을 지정해야 한다. 이때 대상이 되는 디렉터리와 그 안의 파일을 전부 지우므로 주의해야 한다.

삭제하기 전 -i 체크

윈도나 맥에서는 파일을 지우더라도 휴지통에 있어서 복구할 수 있지만, 리눅스에서는 파일이 곧바로 지워진다. 다만 실행할 때 -i 옵션을 붙이면 확인 메시지가 출력

rmdir - 빈 디렉터리 삭제

rm 명령어와 비슷한 명령어로 rmdir이라는 명령어가 있다. 이는 빈 디렉터리를 삭제하는 명령이다.
대상 디렉터리가 빈 디렉터리가 아니면 에러를 출력한다.
숨겨진 파일이 있는 경우 ls testfile 로 testfile 디렉터리 내용이 비었음을 짐작했고 rmdir testfile 하였을 때 실제로는 디렉터리가 비어있지 않기 때문에 오류가 뜨는 이런 상황을 마주할 수 있다.
이게 rm 명령어와의 큰 차이점이다.

cat : 파일 내용 출력하기

시스템의 호스트 이름을 설정하는 파일의 내용을 출력해본다.

특정 명령어를 스케줄에 맞게 자동으로 실행하는 설정 파일의 내용을 출력해본다.

이 명령어 또한 cat /etc/hostname /etc/crontab 이렇게 여러 파일의 내용을 출력할 수도 있다.

행 번호 출력하기

cat 명령어를 실행할 때 옵션으로 -n을 지정하면 행 번호가 함께 출력된다. 소스 코드를 출력할 때 유용한 옵션이다.

파일을 지정하지 않은 경우

cat 명령어 뿐만 아니라 리눅스에서 사용하는 많은 명령어가 입력 파일을 지정하지 않으면 키보드의 입력을 기다린다.
파일을 지정하지 않고 cat 명령어를 실행해보니 커서가 멈춘 상태로 프롬프트도 표시되지 않는다. 아무 문자나 입력해보니 입력한 문자가 그대로 출력된다.
여기서 Ctrl + d 로 명령어를 종료시킨다.

less : 스크롤 표시

cat 명령어로 내용이 긴 파일을 출력하면 화면이 스크롤되면서 전부 출력이 된다. 파일의 첫 부분부터 필요한 만큼 읽고 싶다면 less 명령어를 사용하는 것이 좋다.
less : 지정한 파일을 보기 좋게 화면 단위로 출력하며 위아래로 스크롤하며 파일을 볼 수 있게 해준다.

less 명령어로 파일을 볼 때 사용하는 단축키

  • Space : 한 화면 아래로 스크롤
  • b : 한 화면 위로 스크롤
  • j : 한 행 아래로 스크롤
  • k : 한 행 위로 스크롤
  • q : less 명령어 종료

또한 열려 있는 파일에서 문자열을 검색할 수 있다.
/를 입력하여 문자열을 입력 후 엔터를 누르면 해당 문자열이 있는 위치로 이동한다.
만약 검색 결과가 여러 개라면 n을 눌러 다음 문자열이 있는 위치로 이동 가능하다.
이전 문자열로의 이동은 N
/문자열 : 문자열을 아래 방향으로 검색
?문자열 : 문자열을 위 방향으로 검색

cp : 파일과 디렉터리 복사

cp 명령어로 파일을 복사해본다
기존의 testfiletestfile1로 복사해보았다.

파일을 특정 디렉터리 안에 복사할 수도 있다.

cp로 복사할 때 이미 같은 이름의 파일이 있다면 덮어쓴다.
따라서 복사하기 전 같은 이름의 파일이 있는지, 덮어써도 되는지를 확인해야 한다.
-i 명령어를 사용하면 덮어 쓰기 전 진행 여부를 확인한다.

  • cp 명령어로 디렉터리를 복사하려고 하면? 오류가 발생

재귀적으로 복사하도록 -r 옵션을 지정해주어야 오류가 발생하지 않는다.
-r 옵션을 사용하면 원본 디렉터리 안의 파일과 디렉터리가 모두 재귀적으로 복사된다.

mv : 파일 이동

파일file1file2로 바꾸어본다.

mvtest디렉터리에 있는 파일file2dir1 디렉터리로 이동해본다.

마찬가지로 명령어 실행 전 -i 옵션을 추가하여 재확인 할 수 있다.
디렉터리를 이동할 때에는 cp에서처럼 -r 옵션을 지정하지 않아도 디렉터리 안의 모든 파일과 디렉터리를 전부 옮긴다.

ln : 링크 만들기

리눅스의 파일 시스템에서는 파일에 별명을 붙이는 것이 가능하다. 이를 링크라 부르며 별명을 붙이는 것을 '링크를 생성한다' 라고 한다.
링크에는 하드 링크와 심볼릭 링크 두 종류가 있다.

  • 하드 링크
    /etc/crontabfile1에 복사한 뒤 file1에 대해 file2라는 이름의 하드 링크를 만들어본다.
    file2가 만들어졌고 이제 하드 링크 file2에 접근하는 것은 file1에 접근하는 것과 동일하다.
    cat file2 했을 때 file1의 내용이 출력된다는 뜻.
    물론 file1을 출력해도 file1의 내용이 출력된다.
    즉, 하드 링크란 한 파일 원본에 이름을 여러 개 붙이는 기능이다.
    하드 링크로 만든 파일에 대해 어느 것이 원본이고 어느 것이 복사본인지 구분하지 않아도 된다. 양쪽 다 원본 파일이기 때문.

    하드 링크로 여러 이름을 가지게 된 파일 중 하나를 삭제하면 지정한 이름의 파일만 삭제되고 하드 링크로 연결된 나머지 파일들은 남아있게 된다.
    파일 자체는 모든 하드 링크가 없어져야 삭제된다.
  • 심볼릭 링크
    디렉터리는 하드 링크할 수 없으며, 하드 링크는 서로 다른 디스크에 걸쳐서 만들 수 없다는 제한이 있다. 그런데 심볼릭 링크는 이런 제한이 없어 더 많이 사용되어진다.
    ln 명령어 사용 시 -s 옵션을 붙이면 심볼릭 링크가 만들어진다.
    ls명령어 실행 시 -l 옵션을 지정하면 심볼릭 링크 여부를 확인할 수 있다. 다음과 같이 어떤 파일에 연결되었는지 화살표로 표시된다.
    마찬가지로 심볼릭 링크 파일file3에 접근하면 링크로 연결된 파일file1에 접근할 수 있다.

    심볼릭 링크란 원본 파일에 대한 정보가 담긴 작은 특수 파일이며 하드 링크와 달리 원본과 구별된다.
    심볼릭 링크file3를 지우지 않은 채 원본 파일file1을 지울 수도 있다. 그렇게 되면 심볼릭 링크가 깨짐 상태가 된다.

이러한 링크는 어떤 상황에서 사용되어질까?

  • 긴 경로명을 짧게
    다음은 local/work/code/project/source 라는 긴 경로를 source라는 이름으로 심볼릭 링크를 만드는 예이다.
    ln -s local/work/code/project/source source
    cd source 이렇게 긴 경로명에 쉽게 이동 가능
  • 여러 버전의 프로그램이 있는 경우
    프로그램을 설치할 때 디렉터리의 이름에 버전 정보를 붙여 여러 버전의 소프트웨어를 배치하는 경우가 있다.
    다음과 같이 여러 버전을 심볼릭 링크로 관리할 수 있다.
    각 버전의 경로를 직접 지정하지 않고 심볼릭 링크 latest를 만들어 링크에 연결된 버전을 사용.
profile
코드를 두드리면 문이 열린다

0개의 댓글