Shell使用指南

From SylixOS-wiki
Jump to: navigation, search

Contents

什么是Shell

Shell是操作系统“外壳”程序,它向使用者提供一个基于命令行类型的使用界面,也可称作命令解析器,系统开发人员常使用此接口来操作计算机。几乎所有的操作系统都包含shell程序,例如Linux系统中较为常见的shell是bash程序,Windows系统中的shell程序是cmd.exe。SylixOS也不例外,SylixOS也包含自己的shell程序:ttinyShell,ttinyShell程序是系统开发人员操作SylixOS操作系统最为简单与便捷的接口,它与Linux系统shell规则非常相似,而最大的区别是ttinyShell运行在内核空间,它不是一个应用程序,所以ttinyShell不仅可以运行应用程序,而且内部内建了很多已经固化在SylixOS内核里的常用命令,ttinyShell程序运行界面如下图所示。

常用shell命令说明

本节将简要介绍部分常用的ttinyShell内建的命令,他们分为系统命令、文件命令、网络命令、时间命令、动态装载命令、其他命令这几部分,详细说明请使用help [keyword]在系统上查看。由于内核版本与裁剪配置不同,所以ttinyShell内建的命令在不同版本不同配置的SylixOS系统上可能会有些许区别。

系统命令

命令名		简要说明
help		显示ttinyShell所有内建命令列表,如果带有参数,则可显示以参数为名的命令介绍,例如help ls将介绍ls命令的介绍
free		查看系统当前内存信息
echo		回显命令,此命令将回显用户输入的参数
ts		查看系统中线程信息
tp		查看系统中被阻塞的线程信息
ss		查看系统中所有线程与中断系统堆栈使用情况
ps		查看系统所有进程的信息
ints		查看系统中断向量表信息
mems		查看操作系统内核内存堆与系统内存堆内存使用情况
zones		查看操作系统物理页面分区使用情况
env		查看操作系统全局环境变量表
varsave		保存当前的操作系统环境变量表。默认保存路径为/etc/profile
varload		从指定参数的文件中提取装载环境变量表,默认则从/etc/profile中提取
vardel		删除一个指定的系统环境变量
cpuus		测算当前cpu利用率
kill		向指定的线程或进程发送信号,默认发送SIGKILL信号
drvlics		显示系统中所有安装的驱动程序表
devs		显示系统中挂载的所有设备
buss		显示系统中挂载的所有总线信息
tty		显示当前shell终端对应的tty文件
clear		清除当前屏幕
aborts		显示当前操作系统异常处理统计信息
sprio		设置指定线程的优先级
renice		设置指定进程的优先级
hostname	显示或设置当前SylixOS镜像主机名
login		切换用户,重新登录
who		查看当前登录用户身份
shutdown	关闭或重启系统
monitor		启动、关闭或设置内核跟踪器
lspci		打印系统PCI总线与PCI设备相关信息
lsusb		打印系统USB总线与USB设备相关信息
which		检查参数指定的文件位置
exit		退出当前shell终端

文件命令

命令名		简要说明
ls		列出指定目录下的文件,默认为当前目录
ll		列出指定目录下的文件详细信息,默认为当前目录
files		列出系统内核中打开的文件信息(不包含进程打开的文件)
fdentrys	列出操作系统所有正在操作的文件信息(包含进程打开的文件)
sync		将所有系统缓存的文件、设备、磁盘信息全部写入到相应的物理设备中
logfileadd	向内核日志打印函数加入指定的内核文件描述符
logfileclear	从内核日志打印文件表中清除指定的内核文件描述符
logfiles	显示内核日志打印文件列表
loglevel	显示或设置当前内核日志打印等级
cd		切换当前目录
pwd		查看当前工作目
df		查看指定目录的文件系统信息,默认为当前目录
tmpname		获得一个可以创建的临时文件名
mkdir		创建一个目录
mkfifo		创建一个命名管道,注意:只能在根文件系统设备下创建
rmdir		删除一个目录
rm		删除一个文件
mv		移动或重命名一个文件
cat		查看一个文件的内容
cp		拷贝一个文件
cmp		比较一个文件
dsize		计算一个指定的目录包含的所有文件信息
chmod		设置文件或目录的权限位
mkfs		格式化指定的磁盘
shfile		执行指定的shell脚本
mount		挂载一个卷
umount		卸载一个卷
showmount	查看系统中所有已经挂载的卷
ln		创建符号链接文件
dosfslabel	查看fat文件系统卷标
fatugid		设置fat文件系统用户与组id
mmaps		显示系统mmap信息

网络命令

命令名		简要说明
route		添加、删除、修改或查看系统路由表
netstat		查看网络状态
ifconfig	配置网络接口信息
ifup		使能一个网络接口
ifdown		禁能一个网络接口
ifrouter	设置默认路由接口
arp		添加、删除或查看ARP表
ping		Ping命令
ping6		IPv6 Ping命令
tftpdpath	查看或设置tftp服务器本地路径
tftp		使用tftp命令接收或者发送一个文件
ftpds		显示ftp服务器信息
ftpdpath	查看或设置ftp服务器初始化路径
nat		启动、关闭或设置NAT虚拟网络地址服务
nats		查看当前NAT虚拟地址服务状态
npfs		查看网络数据包过滤器状态
npfruleadd	添加一条网络数据包滤波器规则
npfruledel	删除一条网络数据包过滤器规则
npfattach	在指定网络接口上使能网络数据包过滤器
npfdetach	在指定网络接口上禁能网络数据包过滤器

时间命令

命令名		简要说明
date		显示或设置系统时间
hwclock		显示或同步操作系统与硬件RTC时钟

动态装载命令

命令名		简要说明
debug		调试一个进程
dlconfig	配置动态链接器工作参数
modulereg	注册一个内核模块
moduleunreg	卸载一个内核模块
modulestat	查看一个内核模块或动态链接库文件信息
lsmod		查看系统装载的所有内核模块信息
modules		查看系统装载的所有内核模块与进程动态链接库信息

其他命令

命令名		简要说明
shstack		显示或者设置shell任务堆栈大小,设置仅对之后启动的shell有效
leakchkstart	启动系统内存泄露跟踪器
leakchkstop	关闭系统内存泄露跟踪器
leakchk		内存泄露检查
xmodems		使用xmodem协议发送一个文件
xmodemr		使用xmodem协议接收一个文件
untar		解包或解压缩一个tar或tar.gz文件包
gzip		压缩或解压缩一个文件
vi		启动vi编辑器

环境变量

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序将使用到的信息,一般用来指定操作系统或者应用程序运行环境的一些参数,比如临时文件夹位置和应用程序搜索位置等。通常环境变量的配置保存在/etc/profile文件中。
shell环境中保存了一份完整的环境变量定义表,系统启动时BSP会自动将此文件对环境变量的定义导入到shell环境中,用户可以使用env命令查看系统所有环境变量设置。当启动一个应用程序时,此份环境变量会导入到应用程序进程中(同时创建几个标示应用程序参数的环境变量,如HOME等)。
环境变量相当于给系统或用户应用程序设置的一些参数, 具体起什么作用这当然和具体的环境变量相关。SylixOS常用的环境变量如下表所示。
环境变量名		简要说明
XINPUT_PRIO		xinput子系统优先级
LANG			语言选择
LD_LIBRARY_PATH		动态装载器搜索路径
PATH			应用程序搜索路径
NFS_CLIENT_PROTO	NFS客户端协议
NFS_CLIENT_AUTH		NFS登录验证模式
SYSLOGD_HOST		syslogd远程地址
SO_MEM_PAGES		应用程序内存堆初始占用页面个数
TSLIB_TSDEVICE		触摸屏设备
MOUSE			xinput子系统侦测鼠标设备集
KEYBOARD		xinput子系统侦测键盘设备集
TZ			系统所在时区
TMPDIR			临时文件夹
用户同样可以在命令行中引用环境变量的值,引用格式为${VAR_NAME}。遇到此参数时ttinyShell会自动使用环境变量的内容来替代此${VAR_NAME}。例如:ttinyShell执行echo ${PATH}命令,系统将会回显PATH环境变量的内容。

根文件系统

SylixOS启动后自动挂载的第一个文件系统称为根文件系统,这里不同于Linux系统,SylixOS根文件系统是一个虚拟文件系统,掉电后不会保存对此文件系统的修改,所以SylixOS可以工作在没有非易失性存储器(通常为硬盘或其他磁盘存储器)的机器上。在此文件系统上,SylixOS会自动建立dev与mnt目录,其他标准目录则需要BSP在初始化阶段做挂载或者符号链接。
SylixOS使用的标准目录结构如下表所示。
目录名	简要说明
qt	Qt动态链接库与其他资源目录
tmp	临时目录
var	储存各种变化的文件目录,例如日志、缓冲文件等
root	root用户主目录
home	其他应用主目录
apps	应用程序目录
sbin	系统程序目录
bin	普通shell程序目录
usr	用户程序库与环境目录
lib	系统程序库与环境目录
etc	系统或其他应用程序配置文件目录
boot	操作系统启动镜像目录
usb	USB大容量设备独立挂载目录
proc	系统内核信息文件目录
mnt	动态文件系统挂载目录
dev	系统设备文件目录

运行应用程序

ttinyShell不仅可以运行内建的命令,而且还能运行用户应用程序。运行应用程序的方法与运行内建命令相同,当用户在shell界面下键入命令名称与参数点击回车后,ttinyShell将首先检测此命令是否为用户应用程序,如果是则优先运行用户应用程序,如果不是则再检测命令是否为内建命令,如果均不是则ttinyShell打印错误信息。
ttinyShell命令检测顺序如下所示:
1.检测命令是否为一个文件路径,如果文件存在,则运行指定的应用程序。
2.检测PATH环境变量指定的路径,如果文件存在,则运行指定的应用程序。
3.检测命令是否为一个内建命令,如果是内建命令,则运行内建命令。
ttinyShell运行内建命令或应用程序时有两种方式:同步方式和异步方式。
同步方式:inyShell运行内建命令时命令代码默认在ttinyShell线程上下文中执行,运行应用程序时ttinyShell会创建一个进程并在此进程中装入应用程序代码执行,同时ttinyShell自行阻塞并等待进程结束后恢复执行。
异步方式:当用户在键入的命令之后加入&符号,ttinyShell将以异步方式运行命令,当ttinyShell运行内建命令时,会创建一个内核线程运行命令代码,运行应用程序时ttinyShell会创建一个进程并在此进程中装入应用程序代码执行,与同步方式不同ttinyShell并不等待命令执行完毕就立即准备接收用户的下一条命令。

I/O重定向

每一个应用程序都有三个标准文件描述符(具体说明请查阅I/O系统一章):0、1、2。其中0代表标准输入,即scanf、getc等函数读取的文件;1代表标准输出,即printf、putc等函数写入的文件;2代表标准错误,即strerror等函数写入文件。
默认状态下ttinyShell将使用当前终端设备作为标准文件,ttinyShell创建出的进程将继承ttinyShell标准文件设置。当然用户也可以自行设置命令的标准文件,当命令字串后存在I/O重定向参数,则ttinyShell会分析重定向表达式然后设置应用新的标准文件描述符。设置方法如下:
1.需要将标准输出定义到file_path文件,则命令最后可添加参数:1>file_path。如需追加写入某个文件,则可使用:1>>file_path。定义标准错误文件的方法与标准输出文件类似,例如:2>file_path。注意:重定位符号>或<左右没有空格。
2.需要将标准输入定义到某文件,则命令最后可添加参数:0<file_path。
Personal tools
Namespaces

Variants
Actions
Navigation
Tools