Shell
- 터미널 환경에서 입력한 명령어를 해석하고 관리하여 리눅스 커널과 사용자를 연결해주는 인터페이스
shell script
- 명령어를 한줄한줄 실행시키는 것은 번거롭기 때문에 이러한 명령어들을 한 파일에 담아놓은 파일을 말한다.(확장자명 .sh)
명령어의 기본 문법
<실행할 프로그램명> <실행할 내용>
위와같은 형태로 구성되어있다.
실행할 프로그램명은 이미 정해져 있는 명령어를 사용한다. 이러한 명령어를 내장명령이라 부르기도 한다.
echo
echo 라는 명령어를 사용하여 "Hello World" 라는 문장을 출력해보자

위 내용과 같은 명령어를 실행하면 Hello World가 출력된다.
echo 라는 명령어로 "Hello World" 를 출력하라는 말이다.
명령어에는 echo처럼 프로그램+내용 형태로 구성되는 simple command 와
프로그램+옵션+내용 으로 이루어진 combined command로 크게 구분 할 수 있다.
ls
ls 명령어는 현재 디렉토리에 있는 파일과 폴더들의 이름을 나열해주는 명령어이다.

위 사진처럼 ls 명령어를 실행하면 지금 위치에 어떤 폴더와 파일이 있는지 보여준다.
wc
wc 명령어는 Word Count , 줄 단어 문자 수 등을 출력하는 명령이다.

a.txt 파일의 내용이 위와 같을 때

a 라는 텍스트 파일에 대해 wc 명령어를 실행하면 위와 같은 결과가 나온다.
행 수가 총 2까지 있고
단어는 4개
문자는 21개 있다고 출력된 것이다.
텍스트 파일을 보면 총 3줄인데 왜 2줄로 나오는걸까
-> 행 수는 개행문자(\n)가 몇개 있는지로 판단한다. 한마디로 줄 바꿈이 몇번 일어났는지로 확인한다는 것이다.
만약 텍스트 파일이 아무내용없이 엔터만 5번 친 비어있는 6줄 짜리 텍스트 파일이면 어떻게 나올까

엔터 = 개행문자 총 5번
5 0 0 a.txt 이렇게 나올거라 생각했는데

이렇게 나왔다,, 개행문자도 문자니까.... 꼭 기억하자
- wc 옵션
-c : 전체 문자수만 출력
-l : 전체 라인의 수만 출력
-w : 전체 단어수만 출력
pipe line
명령어를 실행할 때 여러 프로그램을 사용하려면 | 기호를 사용하면 된다. 바로 파이프라인이다.
이전 명령의 출력을 다음 명령의 입력으로 보내는 역할을 한다.
두개의 명령어가 " | " 기호로 연속적으로 있다면 앞부분의 실행된 명령어가 화면에 출력하는 내용이 그대로 다음 명령어의 입력으로 보내지는 것이다.
위에서 확인한 ls, wc 명령어를 한번에 사용해보면 다음과 같다.

왜 이렇게 나왔는지 확인해보자
ls 를 실행하면 다음과 같다.

사실은

이렇게 출력되어야 하는데 보기좋게 한줄로 나오는거라 생각하면 wc 출력이 왜 위 사진처럼 나왔는지 알 수 있다.
wc 명령어에서 개행문자를 잘 생각해줘야하는데 ls 의 출력값은 요소 하나를 출력하면 무조건 바로 개행문자가 있다고 생각하면 된다. 그래서 파일, 폴더가 총 6개인데도 총 6행이라고 출력되는 것이다.
특정 디렉토리의 파일, 폴더 갯수가 몇개인지 알고싶으면 어떻게 해야할까
/bin 위치에 몇개의 요소가 있는지 알려면 다음과 같이 작성하면 된다.

라인의 수가 결국 파일, 폴더의 수라고 생각할 수 있기 때문이다.
head
head 명령어는 텍스트 파일 내부의 내용을 볼 수 있도록 해주는 명령어이다. 내용 모두를 출력해주는 명령어는 아니고 일부분(10줄까지) 출력해주는 명령어이다.


옵션으로 특정 줄까지 출력할 수 있다.
방금 txt 파일을 5번째 줄까지 출력해보자

다섯번째 줄 내용까지만 출력이 되는 것을 확인 할 수 있다.
현재 디렉토리의 내용물 중에 앞부터 원하는 갯수로 출력할 수 있다.
/bin 폴더의 앞의 5개 내용 출력하려면 다음과 같이 실행하면 된다.

여기서 [ 는 대부분의 시스템에서 test 폴더를 가르킨다고 한다.
cut
cut 명령어는 문자열을 잘라내서 새로운 문자열을 만드는 명령어이다.
문자열의 내용중 특정 부분을 지정해 출력할 수 있다는 것이 위에서 본 head 명령어와 다른점이다.
cut 옵션
-c : 문자열을 기준으로 잘라낸다.
-d : 지정한 문자를 구분자로 사용 (기본은 TAB)
-f : 필드를 기준으로 잘라낸다.
우선 -f 옵션에 대해 알아보자
animal.txt에는 다음과 같은 내용이 저장되어있다.

여기서 각 행의 세번째 필드인 연도만 출력하기 위해서는 다음과 같이 진행하면 된다.

첫번째 세번째 필드가 보고싶다면,

이런 명령어를 사용하면 된다.

이런 명령어도 가능하다.(1~3 필드 모두 보기)
-c 옵션을 사용해보자

맨 앞글자만 나온다.

위처럼 범위 지정도 가능하다.
첫 필드의 마지막 문자를 출력해보자 (마지막 글자만 가져오는 명령어는 없어서 rev 명령어를 이용한다.)

animals.txt 에서 각 줄의 이름중 두번째 이름을 출력해보자

'리눅스' 카테고리의 다른 글
| [리눅스] 정규표현식(regex, regular expression) (1) | 2024.04.19 |
|---|---|
| [리눅스] 초기화 파일, Command History (명령 히스토리) (1) | 2024.04.05 |
| [리눅스] 리다이렉션 (Redirection), 히스토리 (History), cat 명령어, Escape Letters (0) | 2024.04.04 |
| [리눅스] vi, mv, alias, shadowing, 변수 (0) | 2024.03.31 |
| 리눅스 명령어2. (grep, sort, uniq) (1) | 2024.03.21 |