11일차 - 리눅스 (디렉토리 및 파일)

Jk Lim·2023년 4월 24일
0

MLOps 부트캠프

목록 보기
10/34

11일차는

파일 및 디렉토리 관련 명령어들을 학습하였다.
1. CLI 제어문자
2. 디렉토리/파일 관련 이론
3. 명령어 - 디렉토리 및 파일 보기
4. 명령어 - 디렉토리 및 파일 내용 변경


1. CLI 제어 문자

제어 문자설명
Ctrl+c현재 동작중인 명령어 종료
Ctrl+d파일의 끝 또는 종료
Ctrl+u현재 명령어 라인을 모두 지움
Ctrl+w커서가 있는 곳의 단어를 지움
Ctrl+s화면 출력 중지
Ctrl+Q화면 출력 시작

참고

  • |(파이프라인)은 선행 프로세스의 결과값을 후행 프로세스의 인풋으로 사용
  • ;(세미콜론)은 별개의 명령을 각각 실행. 에러가 발생하던 안하던 상관 없음.
  • && 명령어 나열 ⇒ 예)패키지를 설치할 때, 꼭 순차적으로 설치해야할 때 &&으로 명령어를 묶어서 나열할 수 있음.
  • echo $? ⇒ 마지막으로 종료된 명령어의 종료 상태를 말해주는데, 종료상태란 정상적인 종료0과 비정상적 종료인 0을 제외한 다른 값을 의미한다.

2. 디렉토리/파일 관련 이론

  • 하나의 파일을 읽어들이기 위해서는 디렉토리에 존재해야함.
  • 디렉토리 : 자신이 보관하고있는 파일과 디렉토리 목록을 데이터 블록에 보관
  • 디렉토리에서 ls명령어, 파일에서 cat 명령어 → 이 두가지 명령어는 각각의 파일에 대한 내용을 보여줌
  • 파일의 읽기 (cat) : 디렉토리 안에 inode를 통해서 file의 메타데이터에 접근 → 메타데이터를 통해서 디스크의 섹터에 접근해서 내용을 불러옴
  • 파일의 복사 : 해당 섹터의 내용을 다른 디스크 공간에 복사 → 새로운 inode와 파일명을 연결시켜 디렉토리에 리스트업
    (파일을 복사하려면 파일이 존재하는 디렉토리를 읽고 접근할 수 있어야한다. 파일을 가지고 있는 디렉토리에 대한 읽기와 실행 권한)
  • 파일 삭제 : 디렉토리 안에 inode와 파일명(디렉토리명)의 연결을 끊음
  • 파일 이동 : inode 및 파일명 변경 안됨. 같은 파일
    (참고) alias : 단축키 생성. 내가 자주 사용하는 명령어들을 축약해서 쓸 수 있음.

3. 명령어 - 디렉토리 및 파일 보기

(1) 디렉토리 작업

  • pwd : 현재 디렉토리 확인
  • ls : 디렉토리 내용 확인 (디렉토리가 가지고 있는 파일 또는 하위 디렉토리)
    • -a : 숨김파일 표시
    • -l : 내용 자세히 보기
    • -d : 현재 디렉토리에 대한 정보
    • -R : 하위 디렉토리 모두 확인
    • -F : 파일 종류 표시
  • file : 특정 파일이 어떤 종류의 파일인지 확인할 때 사용
  • cd : 디렉토리 변경

(2) 파일작업

  • cat : 하나 이상의 텍스트 파일을 화면으로 출력
  • more : 페이지 단위로 텍스트 파일 출력
  • head, tail : 처음 또는 마지막 10줄만 출력 (-n옵션을 사용해 지정 가능)

tail -f 옵션

  • 시스템 모니터링에 활용
  • 내용이 추가되면 그 내용을 보여줌. 명령을 내리는 순간 변화를 체크할 수 있음 ⇒ 대기프롬프트에 출력됨.
  • 다른 터미널로 또다시 ssh서버를 접속하거나 종료하면 그순간마다 로그파일을 바로바로 확인 할 수 있음.
  • 코드 실행 시 fail난 지점을 파악하는데 용이하다.
[root@localhost ~]# tail -f /var/log/messages
Apr 24 12:13:37 localhost NetworkManager[679]: <info>  [1682306017.5260] dhcp4 (enp0s3):   plen 24 (255.255.255.0)
Apr 24 12:13:37 localhost NetworkManager[679]: <info>  [1682306017.5260] dhcp4 (enp0s3):   lease time 600
Apr 24 12:13:37 localhost NetworkManager[679]: <info>  [1682306017.5260] dhcp4 (enp0s3): state changed bound -> bound
Apr 24 12:13:37 localhost dbus[569]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
[대기 프롬프트]

4. 명령어 - 디렉토리 및 파일 내용 변경

  • cp : 파일 복사
    • 세개 이상의 argument가 입력되면 마지막을 제외한 argument들을 마지막 argument인 디렉토리로 복사
    • -r : 디렉토리 복사
    • -i : 대화형 모드
  • mv : 파일이나 디렉토리를 이동시킴. inode는 변경되지 않는다. 같은 디렉토리 안에서 mv를 하면 파일의 이름만 변경됨
  • touch : 빈 파일 생성. 파일이 있을 시 내용 변경 없음. 수정시간과 접근시간만 현재시간으로 업데이트
  • mkdir : 디렉토리 생성 (-p 옵션 : 하위 디렉토리까지 한번에 만들 수 있음)
  • rm : 파일 삭제 (-r 옵션 : 디렉토리 삭제 / -f 옵션 : 강제 삭제 / -i 옵션 : 대화형)

링크

ln : 하드링크

  • 같은 inode를 사용하는 완전히 같은 파일
  • 동일 파티션의 경우에만 가능
  • 디렉토리는 하드링크를 사용할 수 없다.
  • 하드링크를 사용하면 파일의 링크카운트가 하드링크 수 만큼 증가한다.

하드링크 걸린 파일 찾기 (inum, samefile)

[root@localhost ~]# find . -inum 69364431
./aaa
./bbb
[root@localhost ~]# find . -samefile aaa
./aaa
./bbb

ln -s : 심볼릭링크

  • 심볼릭링크는 디렉토리에도 걸린다.
  • 윈도우의 바로가기랑 같음
  • 심볼릭링크를 걸어도 링크카운트는 증가하지 않는다.

0개의 댓글