Bourne-agin shell 을 줄여서 Bash라고 부른다.
배쉬의 명령어 대해 알아보기 전에 배쉬가 무엇이고 어떤 역할을 하는지에 대해 이해할 필요가 있다.
본격적인 내용에 들어가기에 앞서 리눅스가 어떤 구조로 설계되어 있는지 그림으로 알아보자.
가장 안쪽에는 하드웨어가 위치하고 있다. 우리가 아는 그 하드웨어가 맞다. 각종 입출력 장치, CPU와 RAM과 같은 것들을 의미한다. 그 다음에 커널이 등장한다.
운영체제의 핵심이 시스템 프로그램이다. 각종 프로그램이 실행될 때, 모든 단계를 통제하고 중요한 처리를 하는 프로그램이다. 우리는 이 부분을 코어, 리눅스라고도 부른다. 이 프로그램은 사람이 쉽게 알 수 있는 구조로 되어있지 않기 때문에 쉽게 접근할 수 없다. 따라서 사용자가 커널에 접근할 수 있도록 놓여진 다리의 역할을 shell이 수행하게 된다.
커널과 사용자를 이어주는 다리의 역할을 한다. 사용자는 커널에 직접 접근할 수 없기 때문에 쉘의 도움을 받아서 리눅스에서 제공하는 다양한 기능을 활용한다.
사용자로부터 명령어를 입력받으면 그 명령어를 커널에 전달하여 처리해준다.
컴파일러가 우리가 작성한 언어를 어셈블리어로 변환해주는 역할과 비슷한 역할을 한다고 생각한다.
쉘은 일반적으로 CLI형(명령줄 인터페이스) 과 GUI형(그래픽 인터페이스)으로 나뉜다. 배쉬는 이 프로그램 중 하나이며 CLI로 분류된다. 배쉬와 쉘이 같은 개념처럼 보이지만, 배쉬는 쉘이 하위개념인 셈이다.
리눅스와 맥에서는 기본적으로 배쉬를 실행할 수 있지만, 윈도우에서는 gitBash를 따로 설치해야 한다.
whoami - 배쉬를 실행시키고 있는 유저의 id를 출력한다.
date - 시스템에 설정되어 있는 시간을 출력한다.
ls - 디렉토리에 존재하는 컨텐츠들을 나열한다.
. - 현재 디렉토리
.. - 상위 디렉토리
~ - 내 홈 디렉토리
~user - user의 홈 디렉토리
pwd - 현재 working directory를 출력
mkdir - 디렉토리 생성
rmdir - 디렉토리 삭제
cd - 디렉토리 변경/이동
du - 디스크 사용량 보기
df - 디스크 보기
mount - 디스크를 디렉토리에 붙이기
touch - 빈 파일 생성하기
cp - 복사하기
cat - 파일을 읽어서 표시하기
chmod - 퍼미션 변경하기
ln - 하드링크 만들기
ln -s 소프트링크 만들기
리눅스의 파일 시스템은 트리 자료구조 형태로 구성되어 있다. 때문에 상위 노드와 하위 노드를 명령어를 통해 쉽게 넘나들 수 있다. 루트 노드는 '/'로 생성되어 있다.
리눅스의 구조와 배쉬의 정말 간단한 명령들을 알아보았다. 처음 사용할 때는 낯설지만 익숙해진다면 효율적인 시스템 관리를 할 수 있다. 다음에는 디렉토리와 링크에 대해서 자세하게 알아보자.