본문 바로가기
IT·디지털/IT 개발자 팁

DOS 배치 파일을 쉘 스크립트로 변환하기

by 가을이짱짱 2011. 10. 14.
반응형

DOS 배치 파일을 쉘 스크립트로 변환하기

많은 프로그래머들이 DOS가 설치된 PC에서 스크립트를 처음 접했습니다. 제약이 많았던 DOS 배치 파일 언어로도 나름 강력한 스크립트나 간단한 애플리케이션을 만들 수 있었지만, 상당한 꼼수와 우회 기술을 사용해야 했습니다.

가끔 오래된 DOS 배치 파일을 UNIX 쉘 스크립트로 변환해야 하는 경우가 있으며, 이 작업은 보통 어렵지 않습니다. DOS 배치 파일에서 사용하는 연산자들은 대부분 쉘 스크립트의 일부 기능만 사용하고 있기 때문입니다.

배치 파일과 쉘 스크립트의 연산자 비교

Batch 파일 Shell Script 설명
% $ 명령행 인수(prefix)
/ - 명령 옵션
\ / 디렉터리 경로 구분자
== = 문자열 비교(같음)
!==! != 문자열 비교(같지 않음)
| | 파이프
@ set +v 명령어 표시 억제
* * 파일 와일드카드
> > 출력 리다이렉션(덮어쓰기)
>> >> 출력 리다이렉션(추가)
< < stdin 리다이렉션
%VAR% $VAR 환경변수
REM # 주석
NOT ! 조건 부정
NUL /dev/null 출력 폐기
ECHO echo 출력
ECHO. echo 빈 줄 출력
FOR %%VAR IN (LIST) DO for var in [list]; do 반복문
:LABEL 사용 없음 레이블
GOTO 함수 사용 특정 위치로 이동
PAUSE sleep 대기
CHOICE case/select 메뉴 선택
IF if 조건문
IF EXIST [ -e filename ] 파일 존재 여부
CALL source 또는 . 다른 스크립트 포함
SET export 환경 변수 설정
SHIFT shift 인수 이동
ERRORLEVEL $? 종료 상태

DOS Shell

DOS 명령과 UNIX 명령 비교

DOS 명령 UNIX 명령 설명
ASSIGN ln 링크 생성
ATTRIB chmod 파일 권한 수정
CD cd 디렉터리 이동
COPY cp 파일 복사
DEL rm 파일 삭제
DIR ls -l 디렉터리 목록
MOVE mv 이동/이름 변경
MD mkdir 디렉터리 생성
TYPE cat 파일 출력
XCOPY cp 확장된 파일 복사

참고로 UNIX 명령과 쉘 스크립트 기능은 DOS 명령보다 훨씬 강력하며, 옵션도 다양합니다. 또한 DOS는 * 와 ? 를 제외하면 와일드카드 기능도 매우 제한적입니다.

예제 1 — DOS 배치 파일


REM VIEWDATA
REM INSPIRED BY AN EXAMPLE IN "DOS POWERTOOLS"
@ECHO OFF
IF !%1==! GOTO VIEWDATA
FIND "%1" C:\BOZO\BOOKLIST.TXT
GOTO EXIT0

:VIEWDATA
TYPE C:\BOZO\BOOKLIST.TXT | MORE

:EXIT0

예제 2 — 변환된 쉘 스크립트


#!/bin/bash
# viewdata.sh
DATAFILE=/home/bozo/datafiles/book-collection.data
ARGNO=1

if [ $# -lt "$ARGNO" ] 
then
    less $DATAFILE
else
    grep "$1" $DATAFILE
fi
exit 0

이처럼 변환된 스크립트는 더 짧고 명료하며, 원본 배치 파일보다 읽기 쉽습니다.

참고

  • UNIX 쉘 스크립트는 DOS 파일 시스템(NTFS 포함)에도 접근할 수 있어, 굳이 배치 파일을 손보지 않고도 동일한 작업을 수행할 수 있습니다.
  • 배치 파일을 더 세련되게 다듬으려는 시도가 있을 수 있지만, 쉘 스크립트로 변환하는 것이 훨씬 실용적입니다.

(2025년 업데이트)

반응형