utshell用户手册

介绍

utshell是使用rust语言对bash命令处理器的重开发,是一个延续了bash使用习惯的全新shell,它能够与用户进行命令行交互,响应用户的操作去执行命令并给予反馈,并且能执行shell脚本。主要功能如下:

  • 执行内置命令:utshell自带的命令
  • 执行外部命令:第三方软件提供的命令
  • 执行脚本:执行命令集合
  • 作业控制:控制进程的前后台运行、停止、结束等

安装和卸载

安装

utshell 使用 yum 命令进行安装,使用openEuler 24.03 (LTS-SP3)系统进行演示:

进入命令行界面执行,根据提示输入y,即可安装成功。

image-20260119134832142

卸载

在命令行执行yum remove utshell即可卸载 utshell。

image-20260119135617158

使用说明

检查shell环境

使用命令:echo $0

结果显示为utshell,则是在utshell环境中,如下图所示:

image-20260119144502113

调用utshell

命令格式:

bash
utshell [GNU long option] [option] ...
utshell [GUN long option] [option] script-file ...

长参数

参数参数说明
--debugger设置在shell启动前执行调试器配置文件
--dump-po-string以‘$’开头的所有双引号字符串的列表以GNU gettext PO(可移植对象)文件格式打印在标准输出上
--dump-strings将双引号内的字符串字面量输出到标准输出
--help显示帮助信息
--init-file filename在交互式shell中执行filename的命令(而不是~/.bashrc)
--loginbash 以登录 shell(login shell)的方式启动
--noprofile当utshell作为登陆shell被调用时,不要加载全系统的启动文件/erc/profile或任何个人的初始化文件~/.bash_profile、~/.bash_login或~/.profile
--norc不要在交互式shell中读取~/.bashrc初始化文件
--posix改变utshell在默认操作与POSIX标准不同的情况下的行为,已符合标准这旨在让utshell的行为成为该标准的一个严格的超集
--restricted使shell成为受限的shell
--verbose在执行脚本或者命令行是输出详细信息
--version显示版本信息

常用长参数介绍

  1. --help 显示utshell帮助信息 image-20260120135413870

  2. --version显示版本信息 image-20260120135449529

短参数

调用utshell时可以使用的参数如表所示:

参数参数说明
-c读取并执行第一个非选项参数command_string中的命令,然后退出。
-i强制shell以交互方式运行
-lbash 以登录 shell(login shell)的方式启动
-r使shell成为受限的shell
-s使utshell从stdin读取命令,并接受位置参数
-D将双引号内的字符串字面量输出到标准输出
[-+]O [shopt_option]-O设置shopt_option的值+O取消设置
--选项结束,禁止进一步的选项处理。在--之后的任何参数都被视为文件名和参数

常用短参数介绍

  1. -c 参数 1.1 使用utshell执行ls -l命令,执行结果如下图所示: image-20260119144750700 1.2 在utshell-c.sh脚本中执行a.sh脚本,需要两个脚本都有可执行权限,执行结果如下图所示:

    image-20260119144750700

内置命令

utshell的内置命令如下表所示,某个命令的具体使用方式可以使用 xxx --help命令查看,如下图所示:

内建命令
aliasevalpopdtypeset
bgexecprintfulimit
bindexitpushdumask
breakexportpwdunalias
builtinfalsereadunset
callerfcreadarraywait
cdfgreadonly
commandfunctionreturn
compgengetoptsset
completehashshift
compopthelpshopt
coprochistorysource
declarejobssuspend
dirskilltime
disownlocaltimes
echologouttrap
enablemapfiletype

image-20260119144750700

关键字

utshell中的保留关键字如下表所示:

关键字含义
!逻辑非
break跳出for、while、until、select循环
case多重选择
continue到达下次for、while、until、select循环
dofor、while、until、select循环的一部分
donefor、while、until、select循环的一部分
elifif结构的一部分
elseif结构的一部分
esaccase的一部分
fiif循环的一部分
forfor循环的一部分
ifif循环的一部分
incase、for、select循环的一部分
select生成菜单
thenif结构的一部分
time输出命令执行时间
until一种循环结构
while一种循环结构

常见关键字使用介绍

if语法格式
  1. 语法格式:

    bash
    if conditionl
    then
        command1
    elif condition2
    then
        command2
    else
        commandn
    fi
  2. 条件操作符

    操作符含义
    -f文件是否存在,并且是一个普通文件
    -d是否是目录
    -h是否是符号链接
    -s文件是否存在,且不为空
    -r文件是否可读
    -w文件是否可写
    -x文件是否可执行
    -lt小于
    -gt大于
    -ge大于等于
    -le小于等于
    -ne不等于
    ==/=判断两个字符串是否相等
    !=两个字符串不等
    -z字符串空,返回true
    -n长度不是0,返回true
for循环

语法格式:

bash
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
while语句

语法格式:

bash
while condition
do
    command
done
until循环

语法格式:

bash
until condition
do
    command
done
case ... esac匹配
  1. 功能:多选择语句,与其他语言中的switch ... case语句类似,是一种多分支选择结构,每个case分支用右圆括号开始,两个分号结束。可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

  2. 语法格式:

    bash
    casein
    模式1)
        command1
        command2
        ...
        commandN
        ;;
    模式2)
        command1
        command2
        ...
        commandN
        ;;
    esac
select 生成菜单
  1. 功能:将列表中的数据生成菜单。

  2. 语法格式:

    bash
    select $var in ${list[@]}
    do
    statements that can use $var
    done
  3. 示例:

    image-20260119144750700

相关说明

配置文件

/etc/profile文件

该脚本会遍历/etc/profile.d/目录下的所有以.sh结尾的文件和/etc/profile.d/sh.local文件,并根据当前的shell选项标志决定是否执行这些脚本。如果shell选项标志包含i,则脚本会直接执行;否则,脚本的输出会被丢弃。这通常用于系统启动时自动加载一系列配置脚本。并且在该脚本中还有一个作用就是在非登陆shell中避免重复加载和运行/etc/utshellrc

/etc/utshellrc文件

utshell的主要配置文件,主要设置如下内容:

  • 终端显示utshell提示符样式
  • 打开并行历史记录功能
  • 将当前的历史记录写入到历史文件中
  • 根据终端窗口变化自动调整utshell窗口
  • 在非登录shell中设置环境变量和权限掩码,并执行一些初始化脚本
  • 计算OMP_NUM_THREADS

~/.utshell_profile和~/.utshellrc文件

~/.utshell_profile中主要是执行~/.utshellrc脚本和将$HOME/bin添加到PATH环境变量的末尾,并且导出PATH。 ~/.utsehllrc脚本中主要是命令别名的设置和执行/etc/utshellrc脚本。

shell模式

登录模式

login shell 是指通过输入用户名和密码后取得的shell,输入echo $0后显示-utshell 首先,登陆shell首先会读取/etc/profile文件。这个文件通常会调用/etc/sysconfig/i18n来设置终端的语言信息,调用/etc/inputrc来设置终端的输入方式,还会调用/etc/profile.d/目录下的*.sh脚本文件和/etc/locale.conf文件。 其次,系统会读取用户家目录下的 .utshell_profile、.utshell_login、.profile三个文件。一般来说,系统只执行这三个文件中的一个。如果这些文件中存在读取~/.utshellrc,那么在登录时,系统会读取~/.utshellrc文件。交互登陆shell退出时会读取~/.utshell_logout文件。 因此,当用户登录shell时,会先读取/etc/profile,再读取~/.utshellrc。文件读取顺序如下图所示:

image-20260119144750700

非登录shell

non-login shell 指没有通过输入用户名和密码得到的shell,输入echo $0 后显示utshell。非登陆shell读取的配置文件为~/.utshellrc,文件执行顺序如图所示:

image-20260119144750700