Computer >> 컴퓨터 >  >> 체계 >> Windows

Linux의 Powershell - 초기 맛보기

옛날 옛적에 Linux와 유사한 속성에 감탄하는 Powershell에 대한 기사를 썼습니다. 나는 모든 사람의 즐거움을 위해 멋진 애니메이션도 포함했습니다. 몇 년 후 Microsoft는 Powershell을 오픈 소스로 만들고 Linux(!)에서 사용할 수 있도록 하기로 결정했으며 이제 초기 테스트에 사용할 수 있습니다.

나는 여러 가지 이유로 이 아이디어를 좋아합니다. 특히 Windows용 Bash도 있기 때문에 개발 및 시스템 유지 관리에서 더 많은 공통 기반을 허용하므로 노력의 멋진 미러링을 볼 수 있습니다. 장기적으로 이것은 두 운영 체제가 보다 효율적으로 협력하도록 해야 하며 진정한 승자는 관리, 개발자뿐만 아니라 최종 사용자가 될 것입니다. 어떻게 작동하는지 봅시다.

Powershell 설정

내 테스트 시스템은 CentOS 7.2 Xfce 상자이며 지원되는 Linux 인스턴스 중 하나입니다. Microsoft는 현재 Ubuntu, 2세대 LTS 및 CentOS용 설치 프로그램을 제공합니다. 다운로드할 패키지를 찾는 것이 약간 복잡하더라도 설정은 매우 사소합니다. 로컬에서 yum으로 설치하고 명령줄에서 시작합니다.

얌 설치 powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm


지금은?

저는 고급 Powershell 사용자가 아닙니다. 그러나 이것은 셸이므로 구문을 배우고 사용을 시작하기만 하면 됩니다. 이제 BASH 등을 대체할 수 있습니까? 글쎄요, 사실은 아니지만 그게 요점이 아닙니다. 어쨌든 작동 방식을 이해하기 위해 몇 가지 기본 명령을 망치기 시작했습니다.

처음에는 사용 모델이 Linux 사용자에게 다소 직관적이지 않을 수 있습니다. 그러나 요점은 동일하게 유지됩니다. Powershell이 ​​현재 구현되는 방식의 한 가지 단점은 색상 코드입니다. 흰색 바탕에 노란색은 잘 작동하지 않으므로 다른 터미널 테마를 사용하는 것이 좋습니다.

어려움이 있다면 help 또는 get-help - 예제를 사용하여 항상 도움말을 호출하여 올바른 구문과 사용 방법을 실제로 확인할 수 있습니다. 이것은 상당히 도움이 됩니다. 명령은 대소문자를 구분하지 않지만 여기저기서 공식적인 대문자 표기법이 있습니다.

일부 명령(cmdlet)에는 짧은 버전도 있습니다. 예를 들어 Get-ChildItem은 UNIX find와 동등한 기능에 대한 다소 직관적이지 않은 이름이며 gci로 축약될 수도 있습니다. 이것은 처음에는 약간 혼란스러울 수 있습니다. 그러나 그다지 많지는 않습니다.

gci -path /* -include "igor" -recurse

혼동을 줄 수 있는 또 다른 사항은 루트는 물론 후행 슬래시로 표시되지만 대부분의 경로 종속 명령이 올바르게 작동하려면 실제로 슬래시 뒤에 별표를 추가해야 한다는 것입니다. 그림을 이동. 그래도 나는 당신만큼 베이비 스텝입니다.

다 있습니다. 모양과 느낌이 약간 다르고 이름도 확실히 다르지만 제대로 작동하는 것 같습니다. 껍질은 상당히 안정적이었습니다. 한 가지 예외는 매우 긴 재귀 파일 검색 시간을 측정하는 동안 Powershell이 ​​중단되었다는 것입니다. 그냥 멈췄지만 실행을 중단 할 수있었습니다.

오류

Powershell은 매우 장황하고 오류가 발생하기 쉽습니다. 이는 빨간색으로 인해 놀라워 보일 수 있으며 오류는 Windows에서와 같이 매우 긴 텍스트 블록이 됩니다. 그러나 우리는 명령줄에서 파일을 검색하는 동안 권한 거부 오류와 같은 순진한 것에 대해 이야기하고 있습니다.

그런 다음 또 다른 예를 제공하기 위해 measure-command cmdlet(Linux 시간과 동일)에는 인수를 중괄호로 묶어야 합니다. 이것들을 놓치면 상당히 패닉에 빠진 것처럼 보이는 큰 오류가 발생하지만 실제로는 상당히 무해합니다. 다른 많은 cmdlet도 마찬가지입니다.

이것은 오류의 상위 절반에 불과합니다. 더있다.

Fedora 사용자는 어떻습니까?

음, Microsoft가 Ubuntu 및 CentOS용 Powershell을 출시한 것을 알고 있습니다. Fedora가 분류되는지 궁금합니다. 사실, 나는 궁금하지 않다. 나는 시험했다. 사실 이 작은 실험은 내가 기대했던 것만큼 순조롭지 않았습니다. 설치 직후 Powershell을 실행하려고 하면 멋진 오류가 발생합니다.

파워쉘
CoreCLR 초기화 실패, HRESULT:0x80131500

이것은 상당히 일반적인 오류이며 GitHub에서 이 주제에 대해 다소 긴 토론을 볼 수 있습니다. 그러나 맹목적으로 제안을 따르기보다는 libicu 종속성에 문제가 있는지 먼저 확인하고 싶었습니다. 다시 말해, 나는 끊임없이 성장하는 디버깅 도구 중 가장 유용한 도구 중 하나인 strace의 강력한 기능을 사용했습니다.

open("/usr/lib64/libicuuc.so.50", O_RDONLY|O_CLOEXEC) =-1 ENOENT(해당 파일 또는 디렉터리 없음)

실제로 누락된 라이브러리가 몇 개 있습니다. 중요한 것은 이 패키지는 Fedora에서 사용할 수 있으며 Powershell이 ​​기대하는 것보다 최신 버전이라는 것입니다. 나는 심볼릭 링크를 만들어 문제를 해결하려고 시도했고 이것이 약간 도움이 되었습니다.

ln -s /usr/lib64/libicui18n.so.56 /usr/lib64/libicui18n.so.50

결국 오류는 일반적인 시작 문제에서 공유 개체 내부의 기호 문제로 변경되었습니다. 그리고 이것은 임의로 해결할 수 없는 것입니다.

파워쉘
powershell:기호 조회 오류:/opt/microsoft/powershell/6.0.0-alpha.9/System.Globalization.
Native.so:정의되지 않은 기호:uloc_getDefault_50

해결 방법은 이전 버전의 libicu를 다운로드하고 어딘가에 추출한 다음 Powershell이 ​​먼저 libicu 종속성을 찾아서 선택할 수 있는 방식으로 라이브러리 경로를 설정하는 것입니다. 예:

내보내기 LD_LIBRARY_PATH=/:$LD_LIBRARY_PATH

결론

여기 있습니다. 2016년, 기본적으로 Windows에서 BASH를 실행할 수 있고 기본적으로 Linux에서 Powershell을 실행할 수 있습니다. Bob은 당신의 삼촌일 뿐만 아니라 당신도 Bob의 삼촌입니다! 나는 이 발전에 만족한다. 장기적으로 모든 사람에게만 도움이 될 것입니다.

Powershell은 스크립팅 도구, 언어 및 프레임워크를 위한 즉각적인 선택은 아니지만 장점이 있으며 다중 OS 환경을 유지 관리해야 하는 사람들에게는 관리 작업을 크게 단순화할 수 있습니다. 초기 알파 빌드는 테스트하기에 충분히 안정적이지만, 특히 루트 권한이 없는 프로덕션 시스템에서는 과도한 테스트를 수행하지 않는 것이 좋습니다. 안전한 편에 서십시오. 대체로 아주 좋습니다. 어쨌든, 당신은 간다. 키보드를 만지작거릴 시간입니다.

건배.