より優れた Linux シェル?[閉まっている]
-
06-09-2019 - |
質問
私は bash を使用しており、10 年以上使用しています。しかし、Linux シェルの世界に何か重要な新しい開発があったのではないかと時々疑問に思うことがあります。
数年前、Microsoft は PowerShell をリリースしましたが、これは非常に興味深いものでした。Linux シェルでも同様の革新が起こっていますか?
解決
あなたは<のhref = "http://igorshare.wordpress.com/2008/04/06/pash-cross-platform-powershell-is-out-in-the-wild-announcement経由でLinux上でPowerShellを実行することができます/」のrel = "noreferrer">パッシュを。それは、PowerShellは.NETを使用する方法をモノを使用します。
他のヒント
あなたは気づいています bash 4
非常に最近、多くの新機能と言語の追加がリリースされましたか?
- シェルオプション
globstar
(**/foo
) 再帰的検索を実行します。dirspell
パス名展開時のタイプミスを修正しました。 - 連想配列では、数値を文字列にマッピングするのではなく、文字列を文字列にマッピングします。
- の
autocd
シェル オプションを使用すると、ディレクトリ パスを入力するだけでディレクトリを変更できます。cd
前に。 - コプロセス
&>>
そして|&
両方をリダイレクトするリダイレクト演算子stdout
そしてstderr
- スクリプト作成の利便性を向上させるために、既存の組み込みに多数の追加機能が追加されました。
チェックアウト:
- 「公式」変更ログ: http://tiswww.case.edu/php/chet/bash/CHANGES
- いくつかの新機能についての短いガイド: http://bash-hackers.org/wiki/doku.php/bash4
私はzshのかfishshellを見てみたい。
バッシュ(およびいくつかの他のシェル)の少なくとも喧伝特徴の一つは、あなた自身のloadablesを書き、シェルは組み込みコマンドとして実行有する能力である。
あなたが..「on」のローダブルを書いて、あなたはそれがこのように仕事をしたいとしましょう。
on node 123 run some command
on class nodes run some command
on all nodes run some command
...等..
これで、-f /パス/に/ロード可能loadable_name
有効経由で構築bashのようにそれを可能にする、ロード可能なの書き方について簡単な例に従うことができますだから、我々の場合には、
に-fは/ opt / bashを/ loadables /上有効...あなたのbashrcに、そしてあなたがそれを持ってます。
特定の環境変数が設定された場合は、bashはネイティブであなたの気の利いた新しい言語を解釈したい場合は、ですから、あなたが「使用」または「switch_to」という名前のローダブルを記述し、その後、別の文法/ランタイムをロードするためにパーサを変更ます。
すなわち:ます。
#/bin/bash
switch_to my-way-cool-language
funkyfunc Zippy(int p) [[
jive.wassup(p) ]]
ほとんどの人は、しかし、自分の殻をハックしたいとして、のないのです。私は、コアコードとあまりいじるせず、施設はバッシュを取り、それをあなたがそれを望む方法を作るために存在することを指摘したいんでした。
/パス・ツー・bashのソース/例/ loadablesを参照してください、あなたはまだバッシュを使用していることから、あなたが働く場所それが飛ぶために得ることができるかもしれません。
私は "オリジナル改善シェルは、" には、ksh93だと思います。 bashはkshのソースコードは、独自のだった時に生まれました。 kshが、その後オープンソースされていた場合(FSFとあなたが知っていることはありませんが)、新しいシェルを持つことが必要と判断されていない可能性があります。 kshは、特にCモジュールによって拡張することができる能力のために、勉強の価値があるが、それはbashの上をクリア勝利ではありません。 bashのの自動補完は、全体的なbashの勝利を作るのに十分とすることができる、明らかに優れています。違いは軽微なものであるので、どのような場合はbashやkshのでは、収束する相当な努力をしています。
他の興味深いシェルはまた、CSHを含めてあるのkshすべてをすることを試みる、zshののの。私はCSHへの任意のポイントまたは使用することを見たことがないので、私はzshのために提唱する適任者ではないです。私は1つの異常な非互換性を指摘する:デフォルトでは、zshの中で変数$var
の常にのは、それにスペースが含まれている場合でも、単一のトークンに展開されます。この動作は、他のすべてのSH-派生シェルと互換性がありません、それは時折不便ですが、実際にそれはオリジナルよりも多くの理にかなって、それは引用の多くの地獄を節約できます。
cshのは、ジョブ制御を持っている最初のシェルでしたが、私の心にそれ(とその後継者)はbashとkshのに取って代わられています。でスクリプトを書くことmucn楽しいことはなかった。
最後に、そこにレスキューフロッピー(!)と他のスパルタン環境用に設計された多くの小さな貝殻がありますが、あなたがそれらにはほとんど関心を持っているように聞こえる。
(技術革新の問題で、私はシェルスクリプトとして記述するために使用さ半分以上のスクリプトは、現在であることを追加する必要がありますLuaののスクリプト。その他は、だから私は本当の技術革新は、移行は離れて、コマンドラインでプログラム可能な相互作用のためのシェルからだと思います。。のPythonやRuby、あるいはバック日に、PerlやTclのために同じことを言うことができます)
IIRC、PowerShellは、オブジェクト指向です。その点では、リスシェルのは、あなたが興味があります。でも、私はそれを使用したことがありません。
sh
互換性を失うことを喜んでいる場合は、、あなたはあなたのシェルとしてPythonやTclのようなスクリプト言語を使用した時に見ることができます。インタプリタはライン編集、コマンドを提供していない場合は rlwrap
には非常に便利です歴史、完了、など。
シェルに関する一つの考え方は、彼らは主にここでしか(ファイルとプロセスを接続するために使用されるべきであるということですそのアプローチをespouses 1ページ)があります。それは人々がそれらを使用して、いくつかの非常に複雑なソフトウェアを書かれている、と述べています。
シェルは、はるかにinovativeスキームSchell氏のrel="nofollow">ののコマンドと(もちろん、Schemeで書かれた)の組み込みawkのインタプリタ。唯一の欠点は、それが上の構築にのパッチ適用のほんの少しを必要としていることです64ビットLinuxます。
これは正確にはBourneシェルではありませんが、それは違います。もちろん、あなたがスキームを学ばなければならない! - ボーナス
ルビーのようなあなたは、あなたがラッシュを使用することができた場合(ルビー-UNIXシェル、IRBない)
ここでプレゼンテーションを参照してください。
ます。http://www.slideshare。ネット/ adamwiggins /ラッシュ・ルビー・シェルアンドUNIX-統合ライブラリの
または公式サイト以上の例を参照してくださいするには、