bashスクリプトコンバータにcshがありますか?

bashスクリプトコンバータにcshがありますか?

Cシェルでのプログラミングは有害とみなされる一部の人々が書いたcshスクリプトはまだいくつかのハードコアcshファンによって書かれています。 cshスクリプトをbashに変換する無料/オープンソースコンバータはありますか?

そのようなプログラムが存在しない場合(純粋に技術的な理由で)プログラムを書くことは可能ですか?

答え1

この答えには2つの異なる部分があります。ちょっと技術的な部分から始めて、もっと個人的な考えを扱います(まあ、豪言章談)。


シェルには、ソースコード配布ディレクトリに隠されたスクリプトbashが付属しています。cshtobashexamples/misc

cshこれはスクリプトをインポートして次に変換しません。bashただし、既存のスタイルファイルからプロトタイプスタイルファイルを作成する最初のステップとして、誰かに役立ちますsh~/.profilecsh~/.login

入力:標準のOpenBSDcsh初期化ファイル。

# $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

2つのプログラミング言語と同様に、一方が他の言語のために役に立たなくなっても、それが意味するわけではありません。既存ソフトウェア書き直す必要があります。また、この時代遅れの言語に精通している人が話すのをやめるべきではありません。これは、シェルスクリプトを作成するための最新の言語を探している場合は、この言語が選択する必要がある言語ではない可能性があることを意味します。

一方、課題が与えられると延長するまたはcshスクリプトを変更するか、それから理由があるかもしれません

  1. コードを読む
  2. それを理解する
  3. 他の言語で再実装

csh...特にプログラミングに精通していない場合はさらにそうです。

自動翻訳の場合:なぜですか?

スクリプトが実行されていて、システムにそのスクリプトのソルバーがある場合は、コードを翻訳する必要はありません。コードを自動的に翻訳すると、「より良い」コードが生成される可能性が低く、ほとんどそうではありません。メンテナンス可能コードを書いて、翻訳されたスクリプトが元のスクリプトと同じように機能することを確認するのに時間を費やす必要があります。

関連情報