맨위로가기

Tcsh

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Tcsh는 명령 완성 기능 등을 제공하는 셸로, 1975년 켄 그리어에 의해 개발되었다. C 셸의 기능을 포함하며, 명령 기록, 명령줄 편집, 와일드카드 일치, 작업 제어 등의 기능을 제공한다. macOS에서는 초기 버전에서 기본 셸로 사용되었으나, 이후 Bash, Z shell로 변경되었다. Tcsh는 FreeBSD 및 macOS에 내장되어 있으며, NLS(Native Language System) 카탈로그를 지원하여 다국어 메시지 표시가 가능하다.

더 읽어볼만한 페이지

  • 유닉스 셸 - 유닉스 계열
    유닉스 계열은 유닉스 운영체제의 특징과 설계를 공유하는 운영체제들을 지칭하며, 유전적, 상표, 기능적 유닉스로 분류되고 macOS는 상표 유닉스이자 유전적 유닉스에 해당하며 리눅스는 기능적 유닉스의 대표적인 예이다.
  • 유닉스 셸 - 본 셸
    본 셸은 스티븐 본이 개발하여 1979년 유닉스에 포함된 셸로, 셸 스크립트, 제어 흐름, 변수, 시그널 처리 등의 기능을 제공하며 여러 셸에 영향을 주었고 현재도 널리 사용된다.
  • 셸 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
  • 셸 - COMMAND.COM
    COMMAND.COM은 MS-DOS 운영체제에서 명령줄 인터페이스를 제공하는 명령어 해석기로, 파일 관리 및 프로그램 실행 등의 작업을 수행하며, 윈도우 9x에서 MS-DOS 호환성을 위해, FreeDOS에서는 핵심 구성 요소로 사용된다.
  • 텍스트 지향 프로그래밍 언어 - Tcl
    Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
  • 텍스트 지향 프로그래밍 언어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
Tcsh - [IT 관련 정보]에 관한 문서
기본 정보
유형유닉스 셸
개발자Ken Greer, Paul Placeway, Christos Zoulas 등
최신 버전6.24.14
최신 릴리스 날짜2024년 11월 26일
저장소GitHub 저장소
프로그래밍 언어C 언어
운영 체제크로스 플랫폼
라이선스BSD 허가서
웹사이트공식 웹사이트

2. 역사

카네기 멜런 대학교의 켄 그리어는 TENEX 운영 체제의 파일 이름 완성 기능에 영감을 받아 1975년 9월부터 tcsh 개발을 시작했다.[22][13] 1981년 12월, 이 기능은 C 셸에 통합되었다.[23][6] 1983년 9월, 마이크 엘리스가 명령어 완성 기능을 추가했고,[23][6] 같은 해 10월 3일, 그리어는 net.sources 뉴스그룹에 소스를 공개했다.[23][6]

2. 1. macOS에서의 변화

초기 버전의 Mac OS X는 tcsh를 기본 셸로 제공했지만, 새로운 계정의 기본 셸은 10.3 (Panther)부터 bash로, 10.15 (Catalina)부터 zsh로 변경되었다. (tcsh는 여전히 제공되며, 운영체제 업그레이드는 기존 계정의 셸을 변경하지 않는다.)[14][15][16] FreeBSD의 흐름을 잇는 macOS에서도 OS에 내장되어 있다(/bin/tcsh). Mac OS X v10.2까지는 tcsh가 기본 셸이었지만, v10.3부터 Linux의 표준 셸인 Bash가 기본 셸이 되었고, 2019년 10월의 Mac OS Catalina 이후부터는 zsh로 변경되었다.

3. 주요 기능

tcsh는 C 셸의 기능을 모두 포함하면서 다음과 같은 추가 기능을 제공한다.


  • 명령줄 자동 완성, 명령줄 편집 기능을 제공한다. 이는 TENEX 운영 체제에서 빌려온 것이다.[6]
  • 원래 C 셸과 하위 호환성을 유지한다.[7]
  • 매우 안정적이지만, 대부분 사소한 버그 수정으로 구성된 새로운 릴리스가 대략 연 1회 계속 출시되고 있다.[8]
  • macOS 및 Red Hat Linux와 같은 많은 시스템에서 `csh`는 실제로 `tcsh`이다.
  • Debian 및 일부 파생 제품(Ubuntu 포함)에는 `csh`와 `tcsh`의 두 가지 패키지가 있는데, 전자는 csh의 원래 BSD 버전을 기반으로 하며[9][10], 후자는 향상된 tcsh이다.[11][12]
  • 다른 일반적인 셸과 달리, 함수는 tcsh 스크립트에서 정의할 수 없으며 사용자는 대신 별칭을 사용해야 한다(csh와 같이).
  • 와일드카드를 사용하여 문자열 패턴을 비교할 수 있다.


```csh

if ( "$input" =~ [0-9]* ) then

echo "the input starts with an integer"

else

echo "the input does NOT start with an integer"

endif

3. 1. 명령 기록

기본 내장 명령어인 `history`는 이전에 입력한 명령어를 표시한다. 명령줄에서 위/아래 화살표 키를 사용하여 기록에서 명령어를 선택하여 편집/실행할 수 있다.

명령 기록을 사용하여 이전 명령어를 호출할 수 있다.

  • `!!`: 이전 명령어 실행.
  • `!n`: 이전에 실행한 n번째 명령어 실행.
  • `!-n`: n개의 명령어 전에 실행한 명령어 실행.
  • `!''string''`: ''string''으로 시작하는 가장 최근에 실행된 명령어 실행.
  • `!?''string''`: ''string''을 포함하는 가장 최근에 실행된 명령어 실행.


새 명령어에서 기록을 사용할 수 있다.

  • `!*`: 이전 명령의 모든 인수 참조.
  • `!$`: 이전 명령의 마지막 인수 참조.
  • `!^`: 이전 명령의 첫 번째 인수 참조.
  • `!:n`: 이전 명령의 n번째 인수 참조.
  • `!:m-n`: 이전 명령의 m번째부터 n번째까지의 인수 참조.
  • `!:n-$`: 이전 명령의 n번째부터 마지막 인수까지 참조.

3. 2. 명령줄 편집

파일 이름, 변수, 명령어 자동 완성 기능을 제공한다. 별칭(alias)을 사용하여 명령어 인수를 선택적으로 활용할 수 있다.[1]

명령줄에서 / 키를 사용하여 기록에서 명령어를 선택하여 편집/실행할 수 있다.[1]

별칭 인수 선택기를 통해 별칭을 정의하여 제공된 인수를 가져와서 참조하는 명령어에 적용할 수 있다. Tcsh는 이 기능을 제공하는 유일한 셸이다(함수 대신).[1]

인수 선택기설명
\!#별칭/명령어 자체를 포함한 모든 인수에 대한 인수 선택기. 인수를 제공할 필요가 없다.[1]
\!*별칭/명령어를 제외한 모든 인수에 대한 인수 선택기. 인수를 제공할 필요가 없다.[1]
\!$마지막 인수에 대한 인수 선택기. 인수를 제공할 필요가 없지만, 인수가 제공되지 않으면 별칭 이름이 마지막 인수로 간주된다.[1]
\!^첫 번째 인수에 대한 인수 선택기. 인수를 반드시 제공해야 한다.[1]
\!:nn번째 인수에 대한 인수 선택기. 인수를 반드시 제공해야 하며, n=0은 별칭/명령어 이름을 참조한다.[1]
\!:m-nm번째부터 n번째까지의 인수에 대한 인수 선택기. 인수를 반드시 제공해야 한다.[1]
\!:n-$n번째부터 마지막 인수까지의 인수에 대한 인수 선택기. 최소한 인수 n을 제공해야 한다.[1]
\!:n*n번째부터 마지막 인수까지의 인수에 대한 인수 선택기. 충분한 인수를 제공할 필요가 없다.[1]



다음은 디렉터리를 변경할 때 내용이 즉시 표시되도록 cd 명령어에 별칭을 지정하는 예시이다.[1]

```csh

alias cd 'cd \!* && ls'

3. 3. 작업 제어

Tcsh에서는 실행 중인 작업을 관리하고 제어할 수 있다. `where`는 기본 내장 명령어로, `which` 명령어와 비슷하게 작동하지만, 사용될 명령어만 표시하는 대신 `$PATH`에 지정된 디렉터리에서 대상 명령어의 모든 위치를 표시한다.[1]

3. 4. 와일드카드 일치

csh

if ( "$input" =~ [0-9]* ) then

echo "the input starts with an integer"

else

echo "the input does NOT start with an integer"

endif

```

와일드카드를 사용하여 문자열 패턴을 비교할 수 있다.

4. 환경

FreeBSD 4.1-RELEASE 이후부터 표준 셸로 내장되어 있다.[14][15][16] FreeBSD를 기반으로 하는 macOS에도 내장되어 있다(/bin/tcsh). Mac OS X v10.2까지는 tcsh가 기본 셸이었지만, v10.3부터 Bash가 기본 셸이 되었고, 2019년 10월 Mac OS Catalina 이후부터는 zsh로 변경되었다.[24][25] Debian 및 Ubuntu를 포함한 일부 파생 제품에는 `csh`와 `tcsh` 두 가지 패키지가 있다.[9][10][11][12]

5. 네이티브 언어 시스템 (NLS)

tcsh는 6.06 버전부터 NLS(네이티브 언어 시스템) 카탈로그를 지원하여, 프로그램 수정 없이 다양한 언어로 메시지를 표시할 수 있게 되었다.[18] 초기에는 일본어 지원을 위해 별도의 패치가 필요했지만, 6.07.11 버전부터 본체에 통합되었다. 간사이벤이나 토사벤 등 일본의 다양한 방언으로 메시지를 표시하는 카탈로그 파일도 제작되었다.[20]

5. 1. 일본 문화의 영향

tcsh 6.06 이후 버전에서는 NLS (Native Language System, [네이티브 언어 시스템]) 카탈로그를 지원한다.[18] 이는 프로그램 수정 없이 각종 메시지를 다국어화하는 기능이다. 일본어 지원의 경우 6.07.11 버전까지는 패치가 필요했다. 6.07.11 버전에서 패치가 본체에 통합되어, 이후 일본어 카탈로그 파일을 사용할 때 패치 없이 메시지를 표시할 수 있게 되었다.

한편, 일본어화 패치 제공자는 당시 선소프트(Sunsoft)의 격투 게임 『갤럭시 파이트 유니버설 워리어즈』의 등장 캐릭터 루미에게 모에하여, 루미의 말투를 흉내 낸 카탈로그 파일을 제대로 처리할 목적으로 패치를 제작했다고 한다.[19] 이 카탈로그 파일을 비롯하여, 멀티나 호시노 루리 등, 몇몇 모에 계열 캐릭터 말투의 카탈로그 파일은 과거 FreeBSD ports 컬렉션에 포함되었던 적이 있었다.[20]

참조

[1] 웹사이트 remove clause 3 of the copyright. https://github.com/t[...] 2002-03-08
[2] 웹사이트 Remove clause 3 of the copyright (changed in other files 2002-03-08). https://github.com/t[...] 2014-07-14
[3] 웹사이트 Tcsh-6.00 release https://github.com/t[...] 1991-07-04
[4] 웹사이트 FreeBSD Quickstart Guide for Linux Users https://docs.freebsd[...]
[5] 웹사이트 OpenBSD for Linux Users https://www.openbsdh[...]
[6] 뉴스그룹 C shell with command and filename recognition/completion https://groups.googl[...] 1983-10-03
[7] 문서 tcsh(1) man page https://web.archive.[...] tcsh
[8] 문서 Fixes file in tcsh-17 June 2000
[9] 문서 Ubuntu - Details of package csh http://packages.ubun[...] Packages.ubuntu.com
[10] 문서 Debian - Details of package csh https://tracker.debi[...] Packages.debian.org
[11] 문서 Ubuntu - Details of package tcsh http://packages.ubun[...] Packages.ubuntu.com
[12] 문서 Debian - Details of package tcsh https://tracker.debi[...] Packages.debian.org
[13] 웹사이트 The T in tcsh https://web.archive.[...] 2013-10-31
[14] 서적 Sams teach yourself FreeBSD in 24 hours https://books.google[...] Sams Publishing
[15] 문서 POSIX 2008 Shell Command Language http://pubs.opengrou[...]
[16] 웹사이트 FreeBSD Quickstart Guide for Linux Users https://docs.freebsd[...] 2024-02-04
[17] 웹사이트 Manpage of TCSH http://linuxjm.osdn.[...]
[18] 문서 配布ファイルのNewThings(更新履歴に相当)に記載。
[19] 웹사이트 tcsh日本語オリジナルカタログ配布ページ http://www2.wbs.ne.j[...]
[20] 웹사이트 ports/japanese/tcsh-nls-roomi のattic行きになる前のports状態 http://www.freebsd.o[...]
[21] 웹인용 tcsh-6.20.00 is now available! http://mx.gw.com/pip[...] 2016-11-24
[22] 웹인용 The T in tcsh http://www.tcsh.org/[...]
[23] 뉴스그룹 C shell with command and filename recognition/completion http://groups.google[...] 1983-10-03
[24] 서적 Sams teach yourself FreeBSD in 24 hours https://books.google[...] Sams Publishing
[25] 문서 POSIX 2008 Shell Command Language http://pubs.opengrou[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com