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