Linux 기초, Linux shell

Gunter·2024년 2월 19일

Linux는 UNIX 계열의 운영체제(OS, Operation System).
UNIX의 무료 공개 버전.(GNU GPL, General Public License, 일반 공개 라이선스)


Linux의 장점

  1. 운영체제의 핵심인 커널 등, 같이 내장되어 배포되는 대부분의 응용프로그램이 소스가 공개된 오픈소스 프로그램이다.
  2. Ethernet, SLIP, PPP, ATM 등 다양한 네트워크 환경을 지원하며, TCP/IP, IPX 등 대부분의 네트워크 프로토콜을 지원한다.
  3. 다양한 파일 시스템을 지원한다. (리눅스 고유 파일 시스템인 ext2, ext3, ext4등 사용)
  4. 이식성이 뛰어나다. 컴파일을 통해 쉽게 다른 시스템에 이식이 가능하다.
  5. 상업용 UNIX의 모든 특성을 가지고 있어, 유연성과 확장성이 좋다.
  6. 셸과 기본 명령어, 편집기, 개발도구 등 다양한 응용프로그램이 제공된다.
  7. 다양한 목적에 따른 여러 배포판이 존재한다.(레드햇, 데비안, 우분투 등)

 


Linux의 단점

  1. 응용 프로그램들이 비상업적인 제품이라 기술지원이 부족하다.
  2. 이식성, 확장성 등이 뛰어나지만 모든 플랫폼에서 작동하진 않는다.
  3. 중요한 설정은 명령어를 입력하거나 관련 환경 설정 파일을 편집기를 사용해서 수정해야 하기 때문에 사용자의 숙련된 기술이 요구된다.



Linux의 특징

  1. /root를 기준으로 하위 디렉토이레 usr, var, bin 등이 존재하는 계층적 파일 구조이다.(트리 구조)
  2. 하드웨어적 자원들이 모두 파일화되어 사용된다.
  3. 가상 메모리를 사용한다. (하드디스크의 일부를 메모리처럼 사용)
  4. 동적 라이브러리를 지원한다.
  5. 가상 콘솔을 지원한다. 하나의 모니터에 여러개의 가상 화면을 제공하여 사용하게 한다. CTRL + ALT + F1 ~ F6
  6. 파이프 | 사용. 어떤 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 하는 것.
  7. 리다이렉션 사용. 어떤 프로세스의 입/출력을 표준 입출력이 아닌 다른 입출력으로 변경할 때 사용.

💡
Linux <명령어> -h or --help 를 입력하면 해당 명령어의 다양한 옵션과 사용법을 확인할 수 있다.
ex) ls --help

 



shell 이란 ?

쉘 -> 사용자가 운영체제의 서비스를 사용할 수 있도록 사용자의 입력을 기반으로 프로그램을 실행해주는 역할.

커널 -> 쉘로부터 전달받은 명령을 기계가 이해할 수 있는 언어로 변환하여 CPU, I/O, 메모리 등 다양한 리소스에 접근해 주는 역할.

쉘은 OS 외부 계층, 커널은 OS 내부 계층에 속해있다.




cat /etc/shells 명령어를 통해 현재 운영체제 환경에서 사용할 수 있는 쉘의 종류를 확인할 수 있다.
(저는 kali linux를 썼어용)

이름위치특징
sh (Bourne Shell)/bin/sh최초의 유닉스 쉘로 스크립트를 지원하며 sh로 표기. 논리 및 산술 연산을 처리하는 내장 기능이 없어 이전에 사용한 명령을 기억할 수 없음. 스크립트 작성에 있어서 기본적인 기능만을 제공.
bash (Bourne Again Shell)/bin/bash본쉘의 확장 버전으로 만든 Unix 쉘로 Linux, Mac의 기본 쉘로 사용된다. /bin/sh의 모든 기능을 포함하며 그 외에도 명령어 자동 완성, 명령어 히스토리, 직접적인 배열 조작 등 여러 편리한 기능 추가 제공.
zsh/bin/zshbash, ksh, tcsh의 기능을 결합하여 맞춤법 검사, 로그인 감시, 자동 생성, 플러그인 및 테마가 지원되며, oh my zsh등의 사용자 정의 테마를 지원함.

이 외에도 csh, ksh, tcsh 등 다양한 쉘의 종류가 있다.
대부분 bash, zsh를 많이 사용한다.





현재 사용 중인 쉘의 종류를 알아볼 수 있는 다양한 명령어들이다.

chsh -s /bin/[쉘이름] [사용자명]

을 입력하면 현재 사용 중인 쉘을 변경할 수 있다.

 


 

+) 명령행 편집 기능 😲 🌟 ( mac에서도 command 말고 ctrl)

  • ctrl + a : 가장 왼쪽으로 이동
  • ctrl + e : 가장 오른쪽으로 이동
  • ctrl + k : 커서 오른쪽 행 전체 삭제
  • ctrl + u : 행 전체 삭제
  • ctrl + y : 삭제 취소

💡 /bin/sh vs /bin/bash
둘 다 모두 쉘을 지칭하는 경로, /bin/bash는 /bin/sh의 확장된 버전이며, 더 많은 기능을 제공한다.
그러나 스크립트 작성 시엔 호환성을 위해 가급적 /bin/sh를 사용하는 것이 좋음. 모든 시스템이 bash를 지원하진 않아서 ..!

0개의 댓글