[UNIX]_PowerShell

hanseungjune·2022년 6월 2일
0

UNIX

목록 보기
18/18

PowerShell 이란?

PowerShell은 윈도우 전용 커맨드라인 툴입니다.

유닉스에 bash/zsh가 있다면 윈도우에는 PowerShell이 있는 거죠. 시스템 관리, 자동화, 개발 등 다양한 작업을 PowerShell에서 할 수 있습니다. 그리고 기본 유닉스 커맨드도 지원하기 때문에 아주 유용하게 쓰입니다.

PowerShell vs cmd(명령 프롬프트)

윈도우 유저라면 cmd(명령 프롬프트/Command Prompt)를 들어보셨을 수도 있는데요. cmd도 윈도우 전용 커맨드라인 툴입니다.


하지만 PowerShell에 비해 기능이 적고 cmd에서 할 수 있는 모든 건 PowerShell에서도 할 수 있습니다. 간단한 작업을 할 때는 cmd를 써도 되지만, PowerShell이 더 복잡한 것도 아니니까 그냥 PowerShell을 쓰는게 무방합니다.

그냥 PowerShell 쓰자!

PowerShell 도움말 업데이트하기

관리자 권한으로 실행하여 진행한다!

Update-Help

다음과 같은 에러는 무시해도 된다. ( 뉴비는 꼭 한번은 해주길 바란다 )

PowerShell 사용해보기

보통은 일반실행으로 진행한다!


PowerShell과 유닉스 커맨드

  • man
  • pwd
  • cd
  • ls
  • mkdir
  • cat
  • mv
  • rm
  • cp
  • date
  • clear
  • 이외에 다른 커맨드는 여기를 클릭!
  • PowerShell에서는 기본적으로 cmdlet이라고 하는 커맨드들을 사용하는데요. cmdlet은 보통 아래와 같이 생겼습니다.

    Action-Object  

    하고 싶은 동작과 대상 사이에 - 를 넣는 거죠

    실제 유닉스 커맨드와 차이점

    경로

    우선 윈도우에서는 경로를 표시할 때 / 대신 (한국 키보드는 ₩)를 사용하는데요. PowerShell에서 /를 입력해도 되지만 프롬프트에 경로를 표시할 때나 자동완성을 활용할 경우 \가 사용됩니다.

    옵션

    cmdlet 옵션은 한 글자가 아닌 전체 단어입니다 (예: -Recurse). 유닉스 커맨드처럼 한 글자(예: -r)로 줄여 쓸 수 있는 옵션들도 있지만 그럴 수 없는 옵션들도 많고, 일일이 외워야 하기 때문에 PowerShell 옵션을 그대로 사용하는 것을 추천드립니다. 자주 필요한 옵션들은 각 커맨드를 살펴보면서 설명해 드릴게요.

    지금부터 유닉스 환경과 PowerShell 환경에서 실행했을 때 차이가 있는 커맨드들을 정리해 드릴 겁니다.

    man

    man ls

    ls는 Get-ChildItem을 aliasing 하고 있기 때문에 Get-ChildItem에 대한 도움말이 나옵니다. 여기서 커맨드에 사용할 수 있는 옵션들을 확인할 수 있겠죠?

    더 자세한 정보를 보고 싶다면 -Full 옵션을 사용하면 됩니다.

    man -Full ls

    ls

    PowerShell에서 ls를 하면 파일/폴더 이름뿐만이 아닌 다양한 정보가 나옵니다. .으로 시작하는 파일들도 보이고요.

    유닉스의 ls -al 과 비슷하죠?

    touch

    PowerShell에 touch라는 alias는 없습니다. 그래서 파일을 생성할 때는 다른 방법을 사용해야 하는데요. 예를 들어 아래와 같은 방법을 사용할 수 있습니다.

    $null > filename

    filename 이름을 가진 빈 파일이 생성됩니다.

    cat

    PowerShell의 cat은 아규먼트를 하나만 받습니다. 여러 파일을 아규먼트로 주면 오류가 나니까 주의해 주세요.

    cat testfile.txt testfile2.txt # 오류

    mv

    bash/zsh에서 mv를 했을 때 목적지에 똑같은 이름의 파일/폴더가 있으면 그걸 덮어써버립니다. 하지만 PowerShell에서는 파일이 이미 존재한다는 오류가 납니다.

    mv testfile.txt testfile2.txt # 오류

    만약 파일을 덮어쓰고 싶다면 -Force 옵션을 사용하면 됩니다.

    mv -Force testfile.txt testfile2.txt

    cp

    mv와 마찬가지로 PowerShell에서는 파일/폴더를 덮어쓰지 않고 오류가 나는데요. -Force 옵션을 사용하면 파일/폴더를 덮어쓸 수 있습니다.

    그리고 폴더를 복사할 때는 -Recurse 옵션을 사용해야 합니다.

    cp -Recurse foo bar

    foo 폴더를 bar라는 이름으로 복사했습니다.

    참고로 -Recurse 옵션을 안 줘도 오류 없이 실행되는데, 이런 경우 폴더 자체만 복사되고 안의 내용물은 복사되지 않습니다.

    rm

    폴더를 삭제할 때는 -Recurse 옵션을 사용해야 합니다.

    사실 -Recurse 안 줘도 되는데, 그러면 안에 있는 파일을 지울 것인지 물어봅니다.

    IDE(통합 개발 환경)와 PowerShell

    개발을 하다 보면 커맨드라인이 필요한 경우가 많은데요. 따로 터미널을 열지 않고 작업할 수 있도록 대부분의 IDE에서는 IDE 내부에서 터미널을 열 수 있습니다. Visual Studio Code(VScode)나 PyCharm 같은 경우 PowerShell을 기본 터미널로 사용하기 때문에(윈도우의 경우) PowerShell에 익숙하면 좋겠죠?

    profile
    필요하다면 공부하는 개발자, 한승준

    0개의 댓글