development

PowerShell이 ​​Windows에서 Cygwin 셸을 교체 할 준비가 되셨습니까?

big-blog 2020. 2. 25. 22:51
반응형

PowerShell이 ​​Windows에서 Cygwin 셸을 교체 할 준비가 되셨습니까? [닫은]


PowerShell을 배울 지 아니면 Cygwin / Perl scripts / Unix shell scripts 등을 고수해야하는지에 대해 토론 하고 있습니다.

PowerShell의 이점은 Cygwin이없는 팀원이 스크립트를보다 쉽게 ​​사용할 수 있다는 것입니다. 그러나 나는 그 많은 범용 스크립트를 실제로 쓰고 있는지, 사람들이 그것을 사용할 것인지 모르겠습니다.

유닉스 스크립팅은 매우 강력합니다. PowerShell이 ​​전환을 보장 할 수있을만큼 가깝습니까?

PowerShell에서 찾고자하는 특정 항목 (또는 이에 상응하는 항목)은 다음과 같습니다.

  • grep
  • 종류
  • 유니크
  • Perl (PowerShell은 Perl의 기능에 얼마나 근접합니까?)
  • AWK
  • sed
  • file (파일 정보를 제공하는 명령)
  • 기타

도구는 도구 일뿐입니다.
그들은 돕거나하지 않습니다.
도움이 필요하거나 필요하지 않습니다.

Unix와 해당 도구가 Windows에서 필요한 작업을 수행한다는 것을 알고 있다면 행복하게 생각할 수 있으며 PowerShell을 배울 필요가 없습니다 (탐색하지 않는 한).

저의 원래 의도는 Windows에 일련의 유닉스 도구를 포함시키고 그 도구를 사용하는 것이 었습니다 (팀의 많은 사람들이 유닉스 배경에 대해 깊은 관심을 가지고 있으며 해당 커뮤니티에 대한 건전한 존중을 받았습니다).

내가 찾은 것은 이것이별로 도움이되지 않았다는 것입니다. 그 이유는 AWK / grep / sed가 COM , WMI , ADSI , 레지스트리, 인증서 저장소 등에 대해 작동하지 않기 때문입니다 .

다시 말해, UNIX는 텍스트 파일을 중심으로 자체 조정 된 전체 에코 시스템입니다. 따라서 텍스트 처리 도구는 효과적으로 관리 도구입니다. Windows는 API와 객체를 중심으로 자체 조정 된 완전히 다른 생태계입니다. 그래서 우리는 PowerShell을 발명했습니다.

필자가 생각하는 것은 텍스트 처리로 Windows에서 원하는 것을 얻지 못하는 경우가 많이 있다는 것입니다. 이 시점에서 PowerShell을 선택해야합니다. 참고-그것은 전부 또는 아무것도 거래가 아닙니다. PowerShell 내에서 Unix 도구를 호출하고 텍스트 프로세스 또는 PowerShell의 텍스트 처리를 사용할 수 있습니다. 또한 유닉스 도구에서 PowerShell을 호출하고 텍스트를 얻을 수 있습니다.

다시 말하지만 여기에는 종교가 없습니다. 우리의 초점은 당신에게 성공에 필요한 도구를 제공하는 것입니다. 그렇기 때문에 피드백에 대한 열정이 있습니다. 우리가 직장에서 쓰러지는 곳이나 필요한 도구가없는 곳을 알려 주면 목록에 올려 놓을 것입니다.

정직하게, 우리는 30 년짜리 구멍에서 파헤쳐 서 시간이 좀 걸릴 것입니다. 즉, Windows Server 2008 / R2의 베타 및 / 또는 서버 제품의 베타를 선택하면 그 구멍이 얼마나 빨리 채워지는지 충격을받을 것입니다.

사용량과 관련하여 현재까지 350 만 건 이상의 다운로드가있었습니다. 선택적 구성 요소로 포함되어 있으며 다운로드가 필요하지 않기 때문에 Windows Server 2008에서 사용하는 사람은 포함되지 않습니다.

V2는 모든 버전의 Windows에 제공됩니다. 선택 구성 요소 인 서버 코어를 제외한 모든 버전의 경우 기본적으로 사용됩니다. Windows 7 / Windows Server 2008 R2가 출시 된 직후, 모든 플랫폼, Windows XP 이상에서 V2를 사용할 수있게됩니다. 다시 말해, 학습에 대한 투자는 매우 많은 기계 / 환경에 적용 할 수 있습니다.

마지막 의견. PowerShell을 배우기 시작하면 행복 할 것입니다. 대부분의 디자인은 유닉스 배경에 크게 영향을 받기 때문에 우리는 상당히 다르지만 매우 유념합니다 (유닉스가 아니라는 점을 극복 한 후 :-)).

우리는 사람들이 학습을위한 예산이 매우 제한적이라는 것을 알고 있습니다. 이것이 일관성에 대해 매우 어려운 이유입니다. 무언가를 배우고 나면 계속 반복해서 사용할 것입니다.

실험! 즐겨! 끌다!


grep

Select-Stringcmdlet 및 -match연산자는 정규식을 사용합니다. 또한 고급 기능에 대한 .NET 정규식 지원을 직접 사용할 수 있습니다.

종류

Sort-Object더 강력합니다 (* nix 's를 기억하는 것보다 sort). 임의의 표현식에서 다단계 정렬 허용 PowerShell의 기본 유형 유지 관리가 도움이됩니다. 예를 들어 DateTime속성은 DateTime정렬 가능한 형식으로 형식을 지정할 필요없이으로 정렬됩니다.

유니크

Select-Object -Unique

Perl (PowerShell은 Perl 기능에 얼마나 근접합니까?)

Perl의 광범위한 도메인 특정 지원 라이브러리 측면에서 볼 때, 아직 멀지 않습니다 (아직).

일반적인 프로그래밍의 경우 PowerShell은 확실히 더 응집력 있고 일관되며 확장하기 쉽습니다. 텍스트 녹기의 한 가지 격차는 Perl의 ..연산자 와 같습니다 .

AWK

AWK를 사용한 이후로 오랜 시간이 지났으며 (나중에 Perl을 사용한 이후 18 년 이상이어야 함) 실제로 의견을 말할 수는 없습니다.

sed

[위 참조]

file (파일 정보를 제공하는 명령)

여기서 PowerShell의 강점은 파일 시스템 객체로 할 수있는 일이 그리 많지 않다는 것입니다 (그리고 여기에서 전체 정보를 얻 거나 dir반환 FileInfo하거나 FolderInfo객체를 적절하게 얻습니다 )는 전체 공급자 모델입니다.

레지스트리, 인증서 저장소, SQL Server, Internet Explorer의 RSS 캐시 등을 파일 시스템과 동일한 cmdlet으로 탐색 할 수있는 개체 공간으로 취급 할 수 있습니다.


PowerShell은 Windows에서 앞으로 나아갈 길입니다. Microsoft는 향후 비 가정 제품에 대한 요구 사항의 일부로 만들었습니다. 따라서 Exchange의 풍부한 지원, SQL Server의 지원. 이것은 단지 확장 될 것입니다.

최근의 예는 TFS PowerToys입니다. 많은 TFS 클라이언트 작업은 매번 tf.exe를 시작하지 않고도 수행되며 (새 TFS 서버 연결 등이 필요함) 데이터를 추가로 처리하기가 훨씬 쉽습니다. 뿐만 아니라 TF.exe의 팀 탐색기에 노출 된 것보다 더 상세하게 전체 TFS 클라이언트 API에 대한 광범위한 액세스를 허용합니다.


1997 년부터 2010 년까지 Windows 엔터프라이즈 개발에 중점을 둔 경력을 가진 사람은 이전에 주어진 모든 좋은 이유 (예 : Microsoft의 엔터프라이즈 전략의 일부이며 Windows / COM / .NET과 잘 통합됨)에 대한 PowerShell이 ​​될 것입니다. 파일 대신 객체를 사용하면 "더 풍부한"코딩 모델이 제공됩니다. 이런 이유로 나는 지난 2 년 동안 PowerShell을 사용하고 홍보 해 왔으며, "Bill of Bill"을 굳게 믿고있었습니다.

그러나 실용 주의자로서 나는 더 이상 PowerShell이 ​​그렇게 훌륭한 대답이라고 확신하지 않습니다. 뛰어난 Windows 도구이며 Window 명령 줄인 역사적인 구멍을 채우는 데 필요한 단계를 많이 제공하지만 소비자 컴퓨팅 슬립에 대한 Microsoft의 그립을 보면서 Microsoft가 OS를 계속 유지하기 위해 엄청난 전투를 벌일 가능성이 높아지고 있습니다. 미래의 기업에 중요합니다.

실제로, 내 작업이 이기종 환경에서 점차 증가하고 있다는 사실을 감안할 때 Linux, Solaris 및 Mac OS X에서만 작동 할뿐 아니라 Bash 스크립트에서도 작동하는 것이 훨씬 유용합니다. Cygwin의 도움 —Windows.

따라서 OS의 미래가 독점이 아닌 상품화되었다고 믿는다면, 가능한 경우 독점 도구를 사용하지 않는 민첩한 개발 도구 전략을 선택하는 것이 합리적입니다. 그러나 여러분의 미래가 All-that-is-Redmond에 의해 지배되는 것을 본다면 PowerShell로 가십시오.


스크립트 자동화에 약간의 PowerShell을 사용했습니다. 환경이 유닉스 쉘보다 훨씬 더 많은 것으로 생각되는 것은 매우 좋지만 실제로 텍스트 스트림 대신 객체를 사용하는 것은 훨씬 더 어색하고 지난 30 년 동안 개발 된 많은 유닉스 기능 몇 년이 아직 없습니다.

Cygwin은 여전히 ​​Windows 호스트에서 선택한 스크립팅 환경입니다. 그것은 일을 끝내는 측면에서 대안을 확실히 능가합니다.


여기에 큰 훌륭한 답변이 많이 있으며 여기에 내가 가져갑니다. 다음과 같은 경우 PowerShell이 ​​준비되었습니다. 예 :

grep = " 선택 문자열-패턴 "

sort = "정렬 개체"

uniq = " Get-Unique "

파일 = " Get-Item "

cat = " Get-Content "

Perl / AWK / Sed는 명령은 아니지만 유틸리티를 비교하기는 어렵지만 PowerShell에서 거의 모든 작업을 수행 할 수 있습니다.


나는 최근에 어느 정도의 심각성을 가지고 PowerShell에서 손을 대기 시작했습니다. 지난 7 년 동안 나는 거의 독점적으로 Windows 기반 환경에서 일했지만 Unix 배경에서 왔으며 Windows에서 내 상호 작용 경험을 "Unix-fy"하려고 끊임없이 노력하고 있습니다. 가장 적게 말하는 것은 실망 스럽다.

grep , sed , awk , find 등의 유틸리티 가 엄밀히 말해서 쉘의 일부가 아니기 때문에 PowerShell을 Bash , tcsh 또는 zsh 와 비교하는 것만 공평합니다 . 그러나 항상 모든 유닉스 환경의 일부가 될 것입니다. 즉 같은 PowerShell 명령 말했다 선택 문자열이 아주 유사한 기능이 grep을을 하고 있다 선이 약간 흐리게 할 수 있도록 ... PowerShell의 핵심 모듈로 번들.

핵심은 문화 라고 생각하고 , 각 도구 세트가 각자의 문화를 구현할 것이라는 사실을 생각합니다 .

  • 유닉스는 파일 기반 (일반적으로 유니 코드가 아닌) 텍스트 기반 문화입니다. 구성 파일은 거의 독점적으로 텍스트 파일입니다. 반면에 Windows는 구성 형식과 관련하여 항상 훨씬 더 구조화되어 있습니다. 구성은 일반적으로 관리를 위해 특수한 도구가 필요한 독점 데이터베이스 (예 : Windows 레지스트리)에 유지됩니다.
  • 유닉스 관리 (및 수년간 개발) 인터페이스는 전통적으로 명령 행과 가상 터미널이었습니다. 윈도우는 GUI로 시작했다 및 관리 기능은 최근 인에서 멀리 이동하기 시작했다 전용 GUI 기반. 우리는 커맨드 라인에서의 유닉스 경험이 PowerShell에서 중요한 리드를 감안할 때 더 풍부하고 성숙한 경험을 기대할 수 있습니다. 이것에 대해, 내 경험에서 :

    • 유닉스 관리 경험은 최소한의 키 조작만으로 쉽게 할 수 있도록 만들어졌습니다. 이것은 아마도 9600 보드 연결이 느린 서버를 통해 서버를 관리해야했던 역사적 상황 때문일 것입니다. 이제 PowerShell에는 Verbose -Noun 표준을 다루는 데 도움이되는 별칭이 있지만 별칭을 아는 것은 약간의 고통입니다 (누군가가 더 잘 알고 있습니다 : alias | where {$_.ResolvedCommandName -eq "<command>"}?).

      역사를 조작 할 수있는 풍부한 방법의 예 :

      iptables명령은 종종 오래 걸리고 Bash에 내장 된 많은 히스토리 조작 기능 중 하나가 아니라면 약간의 차이로 명령을 반복하는 것이 고통 스럽습니다 . 따라서 iptables 규칙을 다음과 같이 삽입하십시오.

      iptables -I camera-1-internet -s 192.168.0.50 -m state --state NEW -j ACCEPT

      다른 카메라 ( " camera-2") 의 두 번째 시간 은 다음과 같은 경우입니다.

      !!:s/-1-/-2-/:s/50/51

      어떤 수단 "이전 명령하지만, 대신 수행 -1--2-50함께 51.

    • 유닉스 경험은 터치 타이프 스트에 최적화되어 있습니다. "집"위치를 벗어나지 않고도 모든 것을 할 수 있습니다. 예를 들어,에 배쉬 의 사용 이맥스 키 바인딩 (예, 배쉬도 지원 VI 사용하여 수행 된 역사를 통해 순환, 바인딩) Ctrl-PCtrl-N사용하여 수행됩니다 라인의 시작과 끝으로 이동하는 동안 Ctrl-ACtrl-E각각 ... 그리고 그것은 확실히 거기서 끝나지 않습니다. 홈 위치에서 움직이지 않고 PowerShell 콘솔에서 가장 간단한 탐색조차 시도해보십시오.

    • 유닉스의 다목적 페이징 ( 약간 적은 ) 과 같은 간단한 것은 PowerShell에서 기본적으로 사용할 수없는 것처럼 보이며 약간 실망스럽고 풍부한 편집기 환경도 존재하지 않습니다. 물론, 이러한 차이를 메울 수있는 타사 도구를 항상 다운로드 할 수 있지만, 유닉스의 거의 모든 풍미와 마찬가지로 이러한 것들이 "있는"것이면 좋을 것입니다.
  • 최소한 시스템 API 측면에서 Windows 문화는 크게 구조화되고 객체 기반 인 지원 프레임 워크 인 viz., COM.NET 에 의해 좌우됩니다 . 반면, Unix API에 대한 액세스는 전통적으로 파일 인터페이스 ( /dev/proc) 또는 (객체 지향이 아닌) C 스타일 라이브러리 호출을 통해 이루어졌습니다. 스크립팅 경험이 각각의 OS 패러다임과 일치한다는 것은 놀라운 일이 아닙니다. PowerShell은 기본적으로 구조화되어 있으며 (모든 것이 개체 임) Bash 및 친구 파일 기반입니다. PowerShell 프로그래머가 사용할 수있는 구조화 된 API는 방대합니다 (기존의 표준 COM 및 .NET 인터페이스 세트의 광대 함과 일치 함 ).

즉, PowerShell에서의 스크립팅 기능은 틀림없이보다 강력하지만 있습니다 배쉬 (당신은 .NET의 가용성을 고려, 특히 BCL 의) 대화 형 경험을 당신이 완전히 키보드 중심에서오고있어 특히 경우, 상당히 약한입니다 콘솔 기반의 관점 (많은 유닉스 헤드와 마찬가지로).


나는 경험이 많은 PowerShell 사용자는 아니지만, 조금 노출되어있는 나에게 큰 영향을 미쳤다. 기본 제공 cmdlet을 함께 연결하여 Unix 프롬프트에서 수행 할 수있는 모든 작업을 수행 할 수 있으며 CSV, HTML 테이블로 내보내기 및보다 심층적 인 시스템 관리 작업 유형과 같은 작업을 수행하는 데 도움이됩니다. .

그리고 실제로 sed 와 같은 것이 필요하다면 UnixUtils 또는 GnuWin32 가 항상 있습니다. PowerShell과 상당히 쉽게 통합 할 수 있습니다.

오랜 유닉스 사용자로서 명령 명명 체계에 익숙해지는 데 약간의 어려움이 있었으며 더 많은 .NET을 알고 있다면 분명히 더 많은 이점을 얻었을 것입니다.

따라서 본질적으로 Windows 전용이 문제가되지 않으면 그것을 배울 가치가 있다고 말합니다.


쉘 스크립팅을 좋아한다면 PowerShell을 좋아할 것입니다!

Microsoft Command Shell (Ars Technica) 둘러보기를 시작하십시오 .


최근의 실험으로 PowerShell 및 .NET 호출이 심화되었으므로 PowerShell Cygwin 및 Unix 셸을 대체 할 수 있다고 말해야합니다 .

나는 Perl에 대해 확신하지 못하지만 PowerShell과 Perl은 프로그래밍 언어로 Turing이 완벽하기 때문에 Perl을 대체하는 것에 대해서도 그렇습니다.

PowerShell이 ​​* nix에서 Cygwin과 일반 Bash보다 높은 점은 샌드 박스 DLL 호출을 수행하고 직접 API 호출, WMI 메서드 및 COM 개체를 통해 운영 체제를 조작하는 기능입니다. 코드를 통해 Internet Explorer를 시작한 다음 표시된 문서로 원하는 것을 수행하여 웹 서버의 백엔드를 효과적으로 모방하는 것은 어떻습니까?

SQL 서버 및 기타 데이터 제공 업체에서 데이터를 수집하고이를 구문 분석하여 CSV, 메일 메시지, 텍스트 및 실제로 기존 및 존재하지 않는 파일 형식으로 내보내는 것은 어떻습니까? (물론, 수신 된 데이터에서 유효한 파일을 만드는 적절한 기술이 있지만 CSV를 쉽게 사용할 수 있습니다).

또한 서명 된 cmdlet 및 스크립트, 그룹 정책 및 실행 정책을 통해 사용 가능한 추가 보안 기능이있어 관리자로 실행하더라도 시스템에서 악성 코드가 실행되지 않도록합니다.

구현 된 명령 정보-Richard의 답변과 해당 기능을 이미 에뮬레이트하는 PowerShell의 기능이 나와 있습니다.

PowerShell이 ​​전환을 보장해야하는지 여부에 대한 정보-점점 더 많은 Windows 서비스가 PowerShell cmdlet을 제공하여 PowerShell cmdlet을 제공하므로 PowerShell을 사용하지 않는 것이 이러한 서비스를 제공하는 데 방해가되지만 이는 개인 취향의 문제입니다. (Hyper-V 서버는 이러한 주요 서비스이며 GUI보다 PowerShell cmdlet으로 더 많은 기능을 제공합니다!)

아마도이 답변은 5 년 늦었지만 여전히 누군가 Windows에서 다양한 작업에 대한 관리 작업이나 일반적인 스크립팅을 수행하는 경우 목적에 맞게 PowerShell을 사용해야합니다.


PowerShell을 Cygwin / Perl / Shell 조합과 비교할 때 PowerShell은 해당 조합의 "쉘"부분 만 나타냅니다.

그러나 cmd.exe 또는 Cygwin에서와 마찬가지로 PowerShell에서 명령을 호출 할 수 있습니다. 지정된 기능을 다시 구현 하지 않으며 Perl과 비교할 수 없습니다.

셸일 뿐이지 만 .NET 유니버스에 편안한 인터페이스를 제공하여 프로그래밍이 쉬워집니다.

또한 PowerShell에는 Windows XP, Windows Server 2003 이상이 필요하며 IT 인프라에 따라 문제가 발생할 수 있습니다.

최신 정보:

나는 어떤 종류의 철학적 논쟁이 일어날 지 전혀 몰랐다.

나는 PowerShell과 Cygwin 및 Perl 및 Bash를 비교라는 질문의 맥락에서 내 대답을 게시했습니다.

PowerShell은 기본 제공 명령, 커맨드 렛, 사용자 기능 및 외부 명령 (.exe, .bat, .cmd)간에 구문상의 차이가 없으므로 셸입니다. 호출에 네임 스페이스 또는 개체를 추가하면 .NET 메서드를 호출하는 것만 다릅니다.

프로그래밍 기능은 PowerShell "언어"에만 국한된 것이 아니라 .NET 프레임 워크에서 파생됩니다.

Bugzilla 또는 MediaWiki 가 웹 서버에서 실행되는 PowerShell 스크립트로 구현 되 자마자 PowerShell이 ​​"스크립트 언어"라고 생각 합니다.)

그때까지 비교를 즐기십시오 .


PowerShell의 cmdlet은 매우 훌륭하고 안정적으로 작동합니다. Java / C # 개발자이기 때문에 객체 지향성이 나에게 호소력이 있지만 완전한 세트는 아닙니다. 그것의 객체 지향하기 때문에,이 많이 놓쳤다있어 텍스트 스트림 는 POSIX 도구 세트의 성숙 ( awksed몇 가지 이름).

POSOO 도구에서 OO 기술을 사랑하고 성숙함을 사랑한다는 딜레마에 대한 최고의 답변은 두 가지를 모두 사용하는 것입니다! PowerShell의 큰 특징 중 하나는 객체를 표준 스트림으로 파이핑하는 작업이 훌륭하다는 것입니다. PowerShell은 기본적으로 개체 파이프 라인을 사용하여 개체를 전송합니다. 이들은 표준 스트림이 아닙니다 (표준 출력, 표준 오류 및 표준 입력). PowerShell에서 출력을 개체 파이프 라인이없는 표준 프로세스로 전달해야하는 경우 먼저 개체를 텍스트 스트림으로 변환합니다. 이 작업은 잘 수행되므로 PowerShell은 POSIX 도구를 호스팅 할 수있는 훌륭한 장소입니다!

최고의 POSIX 툴 세트는 GnuWin32 입니다. 설치하는 데 5 초 이상이 걸리지 만 문제의 가치가 있으며 내가 알 수있는 한 c:\windows\*파일을 지정한 디렉토리에 복사하는 것을 제외하고 시스템 (레지스트리, 폴더 등)을 수정하지 않습니다 . 도구를 공유 디렉토리에 넣으면 많은 사람들이 동시에 도구에 액세스 할 수 있기 때문에 이것은 매우 좋습니다.

GnuWin32 설치 지침서

적절한 디렉토리를 가리키는 exe ( SourceForge 사이트에서 제공 )를 다운로드하여 실행하십시오 (사용하겠습니다 C:\bin). 그것은 GetGnuWin32당신이 실행할 디렉토리 를 생성 한 download.bat다음 install.bat(매개 변수없이) C:\bin\GetGnuWin32\gnuwin32\binWindows 시스템에 존재했던 가장 유용한 폴더 인 디렉토리를 만듭니다. 해당 디렉토리를 경로에 추가하면 준비가 된 것입니다.


TL; DR-저는 Windows 나 PowerShell을 싫어하지 않습니다. Windows 또는 PowerShell 에서는 아무것도 할 수 없습니다 .


개인적으로 여전히 PowerShell이 ​​압도적이라고 생각합니다.

  • 디렉토리 경로의 탭 완성은 복잡하지 않으므로 사용자는 모든 이름 완성 후에 경로 구분 기호를 입력해야합니다.
  • 윈도우도 경로 또는 경로가 무엇인지의 개념이없는 것처럼 여전히 액세스 가능한 사용자 홈 표시와 함께, 기분이 ~/약간 부족@environment://somejibberish/%user_home%
  • NTFS 는 여전히 엉망이며 항상있을 것입니다. 행운을 빕니다.

  • cmd-esque 인터페이스, 공룡 cmd.exe는 PowerShell에서 여전히 표시됩니다. 편집표시는 여전히 정보를 복사하는 유일한 방법이며, 표시되는 터미널 공간의 사각형 블록 형태로만 복사됩니다. 그리고 편집표시는 여전히 문자열을 터미널에 붙여 넣는 유일한 방법입니다.

  • 파란색으로 칠해도 더 이상 매력적이지 않습니다. 그래도 Microsoft 개발자는 색상이 맛이 없습니다.

  • Windows는 항상 화면 왼쪽 상단에서 열립니다. 수직 작업 표시 줄을 사용하는 사람에게는 특히 Windows 작업 표시 줄이 복사 / 붙여 넣기 기능에 액세스 할 수있는 창의 유일한 모서리를 덮을 것이라는 점을 고려할 때 매우 짜증납니다.

Windows에 포함 된 도구를 바탕으로 말할 수는 없습니다. 무료로 라이센스가 부여 된 모든 오픈 소스 CLI 도구가 있으며 PowerShell은 내가 아는 한, 전혀 실망하지 않습니다.

  • PowerShell wget은 GNU wget과 비교할 수없는 논쟁을합니다. 고맙게도 쓸모없는 희망의 희미한 빛.
  • PowerShell POSIX는 Bash와 호환되지 않으며, 특히 &&연산자가 처리되지 않으므로 조건부 명령을 가장 간단하게 수행 할 수 있습니다.

나는 사람을 모른다; 나는 그것을 주사했다, 나는 정말로했다; 나는 여전히 다음에 그것을 열 때 그것이 덜 쓸모 없을 것이라는 희망으로 그것을 주사하려고합니다. 나는 PowerShell에서 아무것도 할 수 없으며 GNU 도구를 Windows로 가져 오기 위해 실제 프로젝트로 거의 할 수 없습니다.

MySysGit은 나에게 몇 가지 GNU 도구가 포함 된 공룡 cmd.exe 프롬프트를 제공하며 여전히 매우 압도적이지만 마침내 경로 완성 작업이 이루어집니다. 그리고 Git 명령은 Git Bash에서 실행됩니다.

MySysGit 용 Mintty는 mysysgit 환경에 Cygwin 인터페이스를 제공하여 복사하여 붙여 넣기 (복사 (마우스), Shift+ Ins붙여 넣기, 현대식 선택)를 만듭니다. 그러나 git pushMintty에서는 이와 같은 것들이 깨졌습니다.

나는 의미하지는 않지만 Cygwin과 같은 도구를 사용하더라도 Windows에서 명령 줄 유용성에 여전히 큰 문제가 있습니다.


추신 : PowerShell에서 무언가를 할 수 있다고해서 사용할 수 없습니다 . 유용성은 능력보다 깊으며 제품을 소비자로 사용할 때 집중하는 경향이 있습니다.


나는 아직 PowerShell이 ​​실제로 이륙 한 것을 보지 못했습니다. 따라서 팀의 다른 사람들이 이미 알지 못한다면 그것을 배우려는 노력이 가치가 없을 수도 있습니다.

곤경에 처한 사람들은 다른 사람들이 뒤처 질 수있는 스크립트 언어, 언급 한 것처럼 Perl 또는 Ruby 나 Python과 같은 다른 언어를 사용하는 것이 좋습니다.

나는 그것이 당신이해야 할 일에 달려 있다고 생각합니다. 개인적으로 필자는 개인적 스크립트에 Python을 사용하고 있지만 절대 전달할 수없는 무언가를 작성하기 시작하면 너무 혁신적인 것을 시도하지 않습니다.


왜 둘 다 사용하지 않습니까? Perl과 같은 다른 해석 스크립트와 마찬가지로 Cygwin에서 PowerShell 스크립트를 호출하십시오.

Cygwin에서 Bash 래퍼가 https://bitbucket.org/jbianchi/powershell작성 하여 powershell.exe를 호출 하기에 충분합니다 . powershell.exe .ps1 스크립트의 첫 번째 줄로 shebang 으로 사용될 수 있습니다 (PowerShell은 "#"을 주석으로 사용하기 때문에). 예를 보려면 https://bitbucket.org/jbianchi/powershell/wiki/Home참조 하십시오.


몇 줄에서 Cygwin과 PowerShell은 다른 도구이지만 Cygwin을 설치 한 경우 PowerShell 세션 내에서 Cygwin 실행 파일을 실행할 수 있습니다. PowerShell에 익숙해 졌으므로 이제는 grep, sort, awk 등을 더 이상 사용하지 않습니다. PowerShell에는 기본 제공되는 대안이 많이 있으며, 그렇지 않은 경우 cmdlet을 찾을 수 있습니다.

내가 사용하는 주요 도구는 ssh.exe이지만 PowerShell 세션 내에 있습니다.

잘 작동합니다.


PowerShell 프로그래밍이 그만한 가치가 없다는 것을 알았습니다.

유닉스 환경에서 몇 년 동안 쉘 스크립팅에 대한 경험이 있지만 PowerShell로 많은 작업을 수행하는 것이 매우 어렵다는 것을 알았습니다.

많은 기능이 Windows 관리 인터페이스를 조사하고 필요한 정보를 얻기 위해 SQL과 같은 명령을 실행해야하는 것처럼 보입니다.

예를 들어, 디렉토리 트리에서 특정 접미사가있는 모든 파일제거 하는 스크립트를 작성하려고했습니다 . 유닉스에서 이것은 간단합니다 ...

find . -name \*.xyz -exec rm {} \;

몇 시간이 주변에 dicking 후 Scripting.FileSystemObjectWScript.Shell와 발행 '& 드라이브 & "AND 경로 ='"& searchFolder & " '", 나는 마침내 포기했다 "Win32_ShortcutFile 드라이브 = SELECT * FROM"'Windows 탐색기의에 대한 정착 검색 명령 그냥 수동으로 수행하십시오. 아마도 내가 원하는 것을 할 수있는 방법이 있을지 모르지만, 명백한 것을 보지 못했고 MSDN 사이트의 모든 예제는 무의미합니다.

편집 Heh, 물론 이것을 작성하자마자 나는 더 많은 것을 찌르고 내가 잃어버린 것을 발견 -recurse했습니다. remove-item 명령에 대한 옵션이 잘못되었습니다 (을 사용하면 공개됩니다 get-help remove-item -detailed).

나는 "remove-item -filter '* .xyz'-recurse"를 시도했지만 작동하지 않았으므로 포기했습니다.

당신이 사용해야한다는 것이 밝혀졌습니다 get-childitem -filter '*.xyz' -recurse | remove-item


PowerShell은 표준 내장 Unix 셸보다 강력하고 강력합니다 (하위 프로그램에 일반적으로 셸된 많은 기능이 포함되어 있기 때문에). 또한 IronPython , IronRuby , PerlNet 등 .NET 언어로 애플릿을 작성 하거나 PowerShell에서 Cygwin 명령을 호출하여 추가 기능을 모두 무시할 수 있으며 Bash, KornShell 과 유사하게 작동합니다 . 또는 무엇이든...


https://github.com/skanga/BashWin의 BashWin을 사용하여 Windows에서 Bash 스크립트를 실행할 수도 있습니다 .

참고 URL : https://stackoverflow.com/questions/573623/is-powershell-ready-to-replace-my-cygwin-shell-on-windows



반응형