Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

INotWant/TShell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

2 Commits

Repository files navigation

TShell

This is a toy shell, so it's called TShell.

1 安装

1.1 准备

  • 环境
    • 系统: Ubuntu 18.04.1 (注:Linux 发行版应该都可以)
    • 构建工具:cmake 3.14.2
  • 第三方依赖 readline
    • 官网:GNU readline
    • 安装方式:sudo apt-get install libreadline-dev

1.2 编译

  • 第一步
    • 在工程根目录执行:cmake CMakeLists.txt
  • 第二步
    • 第一步成功后,再在工程根目录执行:make

上面两个步骤执行成功后,你会看到在工程根目录里面多了一个可执行文件:TShell 此时已经大功告成。接下来不妨玩玩 TShell,通过 ./TShell 打开它。

2 基本使用

2.1 支持的功能

  • 设置环境变量
  • 动态修改命令提示符
  • 输入、输出重定向
  • 作业控制
  • 历史命令 & Tab补全
  • 退出

2.2 各功能详细介绍

2.2.1 设置环境变量

export 作为 TShell 的内部命令,提供一些操作环境变量的功能。

  • 用法:export export [-gn] [名称[=值] ...] 或 export -p
  • 说明:
    • export -g [名称 ...] 查询指定名称对应的值,一次可查询多个
    • export -d [名称 ...] 删除指定名称的环境变量,一次可删除多个
    • export -p 显示所有环境变量
    • export [名称[=值] ...] 添加环境变量

2.2.2 动态修改命令提示符

TShell 支持动态修改命令提示符。

在使用 TShell 过程中只需要把 CMD_SYM 环境变量修改为想要设定的命令提示符即可完成修改。

以下演示将命令提示符从 -> 修改为 %:

修改命令提示符

2.2.3 输入、输出重定向

> < >> 为 TShell 的重定向标识符。

使用说明:

  1. 重定向标识符说明
    • > 用作输出重定向(默认为标准输出)
    • < 用作输入重定向
    • >> 用作追加重定向(默认为标准输出追加)
  2. TShell 中重定向标识符前的 0 1 2 有特殊含义:
    • 0 标准输入
    • 1 标准输出
    • 2 标准错误
  3. TShell 中重定向标识符后的 "&0" "&1" "&2" 有特殊含义:
    • "&0" 引用 fd0
    • "&1" 引用 fd1
    • "&2" 引用 fd2
  4. 注意:在使用重定向时需要用空白字符划分,这是与标准 shell 不同的
    • ls > a 2 > &1 --> 正确
    • ls >a --> 错误,此处把 >a 作为一个文件
    • ls > a 2>&1 --> 错误, 2>&1 应写为 2 > &1(标准错误重定向)
    • [注] 该设计造成 0 1 2 做命令参数时需要加 '' 单引号:
      • ls '2' > a.txt --> 2 不表示标准错误重定向,而作为 ls 的一个参数

以下为一个简单的演示案例:

重定向演示

2.2.4 作业控制

TShell 提供作业控制功能,支持的命令有:jobs fg bg

使用说明:

  1. jobs
    • Usage: jobs [-rs]
    • 作用: 查看后台运行作业的状态。
    • 选项: 其中,选项 r 列出所有正在运行中的; 选项 s 列出所有正停止的
  2. fg
    • Usage: fg 作业标号
    • 作用: 将指定后台作业切换至前台运行
  3. bg
    • Usage: bg 作业标号
    • 作用: 继续在后台运行已停止的作业
  4. 其他
    • 可以通过 ctrl+z 组合键将正在执行前台作业暂停并置于后台

以下为一个简单的演示案例:

作业控制演示

2.2.5 历史命令 & Tab补全

TShell 支持历史命令:

  • 支持使用 or 上翻 或 下翻 已输入的命令;
  • 支持使用 ctrl+r 查阅历史命令。

TShell 支持 Tab补全:

  • 在命令行输入的第一个单词下,按 Tab 将补全命令;
  • 在其他情况下将补全本地文件夹下的文件;

以下为一个简单的演示案例:

历史命令&Tab补全

2.2.6 退出

TShell 支持使用 exit or ctrl+c 退出。如下:

退出演示

About

This is a toy shell, so it's called `TShell`.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /