bash 스크립트 변환기에 csh가 있나요?

bash 스크립트 변환기에 csh가 있나요?

C 쉘에서의 프로그래밍은유해한 것으로 간주일부 사람들이 작성한 csh 스크립트는 여전히 일부 하드코어 csh 팬이 작성합니다. csh 스크립트를 bash로 변환하는 무료/오픈 소스 변환기가 있습니까?

그러한 프로그램이 존재하지 않는다면 (순전히 기술적인 이유로) 프로그램을 작성하는 것이 가능합니까?

답변1

이 답변에는 두 가지 별개의 부분이 있습니다. 약간 기술적인 부분부터 시작해서 좀 더 개인적인 생각을 다루겠습니다(음, 호언장담).


쉘에는 소스 코드 배포 디렉토리 에 숨겨진 스크립트 bash가 함께 제공됩니다 .cshtobashexamples/misc

csh이것은 스크립트를 가져와서 다음으로 변환하지 않습니다 .bash이지만 기존 스타일 파일에서 프로토타입 스타일 파일을 만드는 첫 번째 단계로 누군가에게 유용할 수 있습니다 sh.~/.profilecsh~/.login

입력: 표준 OpenBSD csh초기화 파일.

# $OpenBSD: dot.login,v 1.6 2015/12/15 16:37:58 deraadt Exp $
#
# csh login file

if ( ! $?TERMCAP ) then
        if ( $?XTERM_VERSION ) then
                tset -IQ '-munknown:?vt220' $TERM
        else
                tset -Q '-munknown:?vt220' $TERM
        endif
endif

stty    newcrt crterase

set     savehist=100
set     ignoreeof

setenv  EXINIT          'set ai sm noeb'

if (-x /usr/games/fortune) /usr/games/fortune

출력: 완전히 동일하지는 않지만 bash...하지만적어도 뭔가는 있어.

# csh aliases


# csh environment variables

export USER='me'
export HOME='/home/me'
export PATH='/usr/bin:/bin:/usr/ucb:.'
export TERM='rxvt'
export SHELL='/bin/bash'
export EXINIT='set ai sm noeb'

# csh variables

set -o ignoreeof # ignoreeof
PS1='% '
prompt2='? '
HISTFILESIZE='100'

# special csh variables converted to bash equivalents

예, C 쉘 프로그래밍은 "유해한 것으로 간주됩니다". 이는 무해하거나 견고하지 않은 C 쉘 스크립트를 작성할 수 없다는 의미는 아닙니다. 이는 또한 모든 C-셸 스크립트를 bash.정말이러한 변환이 자동 도구로 수행되어야 한다는 의미는 아닙니다! 이는 정말 이상한 특징이 있는 어색한 언어라는 의미일 뿐입니다. 특히 익숙하다면 더욱 그렇습니다 sh.

두 가지 프로그래밍 언어와 마찬가지로, 하나가 다른 언어 때문에 쓸모없어진다고 해서 그것이 의미하는 것은 아닙니다.기존 소프트웨어다시 작성해야 합니다. 또한 이 구식 언어에 능숙한 사람들이 말하기를 중단해야 한다는 의미도 아닙니다. 이는 쉘 스크립트를 작성하기 위한 최신 언어를 찾고 있다면 이 언어가 선택해야 할 언어가 아닐 수도 있다는 것을 의미합니다.

반면에 과제가 주어지면연장하다또는 csh스크립트를 수정하거나,그 다음에이유가있을 수 있습니다

  1. 코드 읽기
  2. 그것을 이해하다
  3. 다른 언어로 다시 구현

csh...특히 프로그래밍 에 능숙하지 않다면 더욱 그렇습니다 .

자동 번역의 경우: 왜 그렇습니까?

스크립트가 실행 중이고 시스템에 해당 스크립트에 대한 해석기가 있는 경우 코드를 번역할 필요가 없습니다. 코드를 자동으로 번역하면 "더 나은" 코드가 생성될 가능성이 낮으며 대부분 그렇지 않습니다.유지 관리 가능코드를 작성하고 번역된 스크립트가 원본 스크립트와 동일한 방식으로 작동하는지 확인하는 데 시간을 투자해야 합니다.

관련 정보