shell
[리눅스]셸(Shell)이란? 셸의 변경, 쉘 개념, 기능, 종류와 특징(sh, bash, csh, tcsh, ksh)
티스토리 블로그 참조
쉘(Shell) 소개
쉘이 무엇인지 예시를 들어 쉘 사용에 대한 목적 설명되어있는 블로그
- 쉘이란?
- OS와 대화하는 프로그램 (쉘도 하나의 프로그램임)
- 명렁어와 프로그램을 실행할 때 사용하는 인터페이스
- 인터페이스? : 사용자와 프로그램을 연결하는 것
- 커널과 사용자간의 다리 역할
- 한줄 정리 : 쉘이란 사용자가 직접 명령어를 입력해서 컴퓨터에게 지시를 내리도록 할 수 있는 프로그램, CLI(command lind interface)
- 장점
- 간략한 커맨드로 직관적으로 컴퓨터에게 명령을 내릴 수 있음
- 단점
- 주로 텍스트 기반이고, 명령어와 수행이 처음에는 다소 어려울 수 있다.
쉘의 기능
- 사용자와 커널사이에서 명령을 해석해서 전달하는 명령어 해석기 기능이 있다.
- 자체 내에 프로그래밍 기능이 있어서 프로그램을 작성할 수 있다.
- 쉘 프로그래밍 기능을 이용하면 여러 명령을 반복적으로 수행하는 작업을 하나의 프로그램으로 만들 수 있다.
- 쉘 스크립트란? : 쉘에서 입력하는 명령어들을 하나의 파일(프로그램)으로 작성하는 것, 반복적인 작업 수행시 사용한다,
- 사용자 환경 설정의 기능
- 초기화 파일 기능을 이용해 사용자의 환경을 설정할 수 있음
- 로그인시 초기화 파일이 실행되서 사용자의 초기 환경 설정된다.
- 환경변수의 이해
- 현재 사용중인 쉘 확인하는 명령어 : echo $SHELL
쉘의 종류
- bash : 리눅스에서 가장 많이 사용하고, 가장 강력한 쉘
- zsh : 가장 최근에 나온 쉘이고 본 쉘과 호환된다. 명령행 편집 기능 제공
쉘 변경하기
(위에 첨부한 블로그에 자세히 설명 되어있다. 필요시 참고)
사용자의 기본 쉘 변경은 시스템 관리자만 가능하다.
일반 사용자는 임시로만 바꿀 수 있다.
- 일시적으로 변경하는 명령어 : /bin/sh
- 변경 가능한 쉘 확인 : cat /etc/shells
- 쉘 바꾸기 명령어 : chsh
- 바꾸려는 쉘은 시스템에 설치하고 /etc/shells에 등록해야한다.
생활코딩 Linux-shell script 1,2
-
쉘 스크립트로 자동화된 작업을 처리할 수 있다.
-
touch 파일명 : 새로운 파일 생성
-
cp *.log 디렉토리명 : log 라는 확장자를 가진 모든 파일을 특정 디렉토리로 복사
-
echo $0 : 현재 사용중인 쉘의 종류 알려줌
-
/bin 디렉토리 안을 살펴보면 쉘, 각종 명령어(echo, mkdir, cat 등)이 파일 형태로 저장되어있음을 볼 수 있다.
→ 이들이 다 프로그램이다.
-
nano 편집기
-
nano 파일명 : nano 편집기 실행
- #!/bin/bash : 스크립트의 맨 윗줄에 써야한다. 일종의 약속. 밑에 작성되는 코드들이 /bin/bash 라는 프로그램을 통해 해석되어야 한다는 사실을 운영체제에게 알려주는 것
-
./파일명 : 파일을 실행하는 명령어
- permission denied 라는 문구가 뜨는 경우
- 왜? : 파일을 실행할 권한이 없어서
- 해결 : 접근권한을 준다.
- chmod +x 파일명 : 파일에 x(실행가능한 모드)를 추가한 것이다.
- 그리고 ls -l 명령어를 입력 해보면 해당 파일에 접근 권한이 변경된 것을 볼 수 있다.
- 이후에 프로그램을 다시 실행하면 잘 돌아가는 것을 볼 수 있다.
쉘 스크립트 작성 연습
hello 라는 프로그램 작성해보았다.
hello 라는 문구를 출력하는 프로그램
- #!/bin/bash : 밑에 작성되는 코드들이 /bin/bash 프로그램을 통해서 해석되야 한다는 사실을 운영체제에게 알리는 것
- echo "hello" : hello 출력
- ./hello : hello 파일을 실행하는 명령어
- permission denied 문구 뜬다.
- chmod +x hello : hello 파일에 x(실행가능한 모드)를 추가
- 접근 권한에 대한 내용 (생활코딩에 관련된 내용 영상 있음)
- 접근권한을 주고 다시 실해하면 hello 가 출력되는 것을 볼 수 있다.
오늘 한 일
- 막연하게 있던 쉘에 대한 지식이 더 구체화 되었다.
- 쉘이 무엇인지, 쉘의 기능, 쉘 스크립트란 무엇인지, 쉘 변경하기 학습
- 생활코딩 Linux-shell script 1,2 학습
- 코드업 1019번 (하나밖에 못 풀었다...)
Todo
- 환경 변수
- 목요일에 작성한 노션에 있는 블로그 보고 ssh 학습
- 생활코딩에서 관련된 내용 학습
https://opentutorials.org/course/2598/14204
Reminder
- 책 읽고 각 챕터별로 나만의 언어로 정리하는 습관 들이기