どのUnixシェルを使用すればよいですか?

開示: あなたのサポートはサイトの運営を維持するのに役立ちます!このページで推奨する一部のサービスについては、紹介料を稼ぎます.


コンピュータのオペレーティングシステムでは、「シェル」は、ユーザーがコマンドを発行してシステムのサービスにアクセスできるようにするインターフェースです。技術的には、Windowsデスクトップのようなグラフィカルユーザーインターフェイス(GUI)は一種のシェルです.

ただし、ほとんどの人がシェルについて話すとき、それはコマンドラインインターフェイス(CLI)を意味します。これは「ターミナル」または単に「コマンドライン」とも呼ばれます。しかし、ほとんどの場合、それは単なる殻です.

どのUnixシェルを使用すればよいですか?

あなたはすでにシェルに慣れているかもしれません。 WindowsのコマンドプロンプトとMacのターミナルアプリはシェルの例です。 Unixシステムは通常、デフォルトのシェルとしてBashと呼ばれるものを持っています。 (Windowsでも使用可能ですが、デフォルトではありません。)

シェルを使用する理由?

Unixシェルはそのコマンドプロセッサです。当初、それはユーザーがコンピュータと対話するために持っていた唯一の方法でした。もちろん、もちろん、他のオプションもあります—グラフィカルユーザーインターフェイス(GUI)など.

したがって、シェルが必要かどうか、疑問に思われるかもしれません。しかし、GUIで作業しているUnixユーザーを見ると、開いているウィンドウの多くが実際にはUnixシェルを実行していることがわかります。どうして?超強力だから.

GUI対シェル

グラフィカルユーザーインターフェイスで何ができますか?物をクリックしてください.

物をクリックして開く、起動する、フォルダまたはディレクトリ間で移動することができます。そして、それはすべて非常に簡単です。多くのコンピューティングにとって、それらは素晴らしいです!

しかし、何千ものファイルの名前を一度に変更できますか?住所を構成する数字と単語の特定のパターンについて、すべてのドキュメントのテキストを検索できますか?特定の期間に特定のカメラで撮影されたすべての画像を検索し、それらすべてに同じ色補正フィルターを適用します?

シェルを使用すると、ルーチンタスクと高度に専門化されたタスクの両方をすばやく効率的にすばやく実行できます。これにより、コンピューターをほぼ完全に制御できます。.

さらに、シェルを使用すると、オペレーティングシステムと直接やり取りしたり、一連のコマンドを実行したり、タスクを自動化したりできるスクリプトまたは小さなプログラムを作成できます。.

しかし、選択できるシェルはたくさんあります。 (その最高の側面の1つ!)この記事では、3つの最も重要なシェル(C、Korn、およびBash)を少し詳しく見ていきます。.

Unixシェルの歴史

コンピューティングの初期の頃は、コマンドを入力せずに出力を取得していませんでした。代わりに、情報を入力するためのパンチカードをたくさん与えました。最初に、出力としてパンチカードを取り戻しました。しかし、すぐに、改造されたタイプライターが出力用にコンピューターに追加されました。当時は刺激的でしたが、氷河の時間スケールでのみ低速でインタラクティブです.

しかし、進展があった。キーボードはコンピューターに追加されました—一般にテレタイプの一部として、入力と出力の両方が同じデバイスの一部でした。そこで、初歩的なコマンドラインが開発されました.

最終的に、置き換えられたプリンターの出力をモニターします。しかし、出力がより高速だったことを除いて、これはそれほど物事を変更しませんでした.

36ビットのメインフレームコンピューター、特にGE-600シリーズ用のMulticsオペレーティングシステムのリリースによって、状況が実際に変化したのは1964年まででした.

Multicsは時分割のオペレーティングシステムで、複数のユーザーが同時にコンピューターを使用できるようにしました。しかし、私たちの観点からの大きなことは、常にオペレーティングシステムカーネルの一部であったコマンドプロセッサ(コンピュータサイエンティストLouis Pouzinに続く「シェル」と呼ばれていました)は、今や通常のプログラムにすぎなかったことです.

これは大したことのように聞こえないかもしれませんが、オペレーティングシステムが構築された単一のインターフェイスに悩まされていなかったため、コンピューターユーザーにとっては大きな進歩でした。.

ケン・トンプソンとATの一団が&TはUnixを作成し、通常のプログラムとしてシェルを持つことを含め、Multicsをフォローしました。.

最初のUnixシェルはThompsonによって書かれたため、Thompsonシェルと呼ばれていました。これには、パイプ(プログラムの出力を別のプログラムの入力に入れる)やリダイレクト(プログラムの文字列の出力をファイルに入れる)のように、Unixユーザーが気に入っている機能がありました。しかし、ほとんどの場合、それは非常に限られていた.

しかし、シェルは単なる別のプログラムであったため、別のシェルを記述して使用することは比較的簡単なことでした。数年後、オペレーティングシステムにはさらに何かが必要であることが明らかになりました。そして人々はトンプソンシェルから離れて移動しました—最初にマシーシェル、次にスティーブンボーンによって書かれたボーンシェルに移動しました.

もちろん、これで終わりではありませんでした。他のシェル、特にCシェル、KornShell、そして今やほとんどすべてのUnixシェルの王が登場します:Bash.

Cシェル

Bourneシェルの最初の大きな競合相手は、そのプログラムの名前が付けられているCシェルまたはcshでした。スクリプト言語としての可能性を十分に発揮できなかったとしても、今日でも多くの人が使用しています。.

シェルとシェルスクリプト

シェルとシェルスクリプトの違いを理解することが重要です。シェルはインタラクティブな環境、つまり、物事を入力するコマンドラインです。.

シェルスクリプティングは、そのコマンドライン環境で次々に入力される一連のコマンドとして解釈されるプログラムを作成しています。 (ただし、コマンドラインでシェルスクリプトを効果的に記述できることに注意してください。)

多くのUnixユーザーはCシェル環境が好きで、スクリプト言語が嫌いです。.

Cシェルの歴史

Unixユーザーは1977年にリリースされたBourneシェルに非常に満足していました。しかし、Bill Joyは翌年にリリースしたシェルについて別の考えを持っていました:Cシェル.

Cシェルの背後にあるアイデアは、Unixが構築されたCプログラミング言語に似た構文を作成することでした。.

しかし、これには多くの問題がありました。ただし、コマンド履歴(キーストロークを数回入力するだけで古いコマンドを繰り返すことができます)やディレクトリスタック(ファイルシステム内を簡単に移動できる)などの機能を使用する方が簡単だったため、コマンドラインシェルとして採用されました。 ).

ただし、Bourneシェルは管理用スクリプトの大半を占めていました。しかし、1980年代を通じて、ボーンシェルとCシェルの両方が広く使用されました。.

後で見るように、Bourneシェルは更新され続けました。これは、TENEX Cシェル(tcsh)の形式のCシェルでも発生しました。今日Cシェルを使用している場合、おそらくtcshの形式になります。.

Cシェルの使用

Cシェルについて学ぶことはたくさんあります。そして、その多くは非常にエキサイティングです。だから読んで.

Cシェルへのアクセス

3つの主要なオペレーティングシステムファミリ(Windows、Mac、およびLinux)のいずれも、デフォルトシェルとしてcshを使用していません.

Mac OS XおよびLinux

Mac OS XとほとんどのLinuxディストリビューションにはtcshが含まれています。コマンドラインでcshまたはtcshと入力すると、Cシェルターミナルに入ることができます。 (Macは組み込みのtcshインタープリターcshを呼び出します。ほとんどのLinuxディストリビューションはtcshを使用しますが、どちらの名前を入力しても同じように機能するようにシンボリックリンクが含まれています。)

tcshまたはcshがまだない場合は、インストールする必要があります。.

マイクロソフトウィンドウズ

Cシェルは、Windowsの動作に固有のものではありません。おそらく、含まれているPower Shellを使用するほうがよいでしょう。.

ただし、Windowsでcshを使用する場合は、CygwinまたはHamilton Cシェルを試すことができます。.

Cシェルスクリプトファイル

cshファイルを直接実行する場合は、まず、それらが実行可能であることを確認する必要があります。次に、ファイルの最初の行に以下を配置して、cshインタープリターを使用することを指定する必要があります。

#!/ bin / csh

構文例

csh構文はCに基づいているため、Bourneコードよりも慣習的です.

簡単なBourneシェルスクリプトは次のとおりです。

#!/ bin / sh
x = 11とする
if [$ x -gt 10]
その後
エコー "Xは10より大きい."
fi

比較は、ラグ内比較演算子の代わりに別のプロセスを実行する-gtを使用して行われていることに注意してください。また、ifステートメントは、reversed-if fiで終了します.

これはcshの同じものです。

#!/ bin / csh
x = 11に設定
if($ x > 10)その後
エコー "Xは10より大きい."
endif

どちらのコードフラグメントも簡単に理解できますが、Cプログラマにとってはcshコードの方が自然です.

Cシェルのリソース

Cシェルを学ぶための膨大な数のリソースがあります。最高のものを集めました.

オンラインチュートリアルと紹介

  • Grymoire Cシェルのチュートリアル:Bruce BarnettによるCシェルの完全な紹介.
  • Cシェルスクリプト:Cシェルの使用に関するWikiBooksの紹介.
  • Tcshシェルの使用:Unix Geeks向けMac OS XのCシェルセクション.
  • Linux Csh Command:別の優れた詳細なテクニカルリファレンスで、上記のものよりも少し読みやすい.

Cシェルに固有の本はたくさんありませんが、古くても、いくつかの良い本があります。.

  • cshの使用 & Paul DuBoisによるtcsh(1995):これは、Cシェルの操作に関する古典的な本であり、最初に公開されたときと同じくらい今日の関連性があります。購入する前に本のセクションを読むことができるオンラインアーカイブを必ずチェックしてください。著者はスクリプトにcshを使用することに強く反対している(彼はBashまたはPerlを好む)ので、本は実際にはスクリプトではなくCシェルターミナルの使用に関するものであることに注意してください。.
  • Gail AndersonによるUnix Cシェルフィールドガイド(1986):別の古典的なテキスト。 30年以上が経過した今でも、それは深刻なcshユーザーにとって不可欠です。.

一方

上で述べたように、Cシェルに非常に反対するユーザーが多く、その理由を理解することは良い考えです.

多くの人がcshがひどいものであり、誰もいつでも使用してはならない理由を詳しく検討するには、有害と見なされるCshプログラミングをお見逃しなく.

それでも納得できない場合は、Cシェルを使用しない理由のトップ10をご覧ください。.

Cシェルを学ぶべきか?

Unix環境のネットワーク管理者またはシステム管理者であれば、ほぼ確実にCシェルに出くわすことになるので、少なくともある程度理解しておくとよいでしょう。.

カジュアルなユーザー、さらにはほとんどの開発者でさえ、おそらく別のシェルを使用するほうがよいでしょう.

KornShell

KornShell、または単にkshは、1980年代初頭にBell LabsのDavid Kornによって開発されたUnixシェルです。 KornShellはBourneシェル(sh)に基づいており、shとの完全な下位互換性を提供し、多くのCシェル機能を含み、kshに固有の追加機能を追加し、shまたはcshよりも高速に実行します.

KornShellは、IBMのAIXオペレーティングシステムで使用されたデフォルトのシェルでした。これは、かつて人気がありましたが現在は使用されていないOpenSolarisオペレーティングシステムです。 kshは主にインタラクティブなコマンド言語ですが、高水準プログラミング言語としても使用でき、自動化されたスクリプトを書くのに役立ちます.

1983年、kshはBell Labs(およびその後のAT&T)ユーザー。これはshとの下位互換性があり、Bell Labsユーザーの要求に応じてcshから借用した多くの機能が含まれていました.

KornShellは専有ATのままでした&オープンソースソフトウェアとしてリリースされた2000年までのTシェル.

kshは1983年から2000年までプロプライエタリソフトウェアだったため、kshに基づくいくつかのオープンソースシェルが登場し、最も一般的なのはPublic Domain Korn Shell(pdksh)とMirBSD Korn Shell(mksh)でした。.

KornShellでできること?

KornShellスクリプトは、2つの異なる方法で使用できます。

  • KornShellを対話的に使用して、コマンドラインプロンプトに入力されたコマンドを実行できます。.
  • プログラムでKornShellを使用して、さまざまなオペレーティングシステムとシステム管理タスクを自動化するスクリプトを作成できます。.

シェル言語は主に、他のプログラムを起動するコードを記述するために使用されます。ただし、スクリプト全体をkshなどのシェル言語で記述して、反復的な管理タスクを自動化することもできます。 kshまたは他のシェル言語で最も一般的に取り組むタスクには、次のものがあります。

  • コンピュータシステムの起動時に実行されるスクリプトの記述
  • コンピューターのメンテナンスタスクを自動化するスクリプトの作成
  • アプリケーションパッケージのダウンロードとインストール.

オンラインKornShellチュートリアルとビデオ

kshを使い始めたばかりのプログラマーに最適なオンラインリソースは、IBM developerWorksのKorn Shell Scriptingです。.

この短いチュートリアルはPDFでも入手でき、Unixシェル、変数、ループ、ksh構文などをすぐに紹介します。このリソースを確認するために必要な15分で、他のより困難なチュートリアルを理解するのに役立つ基本を学びます.

経験豊富なUnixプログラマーおよびシステム管理者であるJames Maherが、一連の80の無料KornShellチュートリアルビデオをYouTubeで公開しました。これらのビデオは、コマンドラインにある程度精通していることを前提としていますが、kshの経験はありません。.

すでにシステムでkshが稼働している場合、これらのビデオは、変数、デバッグ、配列、リスト、ifステートメント、パターンマッチング、ループ、関数など、多くのことをカバーしています。.

これらのビデオは、より深い内容を提供する書面のトレーニングで補足する必要がありますが、これらのビデオは、他のリソースで書面の形式で提示されたトピックを強化する優れた方法です.

Solarisシステム管理者であり、南カリフォルニア大学の経験豊富なプログラマであるPhilip Brownは、無料のKorn Shell(ksh)プログラミングチュートリアルを書いています。このチュートリアルでは、変数、関数、リダイレクトなどのトピックについて説明します.

もう少し学術的なことを考えているなら、KornShell / Bashを使用したUnixシェルスクリプトは、詳細な電子的なコースの配布資料です。ダートマス大学の情報技術サービス部門のリサーチシステムエンジニアであるリチャードブリテンが作成しました。.

KornShellリファレンス

経験豊富なプログラマーでも定期的にリファレンスドキュメントを参照します。以下は、必要なときに特定のksh機能に関する詳細な手順を見つけるために使用できる参照リソースです.

  • KornShell Webサイトには、kshに関する情報、ソフトウェアの最新バージョンへのリンク、ドキュメントなどが含まれています.

多くのプログラマーは、トピックについて書かれたテキストを研究することでkshの使い方を学びます。テキストをフォローする場合は、面白いと思われるポイントに飛び込もうとしないことが重要です。.

これらのテキストのいずれかを途中でスキップすると、各章のテキストが前の章で提示されたコンテンツに基づいているため、混乱を招きます。これらのテキストに記載されている情報を、記載されている順に読んで、最大限に活用してください。.

  • RobbinsとBeebeによるClassic Shell Scripting(2005):シェルスクリプトの確かな紹介。 kshが最初のシェルプログラミング言語である場合、ksh固有のテキストに進む前に、シェルスクリプトの一般的な理解を固めるのが賢明です。.
  • KornShellプログラミングチュートリアル(1991)(Barry Rosenberg著):最も推奨されるKornShellプログラミングテキスト.
  • RobbinsとRosenblattによるKorn Shell(2002)の学習:コンピュータプログラミングの本の人気のあるO’Reilly Mediaシリーズの一部。 KornShellプログラミングチュートリアルほど人気はありませんが、このテキストはUnixプログラミングの世界では非常に尊敬され、認められています。.
  • Marris I BolskyとDavid G Kornによる新しいKornShellコマンドとプログラミング言語(1995):これは初心者向けではありません。ただし、経験豊富なプログラマは、このテキストの技術的な深さに感謝します。さらに、言語の作成者が作成したプログラミング言語のテキストを選択するときに、どうすればよいでしょうか。?

KornShellの概要

Korn(KoRNではない)シェルはUnixシェルプログラミング言語であり、対話形式でコマンドラインからコマンドを実行したり、プログラムでスクリプトを作成して、多くのコンピューターのメンテナンスタスクやシステム管理タスクを自動化したりできます。.

バッシュ

Bashは、Unixの世界で最も一般的に使用されているコマンドラインインターフェイスです。これは、LinuxとMac OS Xの両方のデフォルトのテキストベースのインターフェースです。そして、他のほとんどすべての場所で広く使用されています.

その人気は、Unixテキストインターフェイスの2つの異なるトレンドを組み合わせているという事実によるものです。強力なスクリプト機能と使いやすさです。.

このセクションでは、これら両方の方法でBashを使用するための基本的な概要を説明します。さらに、Bashマスターになるためのリソースを提供します.

バッシュの歴史

すでに説明したように、ボーンシェルは最初の本当に重要なUnixシェルでした。しかし、それは一種の不格好なユーザーインターフェースを持っていました.

一方、強力なスクリプト構文を備えた優れたスクリプト言語がありました。当時、Unixは主にプログラミング環境だったため、ユーザーは独自のスクリプトを作成して複雑なことを行うと想定されていました.

Unixがより広く使用されるようになるにつれ、人々はインタラクティブに使いやすいシェルを望みました。したがって、CシェルやKornShellなど、はるかに優れたユーザーインターフェイス機能を含むものの開発.

1989年、ブライアンフォックスはBashをFree Software Foundation(FSF)に寄稿しました。見た目は似ていませんが、名前は実際にはユーモラスな頭字語です:Bourne Again SHell.

そのため、これはBourneシェルの代わりになります。しかし、それは人々が他のシェルで愛するようになったすべてのインタラクティブな機能を追加しました.

インタラクティブバッシュ

Bourneシェルでは、コマンドを入力する以外に、ユーザーとしてできることは多くありませんでした。バッシュはそれをすべて変えた。ここに大きな変化があります.

  • 歴史:これにより、以前のコマンドを見つけて編集できます。これには、cshからの感嘆符演算子(「bang」と呼ばれる)の使用が含まれます。.

    さらに、以前のコマンドに変更を加えることができます。また、ユーザーは前のコマンドをスクロールして戻り、コマンドラインで直接編集できます。.

  • エイリアス:これは基本的なプログラミングの一種で、複雑なコマンド(または複数のコマンド)を単純なエイリアスに与えることができます.

  • ディレクトリスタック:これにより、現在のディレクトリをスタックに「プッシュ」して、別のディレクトリに移動できます。そのディレクトリで作業が完了したら、ディレクトリから「ポップ」して、最初に作業していた場所に戻ることができます。.

もちろん、Bashを使用することには他にも多くの機能があります。次のリソースはあなたをあなたの道に連れて行くはずです.

インタラクティブなBashオンラインリソース

すべてのBashコマンドは、技術的にはスクリプトです。そのため、Bashをインタラクティブに使用することとスクリプトに使用することの間に明確な境界線はありません。.

たとえば、Bashスクリプトでディレクトリスタックを使用すると非常に便利です。その結果、チュートリアルでは、Bashのこれら2つの側面が常に区別されるわけではありません。ただし、これらのリソースは、Bashコマンドラインとの直接対話に重点を置いています.

  • Bashガイド:これは、Bashを使用して作業を行うためのすべての基本についての非常に優れた紹介です。より高度なものだけを扱うのではありません。たとえば、フィルター、パイプ、リダイレクトについての良い議論が含まれています.

  • Bashシェルの進歩:これは、履歴、ファイル名の補完、エイリアスなどの使用の詳細を学ぶのに最適な方法です.

  • Bashのよくある質問:これはBashに関する一般的なFAQであり、インタラクティブな質問やスクリプトの質問に関する多くの情報が含まれています.

Bashスクリプト

BashはBourneシェルのスーパーセットになるように設計されています。したがって、理論的には、Bashは任意のBourneシェルスクリプトを実行できます(約40年後、それらの多くが存在します)。常に正しいとは限りませんが、ほとんどの場合、.

BashはどのBourneシェルスクリプトでも実質的に問題がないため、Bourneシェルスクリプトに関するほとんどの情報がBashスクリプトに適用されます。.

Bashスクリプトの例

Bashスクリプト言語はかなり直感的です。少し例を示してから、詳細を学ぶためのリソースをいくつか提供します。これは、スクリプトがコマンドライン引数で実行されたかどうかを報告する簡単な例です.

#!/ bin / bash
if [$#-gt 0]
その後
エコー "最初の引数:$ 1"
そうしないと
エコー "議論はなかった"
fi

シャープまたはハッシュタグ文字(#)は、通常、コメントの開始に使用されます。しかし、スクリプトの最初の行では、感嘆符が続く場合、スクリプトを実行するプログラムをシェルに指示します.

感嘆符の後のものはプログラムへの完全なパスです。 bashの場合、常に/ binにあります.

古いスクリプトは#!/ bin / shで始まる場合がありますが、ほとんどのシステムでは、/ bin / shと/ bin / bashが同じプログラムを指していることに注意してください。 (一部では、/ bin / shが/ bin / dash内のDashと呼ばれる簡略化されたBashプログラムに置き換えられています。)

shの変数は常にドル記号で始まります。特殊変数$#には、コマンドライン引数の数が含まれています。コマンドライン引数自体には番号が付けられています:最初の$ 1、2番目の$ 2など.

変数$ 0には、プログラム名自体が含まれています。したがって、コードの2行目では、コマンドライン引数があるかどうかを確認しています。 (最初のコマンドライン引数$ 1が存在するかどうかを確認することもできます。)

コマンドライン引数がある場合、スクリプトはechoコマンドを使用して最初の引数を出力します。そうでない場合、スクリプトは引数がないことを出力します.

Bashスクリプトの学習

ボーンシェルは約40年間使用されています。 Bash自体は25年以上前から存在しています。その結果、学習に役立つ多くのリソースがあります.

  • SteveのBashシェルスクリプトチュートリアル:これは、多数の例を取り上げた優れたチュートリアルです。 Bashスクリプトを使い始めるのに最適な方法です.

  • Bashプログラミング—はじめにHOW-TO:これは、Bashをボトムアップで詳しく説明したものです.

  • Linuxシェルスクリプトチュートリアル:これは、Bashスクリプトの概要だけでなく、sed(パターンマッチング)やAWK(データ抽出)などの他のツールも紹介しています。.

  • シェルスクリプトの作成:これは、楽しいと主張するスクリプトに関するLinuxコマンドチュートリアルです。.

  • Unixシェルスクリプトチュートリアル:最初から始まる10部構成のビデオチュートリアル.

その他のBashリソース

バッシュにはたくさんのことがある。ここにあなたが役立つと思ういくつかの他のリソースがあります.

  • Bashリファレンスマニュアル:これはBashの公式GNUリファレンスマニュアルです。必要なすべての情報が含まれていますが、始めようとしているだけでは気が遠くなるかもしれません。.

  • Grymoire — UNIX Wizardsのホーム:これはBruce BarnettによるUnixツールのチュートリアルのコレクションです。特に、sedとAWKの紹介を確認してください。.

  • Bash Hackers Wiki:すべてのBashに関する豊富なリソース.

  • スタックオーバーフロー:これは、サイトのBashタグ付きスレッドです。非常に活発で、知識のある多くの人々が住んでいます.

  • Reddit:これはBash subredditです。コマンドラインsubredditも確認してください.

バッシュまとめ

Bashは、単純なWebページで完全にカバーするには大きすぎます。しかし、ここにあるリソースを使用すると、ユーザーインターフェースおよびスクリプト言語としてBashを使用できます。.

Unixシェル

選択できるUnixシェルはたくさんあります。最も人気のある3つを取り上げました。決定できない場合は、Bashを選択するのがほぼ確実です。.

しかし、一部の人々は別のものを望みます。この記事の情報を使用すると、正しい選択を行うことができるはずです。.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me