Information Security Study

240111 리눅스 셸(명령 이력 확인), 리눅스 파일 시스템(개요, 디렉토리 역할, 절대경로와 상대경로, 디렉토리간 이동, 와일드카드, ls 옵션, ls 파라미터, 파일 조작 명령어) 본문

네트워크 캠퍼스/Linux

240111 리눅스 셸(명령 이력 확인), 리눅스 파일 시스템(개요, 디렉토리 역할, 절대경로와 상대경로, 디렉토리간 이동, 와일드카드, ls 옵션, ls 파라미터, 파일 조작 명령어)

gayeon_ 2024. 1. 12. 10:03

명령 이력 확인하기

ctrl + p 혹은 상단방향키

: 직전 명령 하나씩 조회

 

ctrl + n 혹은 하단방향키

: 다음 명령 하나씩 조회

 

ctrl + r

: 전체적 이력 검색

 

 

※ ctrl + r 이후 사용할 수 있는 명령어

 

<특정 문자 입력>

: 해당 문자를 포함하는 검색결과 조회

 

ctrl + r

:한 개 이전의 검색결과로 이동

 

엔터키

: 현재 검색 결과 실행

 

esc키

: 조회 취소 및 커맨드라인으로 복귀

 

ctrl + g

: 검색 결과 지우고 커맨드라인으로 복귀

 

$ history 숫자

입력시 가장 최근에 입력했던 <숫자>개의 명령을 보여준다.

 

※ history에 사용할 수 있는 확장 명령어

 

$ !번호

를 입력해 재호출할수도 있다.

 

$ !!

: 바로 직전 명령어를 수행한다.

 

$ !?문자열?

: 해당 문자를 포함한 명령어들 중 가장 최근 명령어 하나를 수행한다.

 


 

리눅스 파일의 의미

 

리눅스 내에서는 모든것이 파일로 되어있다.

또한 폴더마저 파일로 분류된다.

따라서 파일을 다룬다는 것은 리눅스의 모든 정보를 다룰 수 있다는 것을 의미한다.

 

 

디렉터리 구조

리눅스의 디렉터리는 모든 폴더 상위에 루트폴더(/) 가 존재하는 형태이다.

 

윈도우에서는 c드라이브, d드라이브 등 두 개이상의 폴더 시작점을 가질 수도 있지만

리눅스에서는 무조건 루트 디렉토리 하위에 모든 저장장치가 매칭된다.

 

 

대표적인 디렉터리의 역할

/bin

대부분의 명령어 실행파일이 이 곳에 배치된다.

시스템과 관련된 중요한 명령어들이 주로 저장된다.

 

/dev

디바이스(장치) 파일이 배치되는 디렉터리다.

디스크, 키보드, 마우스 등의 하드웨어를 제어할 수 있도록 돕는 특수 파일을 의미한다.

 

/etc

리눅스에서 사용하는 대부분의 설정파일이 이곳에 배치된다.

애플리케이션 및 리눅스 자체 설정 파일들이 저장된다.

 

/home

각 사용자 계정명으로 생성되는 디렉터리로 해당 사용자의 개인적 파일이 저장되는 곳이다.

 

/sbin

/tmp

/usr

/var

 

 

절대경로 vs 상대경로

절대경로

: 해당 요소의 모든 경로를 모두 기입해 경로를 지정하는 것

 

 

절대경로로 date.txt 파일의 내용을 확인했다.

위 사진처럼 경로가 /로 시작하면 root부터 시작하는 것이므로 절대경로라고 구분할 수 있다.

 

 

장점

  • 어떤상황에서도 정확한 경로를 지정할 수 있다.

 

단점

  • 특정 상황에서는 불필요하게 긴 경로를 기입해 호출해야 한다.

 

 

상대경로

: 현재 명령을 내리는 지점/파일 위치를 감안해서 상대적으로 위치를 지정하는 것

 

 

상대경로로 date.txt 파일의 내용을 확인했다.

 

 

home 폴더에서 상대경로로 date.txt 파일을 읽었다.

 

 

 

장점

  • 경로지정을 상대적으로 간소화해서 진행할 수 있다.

 

단점

  • 파일의 위치가 옮겨지거나 명령을 내리는 지점이 변경되는 경우 상대경로의 해석이 달라지기 때문에 같이 바꿔야 한다.

 

 

디렉토리간 이동

$ cd 이동할 디렉토리

명령을 이용해 어디로 현재 조회중인 경로를 바꿀지 지정할 수 있다.

상대경로로 집어넣거나 절대경로로 집어넣는것이 모두 가능하다.

 

cd는 change directory의 약자다.

또한 커맨드라인이나 여러 경로를 나타내는 매체에서는 기본적으로

. 은 현재 위치를 나타내고

..은 직전 경로를 나타낸다.

 

home 디렉토리는

$ cd 혹은 $ cd ~

로 이동할 수 있다.

 

 

와일드카드 *

만약 ls 등으로 현재 경로의 내부 요소에 대한 조회명령을 내리는 경우

$ ls ab*

와 같이 작성한다면 ab로 시작하는 모든 파일을 조회하고 싶다는 의미이다.

 

*은 0~무한대의 글자를 의미한다.

 

$ ls ab? 의 경우는 ?가 임의의 1글자를 의미하므로

ab로 시작하는 3글자 파일을 조회한다.

 

$ ls pp??

의 경우는 pp로 시작하는 4글자 파일을 조회한다.

*, ?은 조회명령이 아닌 대부분의 표현식에서도 사용한다.

 

 

ls에 붙는 옵션들

$ ls

: 파일의 목록이 출력된다.

 

옵션으로 좀 더 상세하게 조회하거나, 시간순으로 조회하는 등의 행위도 가능하다.

 

$ ls -l

: 상세조회로 파일의 권한, 생성시각 등을 같이 조회할 수 있다.

 

$ ls -a

: 전체조회로 숨겨진 파일(리눅스에서는 . 으로 시작하는 파일은 전부 숨김 파일)도 조회한다.

 

$ ls -t

: 원래 이름순인 조회순서를 생성 날짜 내림차순으로 조회한다.

 

$ ls -F

: 파일의 종류를 조회한다. 대문자로 작성해야 한다.

 

 

파일 우측에 표시되는 문자로 파일의 용도를 추론할 수 있다.

아무것도 없다면 보통 파일 (텍스트 파일 등)

디렉터리 용도의 파일이라면 /

실행 가능 파일이라면 * (exe 등)

심볼릭 링크라면 @가 붙는다.

 

 

$ ls 경로

: 특정 경로를 타겟으로 한다면 현재 조회중인 디렉토리가 아닌 타겟 경로 내부를 조회한다.

 

 

 

 

조회옵션에 파라미터 붙이기

옵션도 지정하면서 파라미터까지 주는 방법도 있다.

 

$ ls -a /

: 루트폴더 내의 모든 요소를 조회할 수 있다.

 

$ ls -w 30

:  -w에 의해 파일을 최대 30개까지만 출력한다.

 

$ ls --quote-name

: --quote 라는 이름의 옵션을 사용하는데 파일이름에 따옴표를 붙이는 것이다.

 

 

리눅스의 파일 조작 명령어

 

폴더 생성하기

$ mkdir 옵션 작성할 디렉터리명

: make directory의 약자인 mkdir을 이용하면 폴더를 생성할 수 있다.

중첩된 디렉토리를 생성할 수도 있지만 이 경우는 중간 폴더가 존재해야 한다.

 

$ mkdir test/2024/01/10

위 경로는 test/2024/01 폴더가 사전에 있어야 마지막에 10을 생성할 수 있다.

 

만약 사전에 준비되지 않았다면

$ mkdir -p test/2024/01/10

위와 같이 -p 태그를 추가하여 test, 2024, 01, 10 폴더 4개를 한 번에 만들수 있다.

 

 

touch를 활용해 파일 만들기

원래 touch는 파일의 시간을 갱신하기 위해 사용하는 명령어지만,

없는 파일을 touch로 지정하면 파일이 지정한 경로에 새로 생긴다.

 

$ touch 생성할파일1, 생성할파일2…

 

 

rm, rmdir로 파일 및 디렉터리 삭제하기

rm은 remove의 약자다.

파일이나 디렉터리를 삭제해버리는 명령어다.

 

$ rm 파일1, 파일2…

:  먼저 rm의 경우 파일을 여럿 나열할 수 있다.

하나만 나열하면 하나의 파일을, 여럿을 나열하면 나열된 파일을 순차적으로 삭제한다.

 

 

또한 와일드카드도 사용 가능하다.

 

$ rm *.txt

: .txt확장자인 모든 파일을 다 삭제한다.

 

디렉터리의 경우는 좀 다르다.

$ rm 디렉터리명

은 삭제가 되지 않는다.

 

따라서 

$ rm -r 디렉터리명

과 같이 -r 태그를 추가해야 한다.

위와 같이 삭제하면 디렉터리와 디렉터리 하위의 모든 것을 전부 삭제한다.

리눅스의 파일 삭제는 윈도우처럼 휴지통을 거쳐서 삭제되지 않는다.

 

그래서 바로 삭제가 되는게 부담된다면 -i 옵션을 줄 수 있다.

$ rm -i 파일명

: 먼저 삭제할지 말지를 한 번 더 물어보고 삭제를 진행한다.

 

 

또한 디렉터리를 삭제할때 내용물이 없는 경우에만 삭제하고 싶다면

$ rmdir 디렉터리명

위와 같이 rmdir을 대신 사용할 수 있다.

숨겨진 파일까지 모두 지워야만 삭제가 가능한 안전한 명령어다.