cmd commands

cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@REM cd
cd
cd..
cd,

@REM 줄바꿔서 계속 입력
echo 1 ^
2 ^
3

@REM 폴더 생성
mkdir a/b/c

@REM 폴더 삭제
rmdir /s /q folder1_name folder2_name

@REM 리네임
rename curName newName

@REM 프로세스 종료
taskkill /IM "helloWorld.exe" /F

@REM 새 파일 생성
copy con new_file.txt

@REM 파일 이동
@REM 상위 디렉터리로 파일 이동
move folder1_name ..

@REM 상위 디렉터리에 있는 폴더1을 현재 디렉터리로 이동
move ../folder1_name .

@REM 배치 파일 위치로 cd
pushd "%~dp0"

@REM 심볼릭 링크 생성 삭제
@REM mklink /d [원본] [링크]
mklink /d [링크위치] [링크위치를 기준으로 상대위치]
mklink /d [절대위치] [절대위치]
rmdir [링크]

참고

cmd pwd

cmd terminal
1
cd ,
sh terminal
1
pwd
  • 현재 워킹 디렉터리 확인하기

wsl interop

  • rm -rf같은 리눅스 명령어를 윈도우에서 작성하고 싶다
  • 명령어를 똑같이 쓸 수 있는 방법이 있다
  • 파워셸 코어가 필요하다

전제조건

  • WSL 활성화

설치

terminal
1
Install-Module WslInterop
  • 파워셸 코어를 실행하고, Install-Module WslInterop으로 설치한다

사용하기

terminal
1
Import-WslCommand

새 터미널을 킬 때마다 다시 설정해줘야 한다?

  • Import-WslCommand 명령으로 wsl로 실행할 명령을 지정할 수 있다
  • 그런데 새로운 터미널을 켤 때마다 매번 명령을 쳐줄 수 없다
  • 파워셸 프로필을 설정해서 자동으로 임포트 명령이 실행되도록 한다
1
2
3
4
5
6
7
# 프로필 생성
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}

# profile파일 열고 wsl interop 설정
notepad $PROFILE
1
Import-WslCommand "apt", "awk", "emacs", "grep", "head", "less", "ls", "man", "sed", "seq", "ssh", "sudo", "tail", "vim", "rm", "touch"
  • 인터럽트 할 명령어를 위와 같이 나열한다
  • 이제 파워셸에서 나열한 셸 명령어를 사용할 수 있다

참고

파워셸에서 도커 명령어 파이프

linux shell
1
docker stop `docker ps -aq`
  • 모든 컨테이너를 종료하는 명령이다
  • 리눅스에서는 백틱(backtick, `)으로 묶어서 결과를 파이프할 수 있다
  • 윈도우 터미널에서 같은 명령을 사용할 수가 없다… ㅠㅠ

PowerShell

powershell
1
docker ps -aq | ForEach-Object { docker stop $_ }
  • 나는 파워셸 디폴트로 사용하는데, 파워셸에서 이전 명령의 결괏값을 어떻게 다음 명령으로 넘겨줄 수 있는지 알아보았다 (파이프)
powershell
1
2
3
4
echo 1 2 | ForEach-Object { echo "value: $_" }
# output:
# value: 1
# value: 2
  • 단일 값이 아니라 배열 값을 받는 경우 ForEach-Object을 사용해야 하는 것을 알았다

참고

cli에서 줄바꿔서 명령어 계속 입력하기

cmd
1
2
3
echo 1 ^
2 ^
3
powershell
1
2
3
echo 1 `
2 `
3
shell
1
2
3
echo 1 \
2 \
3
  • cmd, powershell, bash 다 달라서 흠이다
  • cli에서 긴 명령어를 작성할 때 가독성을 높여줄 수 있다

powershell로 환경변수 추가하기

1
2
3
4
5
# 사용자 변수로 추가
[Environment]::SetEnvironmentVariable("GH_TOKEN","<YOUR_TOKEN_HERE>","User")

# 시스템 변수로 추가 (관리자 권한 필요)
[Environment]::SetEnvironmentVariable("GH_TOKEN","<YOUR_TOKEN_HERE>","Machine")
  • 파워쉘 명령어 한 줄로 환경변수를 쉽게 추가할 수 있다

참고

cmd 폴더 삭제 rmdir

cmd
1
2
3
4
5
rmdir /s {디렉터리}

rmdir /s folder_name

rmdir /s folder1_name folder2_name

rmdir /s {디렉터리}

  • /s 옵션으로 빈 디렉터리가 아니더라도 삭제할 수 있다
  • 디렉터리를 나열해서 여러개를 한번에 지울 수 있다

auto yes

cmd terminal
1
rmdir /s /q folder_name