๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ ํฐ๋ฏธ๋ ํจ์ 25์
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/๋ด๊ฐ-๋ณด๋ ค๊ณ -์ ๋ฆฌํ-ํฐ๋ฏธ๋-ํจ์-25์
ํญ์ ์๋์ฐ์ ๋ฆฌ๋ ์ค๋ฅผ ์ค๊ฐ๋ฉฐ ์์ ์ ํ๋ค ๋ณด๋, ๋ช ๋ น์ด๊ฐ ์์ฃผ ํท๊ฐ๋ ค์ ์ค์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค.
์์ค
rm -rf
๋น ์ง ๐ข PowerShell์์๋ ์ง์ง ์ ์ ์๋๋๊ณ ๋งโฆ
๊ทธ๋์ ์ด๋ฒ ๊ธฐํ์ ๋ฆฌ๋ ์ค์ Windows PowerShell ๋๋ค ๋น์ทํ๊ฒ/๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ด๋ค์ ํ๋ฐ ๋ชจ์ ํฌ์คํ ํ์์ผ๋ก ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
์ ์ฒ๋ผ ๋ค์ํ ์ด์์ฒด์ ๋ฅผ ๋๋๋ค๋ฉฐ ์์ ํ์๋ ๋ถ๋ค๊ป๋ ์ ์ฉํ ์ ๋ช ๋ น์ด ์ฐธ๊ณ ์๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค ๐
-
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
-
mkdir
- ๋๋ ํ ๋ฆฌ ์์ฑ
-p
: ์ค์ฒฉ ๋๋ ํ ๋ฆฌ ์์ฑ
linux
1
2
$ mkdir test
$ mkdir -p /home/test/test1/test2
windows
1
2
> mkdir test
> mkdir C:\Users\user\test1\test2
-
cd
- ๋๋ ํ ๋ฆฌ ์ด๋
.
: ํ์ฌ ๊ฒฝ๋ก,..
: ์์ ํด๋,-
: ์ด์ ๊ฒฝ๋ก ๋ณต๊ท
linux
1
2
3
$ cd test
$ cd ..
$ cd -
windows
1
2
3
> cd test
> cd ..
> cd -
-
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
-
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
-
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
-
pwd
- ํ์ฌ ๋๋ ํ ๋ฆฌ ์์น ์ถ๋ ฅ
linux
1
$ pwd
windows
1
> pwd
-
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
-
touch
- ๋น ํ์ผ ์์ฑ
linux
1
$ touch file.txt
windows
1
> New-Item file.txt -ItemType File
-
which
windows
- ๋ช ๋ น์ด์ ์คํ ๊ฒฝ๋ก ์ถ๋ ฅ
linux
1
$ which mv
windows
1
2
> Get-Command notepad | Select-Object -ExpandProperty Definition
> gcm notepad
-
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๋ ๋งค์ฐ ๋น ๋ฅธ ๊ฒ์์ ์ง์ํฉ๋๋ค.
-
grep
- ๋ฌธ์์ด ํฌํจ ํํฐ๋ง
linux
1
2
$ ls | grep log
$ find . -name "*.txt" | grep sample
windows
1
> ls | Select-String log
-
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
-
diff
- ๋ ํ์ผ ๋น๊ต
linux
1
$ diff file1.txt file2.txt
windows
1
> Compare-Object (Get-Content file1.txt) (Get-Content file2.txt)
-
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
-
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
) = WindowsStop-Process
- ๋ฆฌ๋
์ค
jobs
= WindowsGet-Job
โป ํ๋ก์ธ์ค ์ด๋ฆ์ผ๋ก ์ฃฝ์ผ ๋๋ -Name, PID๋ก ์ฃฝ์ผ ๋๋ -Id๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
ping
- ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ํ ํ์ธ
linux
1
$ ping google.com -a
windows
1
> ping google.com -a
โป -a ์ต์ ์ Windows์์๋ โIP๋ฅผ ํธ์คํธ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ ํ์โ ์๋ฏธ์ ๋๋ค.
-
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 ๋ณ์นญ์ผ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
-
top
/htop
- ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง (
htop
์ ์ค์น ํ์)
linux
1
2
$ top
$ htop
windows
1
> Get-Process
*โป Get-Process | Out-GridView๋ฅผ ์ถ๊ฐํ๋ฉด GUI ๊ธฐ๋ฐ์ผ๋ก๋ ๋ณผ ์ ์์ต๋๋ค.* |
-
๊ธฐํ ์ ์ฉํ ๋จ์ถํค / ๋ช ๋ น์ด
clear
: ํ๋ฉด ์ ๋ฆฌ (๋จ์ถํคCtrl + L
)Ctrl + C
: ํ์ฌ ์์ ๊ฐ์ ์ข ๋ฃCtrl + Z
: ์์ ์ผ์ ์ค์งfg
: ์ค์ง๋ ์์ ์ฌ๊ฐTab
: ์๋์์ฑโ
: ์ด์ ๋ช ๋ น์ด ๋ฐ๋ณต
โป Windows Terminal์์๋ Ctrl+L, Ctrl+C, Ctrl+Z ์ ์๋ํฉ๋๋ค.
-
alias
- ์์ฃผ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ๋จํ ์ด๋ฆ์ผ๋ก ์ค์ฌ์ ๋ฑ๋กํ ์ ์์ต๋๋ค.
linux
1
2
$ alias ll='ls -alF'
$ alias gs='git status'
windows
1
> Set-Alias ll Get-ChildItem
โป PowerShell์ Alias ๋ฑ๋ก ์ ์ธ์ ๋ง๋ค ์ด๊ธฐํ๋๊ธฐ ๋๋ฌธ์, ์๊ตฌ ์ ์ฅ์ $PROFILE ์์ ์ด ํ์ํฉ๋๋ค.
-
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) ๋ฅผ ๋ง๋ค์ด์ผ ํด์ ์ฝ๊ฐ ๋ฌด๊ฒ์ต๋๋ค.
-
tee
- ๋ช ๋ น์ด ์ถ๋ ฅ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ฉด์ ๋์์ ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
linux
1
$ echo "log message" | tee log.txt
windows
1
> "log message" | Tee-Object -FilePath log.txt
-
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
-
history
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ช ๋ น์ด๋ค์ ๊ธฐ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
linux
1
2
3
4
$ history
$ history | grep ssh
$ !45
$ !git
windows
1
> Get-History
์ด์์ผ๋ก ์์ฃผ ์ฐ๋ ํฐ๋ฏธ๋ ํจ์ 25์ ์ ๋ฆฌ๋ฅผ ๋ง์นฉ๋๋ค!!
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๐ป