Windows에서 Bash의 강력한 기능 알아보기

Microsoft Windows는 데스크톱에서 지배적 인 역할을 할 수 있지만, 특히 관리 및 개발 도구를위한 빠르게 증가하는 오픈 소스 소프트웨어 시장은 분명히 Linux를 선호합니다. Android가 Linux 변형을 사용하는 모바일 시장은 말할 것도 없습니다. Windows 개발자라면 Linux 기능을 활용하려는 드럼 비트가 계속 커지고 있습니다.

수년 동안 Microsoft는 SSH 및 Cygwin 및 MSYS가있는 PowerShell과 같은 Windows에서 Linux 기능을 사용하기위한 다양한 해결 방법을 도입했습니다. 가상 머신 내에서 Linux를 실행하는 것도 또 다른 옵션입니다. 그러나 VM은 상당한 양의 리소스를 소비하며 예를 들어 로컬 파일을 편집하거나 로컬 드라이브에 대한 전체 액세스 권한을 얻을 수 없기 때문에 일류 Linux 환경을 제공하지 않습니다.

IT 세계가 많은 프로젝트에서 Linux로 전환함에 따라 Microsoft는이 성장하는 시장을 활용할 수있는 새로운 제품을 제시했습니다. Windows의 Bash가 답입니다. 여기에서는 Windows에 Bash를 설치하는 과정을 안내하고 Linux 명령 줄에서 수행 할 수있는 작업과 수행해야하는 이유에 대해 설명합니다.

Windows의 Bash 개요

Bash on Windows는 Windows 10에 추가 된 새로운 기능입니다. Microsoft는 Ubuntu Linux의 창시자 인 Canonical과 협력하여 Linux 용 Windows 하위 시스템 (WSL)이라는 Windows 내에서이 새로운 인프라를 구축했습니다. 개발자가 완전한 Ubuntu CLI 및 유틸리티 세트에 액세스 할 수 있습니다. 기본 Linux 환경을 통해 개발자는 로컬 파일 및 드라이브에 대한 액세스를 포함하여 Windows에서 Linux 명령을 실행할 수 있습니다. Linux는 기본적으로 Windows에 통합되므로 개발자는 Linux 및 Windows에서 동일한 파일에 대해 작업 할 수있는 유연성을 갖게됩니다. 간단히 말해서, Bash on Windows는 Ubuntu 사용자 영역을 Linux 커널을 제외한 Windows로 가져옵니다.

Bash 대 PowerShell

Microsoft에는 이미 PowerShell에 명령 셸이 있습니다. 그렇다면 Windows의 Bash는 어떻게 다릅니 까? PowerShell은 작업 자동화를위한 Microsoft의 구성 관리 프레임 워크입니다. API 지향 아키텍처로 Windows를 관리하는 데 사용됩니다. 반면 Bash는 대부분 자동화 및 개발을 위해 텍스트 파일에 의존합니다. 이 둘은 초점과 디자인이 모두 다릅니다. 예를 들어 ls명령을 사용하여 디렉터리의 파일을 나열하면 PowerShell은 출력을 파일 개체로 표시하는 반면 Windows의 Bash는 출력을 문자열 집합으로 표시합니다. 고맙게도 Windows 관리자의 경우 두 솔루션을 나란히 사용하여 두 가지 장점을 모두 활용할 수 있습니다.

한 가지주의 할 점 : PowerShell에는 실제로 PowerShell cmdlet을 실행할 때 기존 Bash 명령을 실행 하고 있다고 생각할 수있는 별칭이 있습니다 . 이것은 어떤 사람들을 넘어 뜨릴 수 있습니다. 예를 들어 lsGet-ChildItem명령 의 별칭입니다 . 마찬가지로, pwd별칭입니다 Get-Locationcd의 별칭입니다 Set-Location. PowerShell의 모든 별칭 목록을 보려면 Get-Aliascmdlet을 사용하십시오 .

Bash on Windows는 오픈 소스 개발자에게 다양한 이점을 제공합니다. 기본 Linux 기능을 Windows에 가져옴으로써 Bash on Windows는 Linux 기능에 액세스하기 위해 Ubuntu로 이중 부팅을 실행할 필요가 없습니다. Mac OS X로 이동하거나 가상 머신을 실행하거나 Cygwin을 사용하여 해결 방법을 만들 필요가 없습니다. 시나리오 및 플랫폼에 대한 코드를 작성하고 빌드하는 데 필요한 도구 세트를 제공합니다. Bash에서 Windows 파일 시스템에 액세스하면 Windows 또는 Linux CLI를 사용하여 동일한 파일에서 작업 할 수 있습니다.

Microsoft는 Bash를 Windows에 어떻게 이식 했습니까?

2016 년 4 월 빌드 컨퍼런스에서 Microsoft는 많은 사람들을 놀라게하여 Linux 용 Windows 하위 시스템 (WSL)을 발표했습니다. Canonical과의 파트너십에서 탄생 한 Bash on Windows는 Windows 10 1 주년 업데이트와 함께 처음 출시되었습니다. 핵심 하위 시스템과 패키지의 두 부분으로 나뉩니다. 핵심 하위 시스템은 이미 Windows 10 Insider Builds의 일부이며 Windows에서 Linux API를 제공하므로 기본적으로 Linux 라이브러리 및 실행 파일을로드 할 수 있습니다. Canonical은 소프트웨어 패키지를 옵션으로 제공합니다. 이 소프트웨어 패키지는 Linux 환경에 필요한 Bash 및 CLI 도구를 제공합니다.

Bash 설치

Windows에서 Bash를 실행하려면 시스템에서 x64 Windows 10 1 주년 업데이트 빌드 14393 이상을 실행해야합니다. winver명령 상자 에 입력하여 빌드를 검색합니다 .

빌드 버전이 14393 미만이면 Bash를 설치할 수 없습니다.

지원되는 빌드에서 Bash를 활성화하려면 먼저 개발자 모드를 켜야합니다. 그렇게하려면 설정으로 이동하여 개발자 용을 클릭하고 개발자 모드 라디오 버튼을 선택합니다. 이 작업이 완료되면 확인하라는 메시지가 표시됩니다.

이 작업이 완료되면 Linux 용 Windows 하위 시스템 기능을 활성화해야합니다. 가장 쉬운 방법은 PowerShell cmdlet을 사용하는 것입니다.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Windows에서 Bash를 열려면 명령 프롬프트를 열고을 입력 한 bash다음 라이센스 계약에 동의하십시오. Bash가 설치되면 시스템에 몇 가지 변경을 수행합니다.

  • Ubuntu 사용자 모드 이미지가 다운로드됩니다.
  • 에 위치한 숨겨진 폴더 %localappdata%\lxss\ 가 생성됩니다.
  • 바로 가기가 바탕 화면에 배치됩니다.

Bash를 실행하려면 이제 명령 프롬프트로 이동하거나 바탕 화면 바로 가기 아이콘을 사용할 수 있습니다.

Bash를 성공적으로 설치하면 시스템은 Unix 사용자 이름과 암호를 생성하라는 메시지를 표시합니다. 이 사용자 이름과 암호는 Bash 용이며 Windows 환경과 어떤 방식으로도 관련이 없습니다.

명령 시작하기

Bash에서는 WSL 및 Ubuntu 이미지를 관리하는 데 사용할 수있는 몇 가지 명령이 있습니다.

  • lxrun: WSL 인스턴스 관리 용
  • lxrun/install: 다운로드 및 설치 절차를 시작하려면
  • lxrun/uninstall: Ubuntu 이미지를 제거하려면
  • lxrun/update: WSL 패키지 인덱스를 업데이트하려면
  • lxrun/setdefaultuser: Ubuntu 사용자에서 기본 Bash를 설정하려면

물론 Windows의 Bash를 사용하면 많은 "전통적인"Bash 명령을 실행할 수 있습니다. 예를 들면 :

  • grep: 패턴과 일치하는 선을 찾으려면
  • sed: 문자열을 대체하려면
  • echo: 화면에 값을 출력하려면
  • var=2: 변수를 만들려면 $var
  • =!=: 작은 텍스트 조각을 비교하려면

탐색 명령

탐색을 위해 Windows DOS 명령 cd을 사용하여 폴더 구조를 탐색 할 수도 있습니다 .

  • cd temp: 작업 디렉토리를 temp 폴더로 변경합니다.
  • cd\: 루트 디렉토리로 이동합니다. Ubuntu에는 Windows와 같은 드라이브 문자가 없으므로 루트 디렉토리는 최상위 디렉토리가됩니다.
  • cd..: 프롬프트를 한 수준 위로 (즉, 상위 디렉터리로) 이동합니다.
  • cd~: 홈 디렉토리로 이동합니다.

그러나 cdPowerShell에서는 Ubuntu의 Bash에서 약간 다릅니다. WSL 환경에서는 Windows 드라이브가 /mnt폴더에 저장되고 드라이브 이름이 하위 폴더로 사용됩니다. cd명령 을 사용할 때 그에 따라 경로를 변경해야합니다.

표시 명령

디렉토리의 경로와 내용을 확인하기위한 몇 가지 예는 다음과 같습니다.

  • pwd: 화면에있는 경로 또는 디렉토리를 인쇄합니다.
  • ls: 디렉토리에있는 파일을 표시합니다.

도움말 명령

각 명령의 기능 및 매개 변수를 이해하려는 경우 man명령을 사용할 수 있습니다.

입력 man 하면 명령의 용도와 관련 매개 변수에 대한 개요가 표시됩니다. 이는 PowerShell help명령 과 유사합니다 .

명령 편집

Bash의 장점 중 하나는 일반 텍스트로 작업한다는 것입니다. 즉, 레지스트리 또는 프로그램 설정을 엉망으로 만들 필요가 없습니다. 부팅 순서를 변경하든 웹 서버 구성을 변경하든 해당 텍스트 파일을 편집하기 만하면됩니다. 편집 작업을 효율적으로 수행하려면 좋은 텍스트 편집기가 필요합니다. Bash는 작업을 쉽게 해주는 강력한 편집기를 제공합니다. Bash에서 사용할 수있는 텍스트 편집기의 몇 가지 좋은 예는 nanovi.

Bash에서 패키지 관리

기본적으로 Linux를 실행하고 있으므로 이제 apt-get. 몇 가지 예 :

  • sudo apt-get update: 가져올 저장소 목록을 새로 고칩니다.
  • sudo apt-get upgrade: 모든 소프트웨어를 최신 버전으로 업그레이드합니다.
  • apt-cache search app_name: 저장소에서 특정 앱을 검색합니다.
  • sudo apt-get install apt-name: 특정 앱 다운로드 및 설치

sudo기본적으로 수퍼 유저 (또는 관리자) 인 다른 사용자로 명령을 실행할 수 있도록 모든 명령 앞에 추가됩니다. Windows의 "관리자 권한으로 실행"기술과 유사합니다.

네트워킹 명령

HTTP를 통해 서버 또는 URL에서 파일을 다운로드하려면 이제 curl명령을 사용할 수 있습니다 . 이 명령은 PowerShell의 Invoke-WebRequestcmdlet 과 유사합니다 .

마찬가지로 다른 원격 Linux 컴퓨터에 연결하여 명령을 실행할 수 있습니다. 이제 Linux에 있기 때문에 마침내 작업 할 진정한 SSH 클라이언트가 생겼습니다. Cygwin 또는 Windows 용 OpenSSH 구현의 현재 베타를 사용하는 대신 이제 다음 ssh명령을 통해 기본적으로 SSH를 실행할 수 있습니다 .

ssh 사용자 이름 @ abc.com

OpenSSH에 대한 주제를 다루는 동안 이제 기본 제공 scp명령을 사용하여 SCP를 통해 안전하게 파일을 복사 할 수있는 기본 기능 도 있습니다.

scp localfile [email protected] : remotedirectory / remotefile

Windows에서 Bash를 사용하면 다음과 같은 다양한 기능을 손쉽게 사용할 수 있습니다.

  • Windows에서 직접 Git, Python 및 Ruby와 같은 도구
  • emacs 및 vi와 같은 명령 줄 편집기
  • Bash 환경에서 Windows 파일 시스템에 액세스
  • Linux 사용자 지원
  • Symlink 지원
  • 스토리지 마운팅 /mnt

Windows에서 Bash의 일반적인 사용 사례는 무엇입니까?

현재 많은 개발자가 Windows 및 Linux 도구를 사용하므로 CLI 기능을 사용하려면 이중 부팅을 수행하거나 가상 머신 내에서 Linux를 실행해야합니다. Windows 내에서 이러한 도구를 실행할 수 있으면 Windows가 기본 데스크톱이됩니다. 이 경우 Linux 앱 및 서비스를 Windows 시스템으로 이식 할 필요가 없습니다. 일부 사람들은 Windows 내에서 Linux GUI 앱을 실행할 수 있었지만 많은 사람들은 Azure에서 전용 Linux 컴퓨터를 구입하지 않고도 간단한 작업을 수행하거나 간단한 목적으로 Mac 장치로 이동할 수있는 편리한 Linux CLI를 얻습니다. Bash에서는 스크립팅이 쉽기 때문에 Apache에서 웹 사이트 백업과 같은 개발 작업을 자동화 할 수 있습니다.

예를 들어 많은 개발자가 버전 제어 작업에 GitHub를 사용합니다. Windows에서 GitHub에 액세스하려면 Windows 용 GitHub를 설치 한 다음 커밋 및 푸시 명령을 사용하여 변경 사항을 커밋해야합니다. 또는 지루한 프로세스 인 Git 유틸리티를 다운로드해야합니다. Windows에서 Bash를 사용하면 작업이 간단 해집니다.

apt-get install git

자식 커밋

git push

또한 Bash에서는 GZIPed tarball (tar.gz 파일)과 같은 기존 Linux 파일 유형으로 작업하기 위해 타사 도구가 필요하지 않습니다.

Windows에서 Bash를 사용할 때의 단점은 무엇입니까?

Windows의 Bash는 아직 베타 버전이며 일부 거친 가장자리가 포함되어 있습니다. Microsoft는 Windows의 Bash가 현재 모든 스크립트를 완벽하게 실행하지 못할 수 있다고 말합니다. 그러나 Microsoft는 성능과 피드백을 예리하게 모니터링하고 있으며이 솔루션을 적극적으로 변경하고 있습니다.

둘째, Bash on Windows는 개발 커뮤니티를 위해 도입되었습니다. Windows 환경 관리를 위해 설계되지 않았습니다. WSL에서 서버 데몬을 실행하는 것과 같은 작업을 수행 할 수는 있지만 전체 Linux 가상 머신의 전체 기능을 제공하지는 않습니다. Ubuntu의 프로덕션 워크로드에서 서버 프로세스를 실행하려는 경우 전체 Linux 운영 체제를 실행하기위한 다른 대안을 찾아야합니다.

마지막으로 Bash on Windows는 Linux 기능을 Windows에 제공합니다. 그러나 Linux 도구는 Windows 도구 및 응용 프로그램과 상호 작용할 수 없습니다. 이는 고유 한 아키텍처 차이로 인해 크로스 플랫폼 기능이 없음을 의미합니다.

Windows의 Bash는 아직 초기 단계에 있습니다. 이 솔루션에는 몇 가지 제한 사항이 있지만 Microsoft는 이러한 차이점을 없애고 모든 유형의 개발 프로젝트에서 Windows를 최고의 플랫폼으로 만들기 위해 더 많은 기능을 추가하기 위해 열심히 노력하고 있습니다. Microsoft의이 프로젝트를 주시하십시오. 오픈 소스 세계에 대한 마이크로 소프트의 새로운 입장으로 시간이 지남에 따라 Bash는 Windows에서 일류 시민이 될 것입니다.

관련 기사

  • Windows, Windows Server 및 Exchange 용 PowerShell에 대한 필수 가이드
  • Windows 관리자를위한 10 가지 필수 PowerShell 보안 스크립트
  • PowerShell 공급자 및 모듈에 대한 모든 것
  • Go Pro : PowerShell에 대한 고급 사용자 가이드