| TENEX Cシェル | |
|---|---|
サンプルtcshセッションのスクリーンショット | |
| 開発者 | Ken Greer、Paul Placeway、Christos Zoulas 他 |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | C |
| オペレーティング·システム | クロスプラットフォーム |
| 前任者 | Cシェル |
| タイプ | Unixシェル |
| ライセンス | 2002年: BSD-3条項[ 2 ] [ 3 ] 1991年: BSD-4条項[ 4 ] |
| Webサイト | www.tcsh.org |
tcsh ( / ˌ t iː ˈ s iː ʃ ɛ l / “tee-see-shell”、/ ˈ t iː ʃ ɛ l / “tee-shell”、または “tee see ess aitch”、 ) は、C シェル( )をベースにした、C シェルと下位互換性のあるUnix シェルtcshです。 csh
シェル
tcshは本質的にCシェルであり、プログラム可能なコマンドライン補完、コマンドライン編集、その他いくつかの機能を備えています。他の一般的なシェルとは異なり、 tcshスクリプト内で関数を定義することはできず、ユーザーは代わりにエイリアスを使用する必要があります(cshと同様)。FreeBSD 13以前を含む一部のBSDベースシステムでは、ネイティブのルートシェルです。( FreeBSD 14では、デフォルトのルートシェルがshデフォルトのユーザーシェルに合わせて変更されました[ 5 ]。一方、OpenBSDではルートユーザーと通常ユーザーの両方にKornシェル が使用されています[ 6 ]。) ksh
tcshは、ファイル名とコマンドの補完、そしてコマンドライン編集の概念をTENEXオペレーティングシステム(「t」の由来)から借用しました。[ 7 ] 機能の追加のみで、既存の機能に変更を加えなかったため、tcshは元のCシェルとの後方互換性を維持していました。 [ 8 ] Bill Joyが作成したオリジナルのcshソースツリーからのサイドブランチとして始まりましたが、現在ではtcshが開発のメインブランチとなっています。
tcshは非常に安定していますが、新しいリリースはほぼ年に1回リリースされ、主にマイナーなバグ修正で構成されています。[ 9 ]
macOSやRed Hat Linuxなどの多くのシステムでは、cshは実際には ですtcsh。多くの場合、2 つのファイルのうちの 1 つは、もう1 つのファイルへのハードリンクまたはシンボリックリンクであるため、どちらの名前でも同じ C シェルの改良バージョンを参照します (ただし、使用する名前によって動作が変わる場合があります)。
Debianとその派生OS(Ubuntuを含む)には、cshとtcshという2つの異なるパッケージがあります。前者はオリジナルのBSD版csh [ 10 ] [ 11 ]をベースにしており、後者は改良されたtcshです。[ 12 ] [ 13 ]
歴史
の「t」は、TENEXtcshの「T」から来ています。TENEXは、カーネギーメロン大学の Ken Greer にコマンド補完機能でインスピレーションを与えたオペレーティングシステムです。 [ 14 ] Greer は 1975 年 9 月に Tenex スタイルのファイル名補完を実装するコードに取り組み始め、最終的に 1981 年 12 月に C シェルに統合しました。[ 7 ] Fairchild AI Labs の Mike Ellis は 1983 年 9 月にコマンド補完を追加しました。[ 7 ] 1983 年 10 月 3 日、Greer は net.sources ニュースグループにソースコードを投稿しました。[ 7 ]
重要な特徴
- コマンド履歴
- 組み込み
historyコマンドは、以前に入力したコマンドを表示します。 - ↑コマンドラインで/を使用すると、ユーザーは履歴からコマンドを選択して編集/実行できるようになります。↓
- コマンド履歴を使用して以前のコマンドを呼び出す
!!前のコマンドを実行する!n以前に実行されたn番目のコマンドを実行します!-nnコマンド前に実行されたコマンドを実行します!string文字列で始まる、最後に実行されたコマンドを実行します。!?string文字列を含む、最後に実行されたコマンドを実行します。
- 新しいコマンドで履歴を使用する
!*- 前のコマンドのすべての引数を参照します!$- 前のコマンドの最後の引数を参照します!^- 前のコマンドの最初の引数を参照します!:n-前のコマンドのn番目の引数を参照します!:m-n-前のコマンドのm番目から n番目の引数を参照します!:n-$-前のコマンドのn番目から最後の引数を参照します
- 組み込み
- コマンドライン編集
- ファイル名と変数の自動補完、およびコマンドラインでのプログラム可能な補完
- エイリアス引数セレクタ。エイリアスを定義し、指定された引数をそのエイリアスが参照するコマンドに適用する機能。tcsh は、この機能(関数の代わりに)を提供する唯一のシェルです。
\!#- エイリアス/コマンド自体を含むすべての引数の引数セレクター。引数を指定する必要はありません。\!*- エイリアス/コマンドを除くすべての引数の引数セレクター。引数を指定する必要はありません。\!$- 最後の引数の引数セレクター。引数を指定する必要はありませんが、引数を指定しない場合は、エイリアス名が最後の引数とみなされます。\!^- 最初の引数の引数セレクター。引数を指定する必要があります。\!:n- n番目の引数の引数セレクター。引数は必ず指定する必要があります。n=0 はエイリアス/コマンド名を参照します。\!:m-n- m番目からn番目の引数の引数セレクター。引数は必ず指定する必要があります。\!:n-$- n番目から最後の引数までの引数セレクター。少なくとも引数 n を指定する必要があります。\!:n*- n番目から最後の引数までの引数セレクター。十分な数の引数を指定する必要はありません。#cd コマンドにエイリアスを設定すると、ディレクトリを変更したときにその内容がすぐに表示されます。alias cd 'cd \!* && ls'
- ワイルドカードマッチング
if ( "$input" = ~ [ 0-9 ] * ) then echo "入力は整数で始まっています" else echo "入力は整数で始まっていません" endif
- ジョブ制御
- 組み込み
whereコマンド。whichコマンドと同じように動作しますが、使用されるディレクトリだけでなく、指定されたディレクトリ内にある対象コマンドのすべての場所を表示します。$PATH
展開
初期のバージョンのMac OS Xではtcshがデフォルトのシェルとして出荷されていましたが、10.3以降は新規アカウントのデフォルトがbashになり、10.15以降はzshになりました。(tcshは現在も提供されており、OSをアップグレードしても既存のアカウントのシェルは変更されません)。tcshは、14.0より前のFreeBSD (既にデフォルトのユーザーシェルであったAlmquistシェル派生版に切り替えた) [ 15 ]と、その後継であるDragonFly BSDやDesktopBSDのデフォルトのルートシェルでした。
参照
参考文献
- ^ “リリース 6.24.16” . 2025年7月9日. 2025年7月18日閲覧。
- ^ 「著作権の第3条を削除する」 GitHub 。 2002年3月8日。
- ^ 「著作権の第3条を削除(2002年3月8日に他のファイルも変更)」 GitHub 。 2014年7月14日。
- ^ 「Tcsh-6.00 リリース」 . GitHub . 1991年7月4日.
- ^ 「Linux ユーザー向け FreeBSD クイックスタート ガイド」。
- ^ 「Linux ユーザーのための OpenBSD」。
- ^ a b c d Ken Greer (1983年10月3日). 「コマンドとファイル名の認識/補完機能を備えたCシェル」 .ニュースグループ: net.sources . 2010年12月29日閲覧。
- ^ tcsh(1) マニュアルページ。tcsh。
- ^ 2000 年 6 月の tcsh-17 でファイルを修正しました。
- ^ Ubuntu - パッケージ csh の詳細。launchpad.net。
- ^ Debian - パッケージ csh の詳細。tracker.debian.org。
- ^ Ubuntu - パッケージ tcsh の詳細。launchpad.net。
- ^ Debian - パッケージ tcsh の詳細。tracker.debian.org。
- ^ “The T in tcsh” . 2012年4月14日時点のオリジナルよりアーカイブ。2013年10月31日閲覧。
- ^ 「FreeeBSD 14.0 リリースノート」。