내가 보려고 정리한 터미널 함수 25선

Posted by Euisuk's Dev Log on April 24, 2025

내가 보려고 정리한 터미널 함수 25선

항상 윈도우와 리눅스를 오가며 작업을 하다 보니, 명령어가 자주 헷갈려서 실수하는 경우가 많았습니다.

아오 rm -rf 빠직 💢 PowerShell에서는 진짜 적응 안되는고만…

그래서 이번 기회에 리눅스Windows PowerShell 둘다 비슷하게/공통적으로 사용할 수 있는 명령어들을 한데 모아 포스팅 형식으로 정리해보았습니다.

저처럼 다양한 운영체제를 넘나들며 작업하시는 분들께도 유용한 쉘 명령어 참고서가 되기를 바랍니다 😎


  1. ls

  • list의 약자로 현재 폴더의 파일 목록을 출력합니다.
  • -a: 숨김 파일 포함
  • -l: 상세 정보

linux

1
2
3
4
$ ls          # 파일 목록만 출력
$ ls -a       # 숨김 파일 포함 출력
$ ls -l       # 상세 정보 출력
$ ls -al      # 숨김 파일 + 상세 정보 출력

windows

  • Windows PowerShell에서도 ls를 입력하면 작동합니다.
    • 다만, PowerShell은 리눅스 명령어를 흉내내는 것처럼 보이지만,
    • 실제론 Get-ChildItem이라는 명령어의 별칭(Alias) 으로 ls가 매핑되어 있습니다.
1
2
> Get-ChildItem
> ls
  • 문제는, PowerShell에서는 옵션을 붙일 때
    • 리눅스 스타일 -l, -a 식으로 안 됩니다.
    • PowerShell은 매개변수(Parameter) 라는 방식을 사용합니다.
    • 즉, 리눅스처럼 ls -l 하면 되는 게 아니라, 다른 문법이 필요한 것입니다.
1
> ls | Format-List

OR

1
> Get-ChildItem | Format-List

💡 참고로, 위와 같이 함수를 돌리면 너무 TMI가 많이 나옴

  • 추가로 함수를 써야하는데, 아래와 같이 함수를 입력하여, 리눅스 ls -l처럼 “이름, 사이즈, 수정시간” 정보만을 출력할 수 있습니다.
1
2
# 이름, 길이(사이즈), 마지막 수정시간만 보기
> Get-ChildItem | Select-Object Name, Length, LastWriteTime | Format-Table

OR

1
> ls | Select-Object Name, Length, LastWriteTime | Format-Table
  1. mkdir

  • 디렉토리 생성
  • -p: 중첩 디렉토리 생성

linux

1
2
$ mkdir test
$ mkdir -p /home/test/test1/test2

windows

1
2
> mkdir test
> mkdir C:\Users\user\test1\test2
  1. cd

  • 디렉토리 이동
  • .: 현재 경로, ..: 상위 폴더, -: 이전 경로 복귀

linux

1
2
3
$ cd test
$ cd ..
$ cd -

windows

1
2
3
> cd test
> cd ..
> cd -
  1. cp

  • 파일 복사
  • -r: 디렉토리 복사

linux

1
2
$ cp file1.txt file2.txt
$ cp -r test test_backup

windows

  • Copy-Item은 복사할 대상, 대상 경로를 별도 지정하는 구조입니다.
    • 정확한 복사(파일 이름 바꾸기)는 -Destination을 명시해야 합니다.
1
2
> Copy-Item file1.txt -Destination file2.txt
> Copy-Item test -Recurse -Destination test_backup
  1. mv

  • 파일/디렉토리 이동 또는 이름 변경
  • -v: verbose 출력

linux

1
2
$ mv a.txt b.txt
$ mv -v a.txt folder/b.txt

windows

1
2
> Move-Item a.txt b.txt
> Move-Item -Verbose a.txt b.txt
  1. rm

  • 파일/디렉토리 삭제
  • -r: 폴더, -f: 강제

linux

1
2
$ rm file1.txt file2.txt
$ rm -rf folder/

windows

1
2
> Remove-Item file1.txt,file2.txt
> Remove-Item folder -Recurse -Force
  1. pwd

  • 현재 디렉토리 위치 출력

linux

1
$ pwd

windows

1
> pwd
  1. cat

  • 파일 내용 출력 또는 생성

linux

1
2
3
4
5
$ cat file.txt
$ cat > new.txt << EOF
Hello
World
EOF

windows

1
2
> Get-Content file.txt
> "Hello`nWorld" | Out-File new.txt

단, -Encoding 옵션을 주지 않으면 기본 UTF-16 LE 인코딩이 될 수 있습니다.

  • -Encoding utf8옵션 추가를 권장합니다.
1
> "Hello`nWorld" | Out-File new.txt -Encoding utf8
  1. touch

  • 빈 파일 생성

linux

1
$ touch file.txt

windows

1
> New-Item file.txt -ItemType File
  1. which windows

  • 명령어의 실행 경로 출력

linux

1
$ which mv

windows

1
2
> Get-Command notepad | Select-Object -ExpandProperty Definition
> gcm notepad
  1. find

  • 파일/디렉토리 검색
  • -type f: 파일, -type d: 디렉토리

linux

1
2
$ find /home/user/ -type f -name "*.txt"
$ find . -name "*.log" -exec rm {} \;

windows

1
> Get-ChildItem -Recurse -Filter *.txt

※ PowerShell에서 -Filter는 매우 빠른 검색을 지원합니다.

  1. grep

  • 문자열 포함 필터링

linux

1
2
$ ls | grep log
$ find . -name "*.txt" | grep sample

windows

1
> ls | Select-String log
  1. df / du / lsblk

  • 디스크 사용량 확인

linux

1
2
3
$ df -h
$ du -h --total | grep total
$ lsblk

windows

1
> Get-PSDrive
  • PowerShell의 Get-PSDrive는 디스크 볼륨 정보를 가져오긴 하지만,
    • 리눅스 df -h처럼 사용/여유 공간을 명확히 보여주지는 않습니다.

아래 함수는 Windows 10 이상에서 디스크 용량 및 사용량 정보를 더 명확히 표시합니다.

1
> Get-Volume
  1. diff

  • 두 파일 비교

linux

1
$ diff file1.txt file2.txt

windows

1
> Compare-Object (Get-Content file1.txt) (Get-Content file2.txt)
  1. chmod / chown

  • 권한 및 소유자 변경

linux

1
2
3
4
$ chmod 600 file.txt
$ chown user:group file.txt
$ chmod -R 755 folder/
$ chown -R user:group folder/

windows

1
2
# windowss는 icacls 또는 Set-Acl 명령어 사용
> icacls file.txt /grant user:F
  1. jobs / pkill

  • 백그라운드 작업 확인 및 종료

linux

1
2
$ jobs
$ pkill -9 vim

windows

1
2
> Get-Job
> Stop-Process -Name vim

🔵 PowerShell의 Get-Job은 PowerShell에서 실행한 백그라운드 Job만 보여줍니다. Stop-Process는 실제로 프로세스를 죽이는 거라 약간 다른 개념입니다.

  • 리눅스 pkill(kill) = Windows Stop-Process
  • 리눅스 jobs = Windows Get-Job

※ 프로세스 이름으로 죽일 때는 -Name, PID로 죽일 때는 -Id를 사용합니다.

  1. ping

  • 네트워크 연결 상태 확인

linux

1
$ ping google.com -a

windows

1
> ping google.com -a

※ -a 옵션은 Windows에서는 “IP를 호스트 이름으로 바꿔서 표시” 의미입니다.

  1. wget

  • URL을 통한 파일 다운로드

linux

1
$ wget http://example.com/file.zip

windows

1
> Invoke-WebRequest http://example.com/file.zip -OutFile file.zip

※ Invoke-WebRequest는 iwr 별칭으로도 사용 가능합니다.

  1. top / htop

  • 리소스 모니터링 (htop은 설치 필요)

linux

1
2
$ top
$ htop

windows

1
> Get-Process
*※ Get-Process Out-GridView를 추가하면 GUI 기반으로도 볼 수 있습니다.*
  1. 기타 유용한 단축키 / 명령어

  • clear: 화면 정리 (단축키 Ctrl + L)
  • Ctrl + C: 현재 작업 강제 종료
  • Ctrl + Z: 작업 일시 중지
  • fg: 중지된 작업 재개
  • Tab: 자동완성
  • : 이전 명령어 반복

※ Windows Terminal에서도 Ctrl+L, Ctrl+C, Ctrl+Z 잘 작동합니다.

  1. alias

  • 자주 사용하는 명령어를 간단한 이름으로 줄여서 등록할 수 있습니다.

linux

1
2
$ alias ll='ls -alF'
$ alias gs='git status'

windows

1
> Set-Alias ll Get-ChildItem

※ PowerShell은 Alias 등록 시 세션마다 초기화되기 때문에, 영구 저장은 $PROFILE 수정이 필요합니다.

  1. xargs

  • 표준 입력(STDIN)으로 받은 리스트를 명령어의 인자로 전달합니다.
  • 대량의 파일, 문자열을 명령어 인자로 묶어 넘기는 데 특화되어 있습니다

linux

1
$ find . -name "*.log" | xargs rm

find로 찾은 파일 목록을 rm인자로 한꺼번에 넘겨서 빠르게 삭제.

windows

  • PowerShell은 기본적으로 “파이프라인 객체(Object)” 를 사용하기 때문에,

    • 파이프( )로 넘기는 값이 단순 문자열(String) 이 아니라 오브젝트(Object) 입니다.
    • 그래서 xargs처럼 단순 “리스트 묶기”를 자동으로 해주지 않습니다.
  • 그래서 xargs처럼 한 번에 여러 개를 한꺼번에 처리하지 못하지만, 하나씩은 처리할 수 있습니다.

1
> Get-Content files.txt | ForEach-Object { Remove-Item $_ }
  • Get-Content → 파일 목록을 한 줄씩 읽어오고
  • ForEach-Object → 한 줄씩 받아서 Remove-Item 실행

PowerShell 7 이상에서는 ForEach-Object -Parallel 사용 가능

1
Get-Content files.txt | ForEach-Object -Parallel { Remove-Item $_ }
  • PowerShell 7+ 부터 -Parallel을 지원합니다.
  • 병렬로 처리해서 속도를 어느 정도 보완할 수 있습니다.
  • 단, -Parallel은 별도의 쓰레드 워커(Worker) 를 만들어야 해서 약간 무겁습니다.
  1. tee

  • 명령어 출력을 화면에 보여주면서 동시에 파일로 저장합니다.

linux

1
$ echo "log message" | tee log.txt

windows

1
> "log message" | Tee-Object -FilePath log.txt
  1. head / tail

  • 파일의 앞부분이나 뒷부분을 출력하는 명령어입니다.

linux

1
2
3
$ head -n 10 file.txt
$ tail -n 20 file.txt
$ tail -f /var/log/syslog

windows

1
2
> Get-Content file.txt -TotalCount 10
> Get-Content file.txt | Select-Object -Last 20
  1. history

  • 사용자가 입력한 명령어들의 기록을 출력합니다.

linux

1
2
3
4
$ history
$ history | grep ssh
$ !45
$ !git

windows

1
> Get-History

이상으로 자주 쓰는 터미널 함수 25선 정리를 마칩니다!!

읽어주셔서 감사합니다 💻