본문 바로가기

Ubuntu Linux

셸 사용하기 (1)

본격적으로 들어가기에 앞서

 

셸(SHELL) 이란 리눅스 커널과 사용자를 연결하는 역할을 수행합니다. 사용자가 입력한 내용을 해석해 관련 명령을 실행하고, 그 결과를 출력하기 때문에 사용자는 셸을 통해 리눅스를 만난다고 해도 과언이 아닐겁니다.

 

셸은 유닉스 초기부터 제공되었고, 다양한 형태로 발전했습니다. 현재 리눅스의 기본 셸로 제공되는 배시(BASH) 셸은 유닉스의 셸인 본 셸과의 호환성도 유지하면서 편리한 기능을 제공하여 리눅스, 유닉스에서 모두 사용되고 있습니다.

 

셸은 여러가지 기능을 제공하는데, 대표적으로 명령어 해석기 기능, 프로그래밍 기능, 사용자 환경 설정 기능으로 구분할 수 있습니다.

 

 

일단 셀의 기본적인 기능을 알아보려고 합니다. 그 전에 현재 사용중인 셸을 확인해봐야 하는데, 가장 쉬운 방법은 프로세스 정보를 확인해보는 겁니다.

 

위와 같이 grep user1 /etc/passwd 를 입력함으로써 /bin/bash 셸을 사용하고 있다는 것을 확인할 수 있었습니다.

 

셸은 비단 bash 만 있는 것이 아니고 다양한 종류가 존재하는데,

 

이는 cat 명령어를 통해 /etc/shells 를 읽어봄으로써 확인할 수 있습니다. 위 사진에서 확인할 수 있듯이 다양한 종류의 셸이 존재하는데, 오류가 발생 했을 때 대처하기가 어려워지기 때문에 변경하지 않았습니다.

 

 

출력하기

 

배시(BASH) 셸의 출력 명령으로는 echo와 printf가 있습니다. 출력 명령은 문자열 출력이나 셸 변숫값 출력, 명령 결과 출력 등에 사용됩니다. 이중 echo 명령은 모든 셸에서 공통적으로 제공하는 출력 명령입니다.

 

echo
ㆍ기능 : 화면에 한 줄의 문자열을 출력한다.
ㆍ형식 : echo [-n] [문자열]
ㆍ옵션 -n : 마지막에 줄바꿈을 하지 않는다.
ㆍ사용 예 : echo, echo [text], echo [-n] [text]

 

 

위 사진은 echo 를 이용해 출력한 것입니다. 이외에도 C언어 출력 함수인 printf 로도 출력하는 것이 가능합니다.

 

printf
ㆍ기능 : 자료를 형식화하여 화면에 출력한다.
ㆍ형식 : printf [옵션] [인수]
ㆍ옵션 : %d, \n 등 C언어 printf 함수의 형식을 지정한다.
ㆍ사용 예시 : printf text, printf "text\n", printf "%d\n" 100

visual studio code 또는 visual studio 2022 처럼 통합개발 프로그램은 아니기 때문에 가시성이 상당히 떨어지지만, 간단하게라도 돌아간다는 것이 중요합니다.

 

개행을 의미하는 \n의 유무 차이를 비교하기 위해 위와 같이 작성했습니다.

 

C언어에서 많이 사용되는 printf 로도 문제없이 출력되는 것을 볼 수 있었습니다.

 

 

 

특수문자 사용하기

 

셸은 사용자가 더욱 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수문자를 제공합니다. 특수문자의 종류, 사용법은 그 종류가 제법 다양합니다. 유용한 특수문자만 골라서 표로 정리해봤습니다.

 

사용 예시 의미
ls -al / | more 루트 디렉터리에 있는 모든 파일의 상세 정보를 한 화면씩 출력합니다. ls -al / 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력됩니다.
ls t?.txt t 다음에 임의의 한 문자가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력합니다. t1.txt, t2.txt, ta.txt 등이 해당됩니다.
ls -l tmp[135].txt tmp 다음에 1, 3, 5 중 하나가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력합니다. tmp1.txt, tmp3.txt, tmp5.txt 파일이 있으면 해당 파일의 상세 정보를 출력합니다. 
ls -l tmp[1-3].txt [1-3]은 1부터 3가지의 범위를 의미합니다. 따라서 ls -l tmp[123].txt와 결과가 같습니다. 즉, tmp1.txt, tmp2.txt, tmp3.txt 파일이 있다면 해당 파일의 상세 정보를 출력합니다.
echo "Today is `date`" `date` 가 명령으로 해석되어 date 명령의 실행 결과로 출력됩니다. 결과적으로 사용 예시는 다음과 같이 출력됩니다. Today is 2022.05.18 (수) 15:54:35 KST

 

익숙하지 않은 배합이라 그렇지 사실 하나씩 뜯어보면 어려울 것 없습니다. 첫ㄴ번째와 마지막 예시만 출력해보겠습니다.

 

ls -al / | more 를 사용한 결과입니다. more은 스페이스바로 페이지를 넘겨야 하기 때문에 다소 불편할 수 있는데, 그렇다면 less 를 사용해도 괜찮습니다. 

 

백쿼터 (``) 로 date를 감싸주니 문자열이 아닌 명령으로 인식하는 것을 알 수 있었습니다.

'Ubuntu Linux' 카테고리의 다른 글

프로세스 관리 명령 (1)  (0) 2022.05.19
특수 접근 권한  (0) 2022.05.19
기본 접근 권한 설정  (0) 2022.05.19
Ubuntu 설치하기  (0) 2022.05.19
vi 환경 설정  (0) 2022.05.18