[TIL] 1월 10일 주말학습

yeon·2021년 1월 10일
2
post-custom-banner

shell

[리눅스]셸(Shell)이란? 셸의 변경, 쉘 개념, 기능, 종류와 특징(sh, bash, csh, tcsh, ksh)

티스토리 블로그 참조

쉘(Shell) 소개

쉘이 무엇인지 예시를 들어 쉘 사용에 대한 목적 설명되어있는 블로그

  • 쉘이란?
    • OS와 대화하는 프로그램 (쉘도 하나의 프로그램임)
    • 명렁어와 프로그램을 실행할 때 사용하는 인터페이스
      • 인터페이스? : 사용자와 프로그램을 연결하는 것
    • 커널과 사용자간의 다리 역할
    • 한줄 정리 : 쉘이란 사용자가 직접 명령어를 입력해서 컴퓨터에게 지시를 내리도록 할 수 있는 프로그램, CLI(command lind interface)
    • 장점
      • 간략한 커맨드로 직관적으로 컴퓨터에게 명령을 내릴 수 있음
    • 단점
      • 주로 텍스트 기반이고, 명령어와 수행이 처음에는 다소 어려울 수 있다.

쉘의 기능

  • 사용자와 커널사이에서 명령을 해석해서 전달하는 명령어 해석기 기능이 있다.
  • 자체 내에 프로그래밍 기능이 있어서 프로그램을 작성할 수 있다.
    • 쉘 프로그래밍 기능을 이용하면 여러 명령을 반복적으로 수행하는 작업을 하나의 프로그램으로 만들 수 있다.
    • 쉘 스크립트란? : 쉘에서 입력하는 명령어들을 하나의 파일(프로그램)으로 작성하는 것, 반복적인 작업 수행시 사용한다,
  • 사용자 환경 설정의 기능
    • 초기화 파일 기능을 이용해 사용자의 환경을 설정할 수 있음
    • 로그인시 초기화 파일이 실행되서 사용자의 초기 환경 설정된다.
    • 환경변수의 이해
  • 현재 사용중인 쉘 확인하는 명령어 : echo $SHELL

쉘의 종류

  • bash : 리눅스에서 가장 많이 사용하고, 가장 강력한 쉘
  • zsh : 가장 최근에 나온 쉘이고 본 쉘과 호환된다. 명령행 편집 기능 제공

쉘 변경하기

(위에 첨부한 블로그에 자세히 설명 되어있다. 필요시 참고)

사용자의 기본 쉘 변경은 시스템 관리자만 가능하다.

일반 사용자는 임시로만 바꿀 수 있다.

  • 일시적으로 변경하는 명령어 : /bin/sh
    • exit 누르면 취소된다.
  • 변경 가능한 쉘 확인 : 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 라는 문구를 출력하는 프로그램

hello
  • touch 파일명.sh : 파일 생성

  • nano 파일명 : nano 편집기 실행해서 코드 입력

    nano
- #!/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

  • 자기전에 CPU 책 보고 자기

Reminder

  • 책 읽고 각 챕터별로 나만의 언어로 정리하는 습관 들이기
post-custom-banner

0개의 댓글