Cシェルでのプログラミングは有害とみなされる一部の人々が書いたcshスクリプトはまだいくつかのハードコアcshファンによって書かれています。 cshスクリプトをbashに変換する無料/オープンソースコンバータはありますか?
そのようなプログラムが存在しない場合(純粋に技術的な理由で)プログラムを書くことは可能ですか?
答え1
この答えには2つの異なる部分があります。ちょっと技術的な部分から始めて、もっと個人的な考えを扱います(まあ、豪言章談)。
シェルには、ソースコード配布ディレクトリに隠されたスクリプトbash
が付属しています。cshtobash
examples/misc
csh
これはスクリプトをインポートして次に変換しません。bash
ただし、既存のスタイルファイルからプロトタイプスタイルファイルを作成する最初のステップとして、誰かに役立ちますsh
。~/.profile
csh
~/.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
スクリプトを変更するか、それから理由があるかもしれません
- コードを読む
- それを理解する
- 他の言語で再実装
csh
...特にプログラミングに精通していない場合はさらにそうです。
自動翻訳の場合:なぜですか?
スクリプトが実行されていて、システムにそのスクリプトのソルバーがある場合は、コードを翻訳する必要はありません。コードを自動的に翻訳すると、「より良い」コードが生成される可能性が低く、ほとんどそうではありません。メンテナンス可能コードを書いて、翻訳されたスクリプトが元のスクリプトと同じように機能することを確認するのに時間を費やす必要があります。