새싹 수업 초기에 리더님(강사님)을 따라 VS code 터미널을 git bash로 변경한 뒤로 줄곧 git bash를 사용하고 있는데, 이게 어떤 의미를 갖고 있는지가 궁금했지만 당시에는 아무리 관련 블로그를 읽어도 완전하게 이해되지 않았다. 지금까지 이게 뭔지 정확하게 모르는 상태로 계속 사용해왔지만, 앞으로 계속 개발자로 살거라면 이제는 알아야한다고 생각되었다. 그래서 데이터 전송 절차 공부하다가 갑자기 정리해보는 글.✍
쉘과 커널 (Shell, Kernel)
쉘과 커널은 운영체제의 핵심 구성 요소로, 사용자와 하드웨어 간의 상호작용을 관리한다.
쉘은 사용자와의 소통을 담당하며, 커널은 시스템 리소스를 관리한다.
사용자가 쉘을 통해 입력한 명령어는 커널에 전달되어 실행되며, 그 결과가 다시 쉘을 통해 사용자에게 반환된다.
쉽게 말해서, 사용자 → 쉘(Shell) → 커널(Kernel) 구조인 셈이다.
내부 알맹이. 운영 체제의 핵심 부분. 하드웨어와 소프트웨어 간의 상호작용을 관리하는 프로그램. 주요 역할은 아래와 같다. 외부 껍데기. 사용자와 운영체제 간의 인터페이스 역할을 하는 프로그램. 사용자가 입력하는 명령어를 해석하여 커널로 전달한다. 주요 역할은 아래와 같다. 그리고 쉘의 한 종류가 Powershell, bash이다. PowerShell과 Bash는 모두 쉘(Shell)의 한 종류로, 사용자와 운영체제의 상호작용을 돕는 프로그램이다. 명령어를 입력받아 처리하고, 그 결과를 사용자에게 보여주는 역할을 수행한다는 부분은 같지만, 각각의 특성과 사용 환경에서 차이가 있다. 윈도우 기반 컴퓨터에서 기본적으로 제공되는 쉘. 최신 버전은 리눅스와 macOS에서도 사용할 수 있다. 객체 지향 방식으로 설계되어 명령어의 결과를 객체로 반환하기 때문에, 사용자들은 더 복잡한 데이터 처리를 쉽게 할 수 있다. 다양한 cmdlet을 통해 Windows 시스템 관리 작업을 쉽게 수행할 수 있으며, 그 기능을 모듈화하여 확장할 수 있다. 그러나 PowerShell은 사용법이 복잡하여 배우는데 시간이 걸릴 수 있고, 주로 윈도우 환경에 최적화되어 있어 의존성이 높다는 단점이 있다. 리눅스와 macOS에서 기본적으로 제공되는 쉘. 윈도우에서도 사용할 수 있지만, 주로 리눅스 환경에서 많이 사용된다. 텍스트 기반의 명령어 입력을 통해 시스템과 상호작용하며, 간단하고 직관적인 명령어 구조로 인해 서버 관리 및 스크립트 작성에 유용하다. 특히 '파이프라인' 기능을 통해 여러 명령어를 연결해 사용할 수 있어서 리눅스 환경에서 매우 효율적이고, 강력한 스크립팅 기능을 통해 복잡한 작업을 자동화할 수 있다. 그러나 Bash는 주로 리눅스에서 사용되므로 윈도우 환경에서 사용하기에 제한이 있을 수 있고, 데이터 처리가 객체 기반이 아니라서 복잡한 데이터 구조를 다룰 때 불편할 수 있다. 윈도우에서 bash 명령어 사용하려고 설치하는 프로그램. 주로 Git과 함께 설치되어, Git 명령어와 Bash 환경을 제공한다. 리눅스와 유사한 환경을 제공하여 Git 명령어를 쉽게 사용할 수 있고, 기본 Bash 명령어를 사용할 수 있어서 파일 관리나 시스템 작업이 쉽다. Git과 함께 사용하기 위해 다양한 운영체제에서 호환된다. 그러나 Windows에서 사용하면 원래의 리눅스 환경에 비해 성능이 떨어질 수 있고, Windows PowerShell에 비해 일부 고급 기능이 부족할 수 있다. Windows 운영체제를 사용하는 개발자들도 개발환경의 일관성 유지, 효율적인 버전 관리, 간단한 명령어, 다양한 운영체제와의 호환성 등 이유로 git bash를 많이 사용한다. CMD와 Windows PowerShell은 모두 윈도우 기반의 명령 프롬프트로, 사용자와 운영 체제 간의 상호작용을 지원한다. 하지만 CMD는 기본적인 명령어 실행을 위한 도구이고, PowerShell은 보다 강력한 시스템 관리 및 자동화 기능을 제공하는 도구이다. 윈도우 운영 체제에서 기본적으로 제공되는 텍스트 기반 명령 프롬프트. 사용자가 간단한 명령어 입력을 통해 파일 관리, 프로그램 실행 등 기본적인 작업을 수행할 수 있다. 그러나 CMD는 기능이 제한적이고, 데이터 처리가 객체 기반이 아니라 텍스트 처리에 의존하기 때문에 복잡한 시스템 관리 작업이나 자동화에는 적합하지 않다. 주요 기능을 설명하자면, CMD의 한계를 극복하기 위해 개발된 향상된 명령 인터페이스. PowerShell은 객체 지향 방식으로 설계되어 명령어의 결과를 객체로 반환하여 데이터 관리가 가능하다. 또한 Windows 시스템 관리에 필요한 다양한 cmdlet을 제공하여, 복잡한 작업을 보다 쉽게 수행할 수 있도록 한다. 당시에 기본적으로 Powershell로 설정되어있던 VS code의 터미널을 git bash로 바꾸면서 왜 바꿔야하는지 이유를 몰랐고, 쉘과 커널은 상반기에 정보처리기사 공부하면서 봤던 내용이지만 정확하게 이해하지는 못한 상황에서 외웠었는데, 오늘 이것들의 개념을 확실하게 알게 되었다!👍 돌아서면 또 까먹겠지만 내가 이해하는 것과 모르는 것은 다르니까! 아무튼 오늘도 한 단계 더 성장했다!👏커널 (Kernel)
쉘 (Shell)
Powershell, Bash
PowerShell
Bash (Bourne Again SHell)
Git Bash
CMD, Windows Powershell
CMD (Command Prompt)
Windows Powershell
💡 cmdlet (커맨드렛)
PowerShell에서 특정 작업을 수행할 수 있는 경량의 명령어.
데이터를 객체로 처리하여, 명령의 결과를 다음 명령에게 쉽게 전달할 수 있다. 또한 여러 cmdlet을 연결하여 작업을 수행할 수 있는 '파이프라인' 기능을 지원한다. 일반적으로 동사-명사 형식으로 구성된다.
예를 들어:
Get-Process: 현재 실행 중인 프로세스 정보를 가져오는 명령어.
Set-Location: 현재 작업 디렉토리를 변경하는 명령어.
/
명령 프롬프트 (CMD)
Windows Powershell
기본 개념
텍스트 기반의 명령어 실행 환경
객체 지향 기반의 스크립팅 및 관리 환경
사용 목적
기본적인 파일 및 프로그램 관리
시스템 관리, 자동화, 복잡한 스크립트 작성
명령어 반환 방식
텍스트 출력
객체 반환
스크립팅
배치 파일(.bat) 사용
스크립트 파일(.ps1) 사용
기능 제한
상대적으로 기능이 제한적
다양한 cmdlet 및 모듈 지원
사용자 경험
간단하고 직관적
복잡하지만 강력한 기능 제공
'📚 자료실' 카테고리의 다른 글
WS, WAS의 차이 (0) | 2024.11.26 |
---|---|
HTTP 상태 코드의 종류 (0) | 2024.10.30 |
SFTP, FTP, SSH 기본 개념 (0) | 2024.10.15 |
프로토콜의 개념과 종류, OSI 7계층, TCP/IP 4계층 (0) | 2024.10.15 |
CORS 개념 정리 (0) | 2024.10.11 |