Information Security Study
240111 리눅스 셸(명령 이력 확인), 리눅스 파일 시스템(개요, 디렉토리 역할, 절대경로와 상대경로, 디렉토리간 이동, 와일드카드, ls 옵션, ls 파라미터, 파일 조작 명령어) 본문
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을 대신 사용할 수 있다.
숨겨진 파일까지 모두 지워야만 삭제가 가능한 안전한 명령어다.