it-source

Windows의 Cygwin 쉘을 PowerShell에서 교체할 준비가 되었습니까?

criticalcode 2023. 4. 11. 22:07
반응형

Windows의 Cygwin 쉘을 PowerShell에서 교체할 준비가 되었습니까?

PowerShell을 배워야 할지 Cygwin/Perl 스크립트/Unix 쉘 스크립트 등을 계속 배워야 할지 고민 중입니다.

PowerShell의 장점은 Cygwin이 없는 팀원들이 스크립트를 더 쉽게 사용할 수 있다는 것입니다. 하지만 실제로 일반 목적 스크립트를 그렇게 많이 작성할 수 있을지, 아니면 사람들이 스크립트를 사용할지조차 모르겠습니다.

Unix 스크립팅은 매우 강력합니다. PowerShell은 전환이 필요할 정도로 강력한 기능을 갖추고 있습니까?

PowerShell에서 찾고 있는 특정 항목(또는 동등한 항목)을 다음에 제시하겠습니다.

  • 그리프
  • 종류
  • 유니크
  • Perl(PowerShell은 Perl의 기능에 어느 정도 근접합니까?)
  • AWK
  • sed의
  • file(파일 정보를 제공하는 명령어)
  • 기타.

도구는 도구일 뿐입니다.
도움이 되거나 안 되거나.
도움이 필요하거나 말거나

UNIX와 이러한 툴이 Windows에서 필요한 작업을 수행할 수 있다는 것을 알고 있다면 당신은 만족할 것이고 PowerShell을 배울 필요가 없습니다(탐색하고 싶지 않은 경우).

저의 원래 의도는 Windows에 Unix 툴 세트를 포함시켜 그것을 완성하는 것이었습니다(팀의 많은 사람들은 Unix의 풍부한 배경과 그 커뮤니티에 대한 존경심을 가지고 있습니다).

내가 발견한 것은 이것이 별로 도움이 되지 않는다는 것이다.그 이유는 AWK/grep/sed가 COM, WMI, ADSI, 레지스트리, 증명서 스토어 등에 대해서 동작하지 않기 때문입니다.

즉, UNIX는 텍스트 파일을 중심으로 자체 조정되는 전체 생태계입니다.따라서 텍스트 처리 도구는 효과적인 관리 도구입니다.Windows는 API와 오브젝트를 중심으로 자체 조정되는 완전히 다른 생태계입니다.그래서 PowerShell을 발명했습니다.

텍스트 처리로 Windows에서 원하는 것을 얻을 수 없는 경우가 많습니다.이 시점에서 PowerShell을 선택해야 합니다.주의: 이 거래는 모든 것이 아니면 전혀 없습니다.PowerShell에서는 Unix 툴을 호출할 수 있습니다(또한 툴의 텍스트 프로세스 또는 PowerShell의 텍스트 처리 사용).또한 Unix 툴에서 PowerShell에 전화를 걸어 텍스트를 얻을 수도 있습니다.

다시 말씀드리지만, 여기에는 종교가 없습니다.당신의 성공에 필요한 도구를 제공하는 것에 초점을 맞추고 있습니다.그것이 우리가 피드백에 매우 열정적인 이유입니다.작업 중 어디에 문제가 있는지, 필요한 도구가 없는지를 알려주시면 목록에 올려 드리겠습니다.

솔직히 말해서, 우리는 30년의 구렁텅이에서 벗어나고 있어, 시간이 좀 걸릴 거야.다만, Windows Server 2008 / R2의 베타판이나 당사의 서버 제품의 베타판, 혹은 그 양쪽 모두를 선택했을 경우, 그 구멍이 얼마나 빨리 메워지고 있는가에 대해서는 놀라실 것입니다.

사용법에 관해서는 지금까지 350만 건 이상의 다운로드가 있었습니다.옵션 컴포넌트로 포함되어 다운로드가 필요 없기 때문에 Windows Server 2008에서 사용하는 사용자는 포함되지 않습니다.

V2는 모든 버전의 Windows에서 제공됩니다.Server Core가 옵션 컴포넌트인 경우를 제외한 모든 에디션에서 기본값이 됩니다.Windows 7/Windows Server 2008 R2가 출하된 직후, Windows XP 이후의 모든 플랫폼에서 V2를 사용할 수 있게 됩니다.즉, 학습에 대한 투자는 매우 많은 기계/환경에 적용됩니다.

마지막 멘트.PowerShell을 배우기 시작하면 매우 만족할 것입니다.디자인의 대부분은 Unix의 배경으로부터 큰 영향을 받기 때문에, 우리는 꽤 다르지만, 당신은 그것을 매우 빠르게 이해할 것입니다(유닉스가 아니라고 욕하는 것을 잊은 후).

우리는 사람들이 학습에 대한 예산이 매우 제한적이라는 것을 알고 있습니다. 그래서 우리는 일관성에 대해 매우 열심히 노력하고 있습니다.당신은 무언가를 배우게 될 것이고, 그리고 그것을 계속해서 사용하게 될 것입니다.

실험!즐겨라! 교전하라!

그리프

Select-String 및 cmdlet »-match이치노을 직접 할 수도 .NET 정규식

종류

Sort-Object보다 더 강력합니다 (*sort) 허용 이데올로기 때문에서는 PowerShell의도움이 됩니다( PowerShell은 PowerShell을 사용합니다).DateTime은 성성 as as as as as as as property로 됩니다.DateTime정렬 가능한 형식으로 포맷할 필요가 없습니다.

유니크

Select-Object -Unique

Perl(PowerShell은 Perl 기능에 어느 정도 근접합니까?)

Perl의 폭넓은 도메인 고유의 지원 라이브러리의 관점에서 보면, (아직은) 턱없이 부족합니다.

일반 프로그래밍의 경우 PowerShell이 더욱 일관성과 일관성이 뛰어나고 확장이 용이합니다.의 Perl과 합니다...환입니니다다

AWK

AWK(나중에 Perl을 사용한 지 18년 이상)를 사용한 지 오래되었기 때문에 코멘트는 할 수 없습니다.

sed의

[위 참조]

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

은 파일 개체로 할 수 많지 PowerShell의 모든 수 ).dirFileInfo ★★★★★★★★★★★★★★★★★」FolderInfo하는 경우)는 모델입니다.

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


Windows 에서는 PowerShell이 확실히 진일보합니다.마이크로소프트는 미래의 비홈 제품에 대한 요구 사항의 일부로 만들었다.따라서 Exchange에서는 풍부한 지원이 제공되며 SQL Server에서는 지원이 제공됩니다.이것은 확장될 뿐입니다.

최근의 예로는 TFS PowerToys가 있습니다.많은 TFS 클라이언트 조작은 매번 tf.exe를 기동할 필요 없이 실행되며(새로운 TFS 서버 접속 등이 필요함), 그 후 데이터를 처리하는 것이 특히 용이합니다.또한 TF.exe의 Team Explorer에서 공개되는 것보다 더 상세하게 TFS 클라이언트 API 전체에 광범위하게 액세스할 수 있습니다.

1997년부터 2010년까지 Windows 엔터프라이즈 개발에 주력했던 사람으로서 지금까지의 모든 타당한 이유로 PowerShell이 확실한 답이 될 것입니다(예를 들어 Microsoft의 엔터프라이즈 전략의 일부이며 Windows/COM/과 잘 통합됩니다).파일 대신 객체를 사용하면 보다 풍부한 코딩 모델을 구현할 수 있습니다.그 때문에 저는 지난 2년여 동안 PowerShell을 사용하고 홍보해 왔습니다.그것은 제가 '빌의 말'을 따르고 있다는 명확한 믿음을 가지고 있었습니다.

그러나 실용주의자인 저는 PowerShell이 더 이상 좋은 답이 될 수 없다고 생각합니다.이 툴은 뛰어난 Windows 툴로 Window 명령줄이라는 과거의 구멍을 메우기 위해 매우 필요한 단계를 제공하지만, Microsoft가 개인 사용자 컴퓨팅을 장악하는 것을 지켜보는 가운데 Microsoft는 OS를 미래의 기업에 중요한 것으로 유지하기 위해 더욱 더 많은 노력을 기울이고 있는 것으로 보입니다.

실제로 이질적인 환경에서 작업하는 경우가 많아지고 있기 때문에 Bash 스크립트는 Linux, Solaris 및 Mac OS X에서만 작동하는 것이 아니라 Cygwin의 도움으로 Windows에서도 작동하기 때문에 현재 훨씬 더 유용합니다.

따라서 OS의 미래는 독점적인 것이 아니라 범용적인 것이라고 믿는다면 가능한 경우 독점적인 툴에서 벗어나는 민첩한 개발 툴 전략을 선택하는 것이 타당할 것으로 보입니다.하지만 모든 것이 Redmond에 의해 미래가 좌우된다고 생각되면 PowerShell을 선택하십시오.

스크립트 자동화에 PowerShell을 조금 사용했습니다.환경이 Unix 쉘보다 훨씬 더 잘 고려된 것 같지만 실제로는 텍스트 스트림 대신 객체를 사용하는 것이 훨씬 더 투박하고 지난 30년 동안 개발된 많은 Unix 설비가 여전히 누락되어 있습니다.

Cygwin은 여전히 Windows 호스트용으로 최적의 스크립트 환경입니다.그것은 확실히 일을 완수하는 면에서 다른 대안들을 능가한다.

여기에는 훌륭한 답변들이 많이 있습니다. 제 의견은 이렇습니다.PowerShell은 준비되었습니다.예:

grep = "Select-String - Pattern"

sort = "Sort-Object"

uniq = "Get-Unique"

파일 = "Get-Item"

cat = "콘텐츠 가져오기"

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

PowerShell을 본격적으로 사용하기 시작한 것은 최근입니다.지난 7년간 거의 독점적인 Windows 기반 환경에서 일해 왔지만, 저는 UNIX 출신이고, 끊임없이 Windows에서의 상호작용 경험을 "유닉스화"하려고 노력하고 있습니다.아무리 적게 말해도 답답하다.

GREP, sed, awk, find 유틸리티는 엄밀히 말하면 셸의 일부가 아니기 때문에 PowerShell을 Bash, tcsh 또는 zsh와 비교하는 것이 적절하지만 항상 Unix 환경의 일부가 됩니다.즉, Select-String과 같은 PowerShell 명령어는 Grep과 매우 유사한 기능을 가지고 있으며 PowerShell의 핵심 모듈로 번들되어 있기 때문에 선이 약간 흐릿해질 수 있습니다.

중요한 것은 문화이며, 각각의 툴셋이 각각의 문화를 구체화할 수 있다는 사실이라고 생각합니다.

  • UNIX는 파일 기반(일반적으로 Unicode가 아닌) 텍스트 기반 문화입니다.컨피규레이션파일은 거의 텍스트파일입니다.반면 Windows는 항상 구성 형식에 대해 훨씬 더 구조화되어 있습니다. 구성은 일반적으로 전용 데이터베이스(Windows 레지스트리 등)에 보관되어 관리용 특수 도구가 필요합니다.
  • UNIX 관리(및 오랜 세월 개발) 인터페이스는 전통적으로 명령줄과 가상 터미널이었습니다.Windows는 GUI로 시작되었으며 관리 기능은 최근에야 GUI 기반에서 벗어나기 시작했습니다.PowerShell에 관한 중요한 리드를 고려하면 명령줄에서의 Unix 경험은 보다 풍부하고 성숙할 것으로 예상할 수 있습니다.제 경험도 이에 필적합니다.제 경험상으로는 이 점에 대해서:

    • Unix 의 관리 익스피리언스는, 키 스트로크를 최소한으로 억제해 작업을 용이하게 하는 것을 목적으로 하고 있습니다.이것은, 느린 9600 보의 다이얼 업 접속으로 서버를 관리해야 하는 과거의 상황의 결과일 가능성이 있습니다.PowerShell에는 다소 상세한 Verb-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- ★★★★★★★★★★★★★★★★★」5051.

    • Unix 익스피리언스는 터치 타입의 사용자용으로 최적화되어 있습니다.「집」의 자리를 떠나지 않고, 거의 모든 것을 실시할 수 있습니다.예를 들어 Bash에서는 Emacs 키바인딩(네, Bash도 vi바인딩을 지원)을 사용하여 이력을 사이클링하고 행의 시작과 끝으로 이동하는 동안 각각 및 ...을 사용하여 이력이 종료되지 않습니다.홈 포지션에서 이동하지 않고 PowerShell 콘솔에서 가장 간단한 네비게이션을 시도하면 문제가 발생합니다.

    • Unix의 다기능 페이징과 같은 간단한 기능은 PowerShell에서 바로 사용할 수 있는 것이 아닌 것 같습니다.또, 풍부한 에디터 체험도 없습니다.물론 서드파티 툴은 언제든지 다운로드 할 수 있습니다.그러나, 이러한 툴이 Unix의 거의 모든 플레이버에 있는 것처럼 「거기」만 있으면 좋을 것입니다.
  • 적어도 시스템 API의 관점에서 Windows 문화는 주로 지원 프레임워크인 viz., COM 에 의해 주도됩니다.NET: 둘 다 고도로 구조화되어 있으며 객체 기반입니다.한편 Unix API에 대한 액세스는 전통적으로 파일인터페이스를 통해 이루어집니다./dev ★★★★★★★★★★★★★★★★★」/proc또는 (개체 지향 이외의) C 스타일라이브러리 콜스크립팅 환경이 각각의 OS 패러다임과 일치한다는 것은 놀랄 일이 아닙니다.PowerShell은 기본적으로 구조화되어 있으며(모든 것이 객체), Bash-and-friends 파일 기반입니다.PowerShell 프로그래머가 자유롭게 사용할 수 있는 구조화된 API는 매우 거대합니다(기본적으로 기존 표준 COM 및 표준 COM 세트의 거대성과 일치합니다).NET 인터페이스).

한마디로 PowerShell의 스크립트 기능은 Bash보다 훨씬 강력하지만(특히 의 가용성을 고려할 때)NET BCL)에서는 특히 완전히 키보드 기반의 콘솔 기반의 관점에서 인터랙티브 환경이 크게 약해집니다(많은 Unix 헤드와 마찬가지로).

저는 PowerShell의 경험이 많은 사용자는 아니지만, 그 작은 부분만으로도 큰 감동을 받았습니다.내장된 cmdlet을 함께 연결하여 Unix 프롬프트에서 수행할 수 있는 거의 모든 작업을 수행할 수 있습니다. CSV, HTML 테이블로의 내보내기 및 보다 상세한 시스템 관리 유형의 작업에도 몇 가지 이점이 있습니다.

sed와 같은 것이 꼭 필요한 경우 UnixUtils 또는 GnuWin32가 항상 준비되어 있습니다.이것들은 PowerShell과 매우 쉽게 통합할 수 있습니다.

그러나 오랜 유닉스 사용자로서 명령어 명명 방식에 익숙해지는 데 약간의 어려움이 있었습니다.더 많은 것을 알았다면 분명히 더 많은 이점을 얻을 수 있었을 것입니다.그물.

따라서 기본적으로 Windows 전용으로 문제가 되지 않는다면 배울 가치가 있다고 생각합니다.

쉘 스크립팅을 좋아하신다면 PowerShell이 마음에 드실 겁니다!

Microsoft Command Shell(Ars Technica) 가이드 투어부터 시작합니다.

최근 실험에서 PowerShell 및 에 대해 자세히 알아보았습니다.NET 콜, PowerShell은 Cygwin 및 Unix 쉘을 대체할 수 있습니다.

Perl에 대해서는 잘 모르겠습니다만, PowerShell과 Perl 모두 프로그래밍 언어로서 Turing이 완료되어 있기 때문에, Perl을 대체하는 것에 대해서도 Yes라고 생각하고 있습니다.

*nix의 Cygwin 및 일반 Bash 위에 PowerShell이 가지고 있는 것은 샌드박스화된 DLL 호출을 실행하여 직접 API 호출, WMI 메서드 및 COM 개체를 통해 운영 체제를 조작하는 기능입니다.코드를 통해 Internet Explorer를 실행하고 표시된 문서를 사용하여 원하는 작업을 수행하여 웹 서버의 백엔드를 효과적으로 에뮬레이트하는 것은 어떻습니까?

SQL 서버 및 기타 데이터 공급자에서 데이터를 수집하여 해석하고 CSV, 메일 메시지, 텍스트 및 실제로 존재하는 파일 형식과 존재하지 않는 파일 형식으로 내보내면 어떨까요?(물론 수신한 데이터로 유효한 파일을 작성하는 적절한 기술이 있지만 CSV는 즉시 사용할 수 있습니다).

또한 서명된 cmdlet 및 스크립트, 그룹 정책 및 실행 정책을 통해 추가적인 보안을 사용할 수 있으므로 관리자로서 실행하더라도 시스템에서 악성 코드가 실행되지 않습니다.

구현되는 명령어에 대해서는 Richard의 답변과 PowerShell의 기능을 에뮬레이트할 수 있는 기능이 기재되어 있습니다.

PowerShell이 스위치 오버를 보증할 만큼 강력한지 여부에 대해서는 개인 선호도가 더 높지만, 점점 더 많은 Windows 서비스가 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은 스크립트 언어라고 생각합니다.

그때까지, 비교를 즐기세요.

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


저는 개인적으로 PowerShell이 아직 만족스럽지 못하다고 생각합니다.

  • 디렉토리 경로의 탭 완료는 복합적이지 않으므로 사용자는 이름이 완료될 때마다 경로 구분 기호를 입력해야 합니다.
  • 홈인디케이터에 할 수 있는 홈인디케이터가 것 .~/ 모자라다@environment://somejibberish/%user_home%
  • NTFS는 여전히 엉망이며 앞으로도 그럴 것 같습니다.행운을 빌어요.

  • cmd-esque 인터페이스. 공룡 cmd.exe는 PowerShell에 계속 표시되며, 편집 → 마크는 여전히 정보를 복사할 수 있는 유일한 방법이며, 보이는 터미널 공간의 직사각형 블록 형태로만 복사됩니다.편집터미널에 문자열을 붙여넣을 수 있는 유일한 방법인 것으로 표시합니다.

  • 파란색으로 칠한다고 해서 더 이상 매력적이지는 않아요.마이크로소프트 개발자들이 색채에 대한 취향을 가지고 있는 것은 개의치 않습니다.

  • Windows 는, 항상 화면의 왼쪽 상단 모서리에 열립니다.세로형 태스크바를 사용하는 사용자에게 이것은 매우 귀찮은 일입니다.특히 Windows 태스크바는 복사/붙여넣기 기능에 액세스 할 수 있는 창의 유일한 모서리를 커버합니다.

Windows에 포함되어 있는 툴에 대해서는 별로 말을 할 수 없습니다.자유롭게 라이선스를 받을 수 있는 오픈 소스 CLI 툴이 모두 있고 PowerShell에는 전혀 실망스러운 툴이 없는 것으로 알고 있습니다.

  • »wgetGNU wget 。★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  • POSIX는 PowerShell POSIX Bash와 호환되지 않습니다.특히&&연산자는 처리되지 않으며, 아무 것도 하지 않는 가장 간단한 조건부 명령어가 됩니다.

나도 몰라. 나도 해봤어. 정말 해봤어. 다음에 열었을 때 조금이라도 쓸모가 없기를 바라며 아직도 시도하고 있어.PowerShell에서는 아무것도 할 수 없습니다.또한 GNU 툴을 Windows에 도입하는 실제 프로젝트도 거의 할 수 없습니다.

MySysGit은 몇 가지 GNU 툴과 함께 공룡 cmd.exe 프롬프트를 제공합니다.또한 이 프롬프트는 아직 매우 매력적이지 않지만, 최종적으로는 패스 완료가 동작합니다.Git 명령어는 Git Bash에서 실행됩니다.

Mintty for MySysGit은 mysysgit 환경에 Cygwin 인터페이스를 제공하여 복사 및 붙여넣기(마우스 선택),Ins + 붙여넣기(붙여넣기, 현대화...)를 수행합니다.근데 뭐랄까...git push민티에서 부서졌어요

호통을 칠 생각은 없지만, Cygwin과 같은 툴을 사용해도 Windows의 명령줄 조작성에 큰 문제가 있다고 생각합니다.


추신: PowerShell에서 어떤 작업을 수행할 수 있다고 해서 사용할 수 있는 것은 아닙니다.사용성은 능력보다 깊고, 제품을 소비자로 사용하려고 할 때 중시하는 경향이 있습니다.

PowerShell의 cmdlet은 매우 훌륭하고 안정적으로 작동합니다.Java/C# 개발자이기 때문에 오브젝트 지향성이 매력적이지만 완전한 세트는 아닙니다.오브젝트 지향적이기 때문에 POSIX 툴셋의 텍스트 스트림의 성숙도에 많은 부분이 누락되어 있습니다(awk ★★★★★★★★★★★★★★★★★」sed몇 、 예 、 ) 、 )

OO의 기술을 사랑하고 POSIX 툴의 성숙함을 사랑하는 딜레마에 대해 제가 찾은 최고의 답은 둘 다 사용하는 것입니다!PowerShell의 큰 장점 중 하나는 객체를 표준 스트림에 파이핑하는 작업이 탁월하다는 것입니다.PowerShell은 기본적으로 객체 파이프라인을 사용하여 객체를 전송합니다.이것들은 표준 스트림(standard out, standard error, standard in)이 아닙니다.PowerShell은 객체 파이프라인이 없는 표준 프로세스에 출력을 전달해야 할 경우 먼저 객체를 텍스트 스트림으로 변환합니다.PowerShell은 POSIX 툴을 호스트하기에 최적의 장소입니다.

최고의 POSIX 툴 세트는 GnuWin32 입니다.인스톨에는 5초 이상 걸립니다만, 수고를 들일 가치가 있습니다.또, 제가 알기론, 시스템의 변경은 행해지지 않습니다(레지스트리,c:\windows\*지정한 디렉토리에 파일을 복사하는 것 이외에는 폴더 등).공유 디렉토리에 툴을 배치하면 여러 사용자가 동시에 액세스할 수 있기 때문에 매우 편리합니다.

GnuWin32 설치 절차

적절한 디렉토리(SourceForge 사이트에서 취득)를 가리키는 exe를 다운로드하여 실행합니다(사용합니다).C:\bin이됩니다.GetGnuWin32「」를 .download.bat , , , 「 」install.bat), 에 (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (변수 없음), (파C:\bin\GetGnuWin32\gnuwin32\binWindows 머신에 존재했던 폴더 중 가장 유용한 디렉토리입니다.이 디렉토리를 경로에 추가하면 바로 사용할 수 있습니다.

PowerShell의 성능이 크게 향상되는 것은 본 적이 없습니다.따라서 다른 팀원들이 이미 알고 있지 않는 한 배울 가치가 없을 수도 있습니다.

당신의 곤경에는 당신이 말한 것처럼 Perl이나 Ruby나 Python과 같은 다른 스크립트 언어를 사용하는 것이 더 나을 수 있습니다.

많은 부분이 당신이 무엇을 해야 하는지에 달려있다고 생각해요.개인적으로는 Python을 개인 스크립트에 사용해 왔지만, 막상 글을 쓰기 시작하면 절대 전달할 수 없다는 것을 알고 있기 때문에, 너무 혁명적인 것은 하지 않으려고 하고 있습니다.

둘 다 쓰면 어떨까요?Perl 등의 다른 해석된 스크립트와 마찬가지로 Cygwin에서 PowerShell 스크립트를 호출합니다.

이 작업은 Cygwin에서 powershell.exe를 호출하는 Bash 래퍼에 대해 https://bitbucket.org/jbianchi/powershell을 작성했을 정도로 충분합니다.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 프로그래밍은 그럴 가치가 없다는 것을 알게 되었습니다.

저는 UNIX에서 셸 스크립팅을 몇 년 동안 해왔지만 PowerShell을 사용하여 많은 작업을 수행하는 것은 매우 어렵다는 것을 알았습니다.

많은 함수는 Windows Management Interface를 조회하고 SQL과 유사한 명령을 발행하여 필요한 정보를 얻어야 하는 것 같습니다.

예를 들어 디렉토리 트리에서 특정 서픽스를 가진 모든 파일을 삭제하는 스크립트를 작성하려고 합니다.Unix 에서는, 이것은 심플하게 됩니다.

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

몇 시간 동안 빈둥빈둥 놀다가Scripting.FileSystemObject ★★★★★★★★★★★★★★★★★」WScript.ShellSELECT * FROM Win32_Shortcut File WHERE Drive = ' & drive & " & drive & " " " & " AND Path = " " & search Folder & " 를 발행하여 최종적으로 포기하고 Windows 탐색기의 검색 명령어를 사용하기로 결정했습니다.내가 하고 싶은 일을 할 수 있는 방법이 있을지도 모르지만, 나는 아무것도 눈에 띄지 않았고 MSDN 사이트의 모든 예는 너무 하찮아서 쓸모없었다.

편집 헤, 물론 이 글을 쓰자마자 나는 몇 군데를 더 뒤지고 내가 놓쳤던 것을 찾았다:-recurse입니다(remove-item faulty를 사용하는 ).get-help remove-item -detailed

"remove-item - filter '* .xyz' - recurse"를 시도했지만 잘 되지 않아 포기했습니다.

해서 '아까', '아까', '아까', '아까' 이렇게 써야 요.get-childitem -filter '*.xyz' -recurse | remove-item

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

PowerShell은 Unix 쉘의 표준 빌트인보다 훨씬 강력합니다(단, 일반적으로 서브프로그램에 제공되는 기능의 대부분을 포함하고 있기 때문입니다).또, 임의의 에 애플릿을 쓸 수 있는 것을 고려해 주세요.IronPython, IronRuby, PerlNet 등의 NET 언어또는 Cygwin 명령어를 PowerShell에서 호출하기만 하면 추가 기능은 모두 무시되고 Bash, KornShell 등과 동일하게 동작합니다.

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

반응형