小知识 | · shell是命令语言、命令解释程序及程序设计语言的统称。它不仅拥有自己内建的shell命令集,同时也能被系统中其他应用程序所调用。 · shell的一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。关于shell编程的详细讲解,感兴趣的读者可以参见其他相关书籍。 |
图2.1 内核、shell和用户的关系
选 项 | 参 数 含 义 |
-,-l,--login | 为该使用者重新登录,大部分环境变量(如HOME、SHELL和USER等)和工作目录都是以该使用者(USER)为主。若没有指定USER,缺省情况是root |
-m,-p | 执行su时不改变环境变量 |
-c,--command | 变更账号为USER的使用者,执行指令(command)后再变回原来使用者 |
小知识 | 环境变量实际上就是用户运行环境的参数集合。Linux是一个多用户的操作系统。而且在每个用户登录系统后,都会有一个专有的运行环境。通常每个用户默认的环境都是相同的,而这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 常见的环境变量如下。 ☆PATH是系统路径。 ☆HOME是系统根目录。 ☆HISTSIZE是指保存历史命令记录的条数。 ☆LOGNAME是指当前用户的登录名。 ☆HOSTNAME是指主机的名称,若应用程序要用到主机名,通常是从这个环境变量中来取得的。 ☆SHELL是指当前用户用的是哪种shell。 ☆LANG/LANGUGE是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。 ☆MAIL是指当前用户的邮件存放目录。 设置环境变量方法如下。 ü 通过echo显示字符串(指定环境变量)。 ü 通过export设置新的环境变量。 ü 通过env显示所有环境变量。 ü 通过set命令显示所有本地定义的shell变量。 ü 通过unset命令来清除环境变量。 读者可以试着用“env”命令查看“su - root”(或“su –”)和“su root”的区别。 |
命 令 | 命 令 含 义 | 格 式 |
useradd | 添加用户账号 | useradd [选项] 用户名 |
usermod | 设置用户账号属性 | usermod [选项] 属性值 |
userdel | 删除对应用户账号 | userdel [选项] 用户名 |
groupadd | 添加组账号 | groupadd [选项] 组账号 |
groupmod | 设置组账号属性 | groupmod [选项] 属性值 |
groupdel | 删除对应组账号 | groupdel [选项] 组账号 |
passwd | 设置账号密码 | passwd [对应账号] |
id | 显示用户ID、组ID和用户所属的组列表 | id [用户名] |
groups | 显示用户所属的组 | groups [组账号] |
who | 显示登录到系统的所有用户 | who |
选 项 | 参 数 含 义 |
-g | 指定用户所属的群组 |
-m | 自动建立用户的登入目录 |
-n | 取消建立以用户名称为名的群组 |
命 令 | 命 令 含 义 | 格 式 |
ps | 显示当前系统中由该用户运行的进程列表 | ps [选项] |
top | 动态显示系统中运行的程序(一般为每隔5s) | top |
kill | 输出特定的信号给指定PID(进程号)的进程 | kill [选项] 进程号(PID) |
uname | 显示系统的信息(可加选项-a) | uname [选项] |
setup | 系统图形化界面配置 | setup |
crontab | 循环执行例行性命令 | crontab [选项] |
shutdown | 关闭或重启Linux系统 | shutdown [选项] [时间] |
uptime | 显示系统已经运行了多长时间 | uptime |
clear | 清除屏幕上的信息 | clear |
选 项 | 参 数 含 义 |
-ef | 查看所有进程及其PID(进程号)、系统时间、命令详细目录、执行者等 |
-aux | 除可显示-ef所有内容外,还可显示CPU及内存占用率、进程状态 |
-w | 显示加宽并且可以显示较多的信息 |
选 项 | 参 数 含 义 |
-s | 将指定信号发送给进程 |
-p | 打印出进程号(PID),但并不送出信号 |
-l | 列出所有可用的信号名称 |
小知识 | 管道是Linux中信息通信的重要方式。它是把一个程序的输出直接连接到另一个程序的输入,而不经过任何中间文件。管道线是指连接两个或更多程序管道的通路。在shell中字符”|”表示管道线。如前例子中的ps –ef|grep ntp所示,ps –ef的结果直接输入到grep ntp的程序中(关于grep命令在后面会有详细的介绍)。grep、pr、sort和wc都可以在上述管道线上工作。读者可以灵活地运用管道机制 |
选 项 | 参 数 含 义 | 格 式 |
free | 查看当前系统内存的使用情况 | free [选项] |
df | 查看文件系统的磁盘空间占用情况 | df [选项] |
du | 统计目录(或文件)所占磁盘空间的大小 | du [选项] |
fdisk | 查看硬盘分区情况及对硬盘进行分区管理 | fdisk [-l] |
选 项 | 参 数 含 义 |
-a | 依照/etc/fstab的内容装载所有相关的硬盘 |
-l | 列出当前已挂载的设备、文件系统名称和挂载点 |
-t 类型 | 将后面的设备以指定类型的文件格式装载到挂载点上。常见的类型有前面介绍过的几种:vfat、ext3、ext2、iso9660、nfs等 |
-f | 通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用 |
小知识 | · 在Linux下如何使用U盘呢? 一般U盘为SCSI格式的硬盘,其格式为vfat格式,其设备号可通过“fdisk –l”进行查看,假若设备名为“/dev/sda1”,则可用如下命令将其挂载: mount -t vfat /dev/sda1 /mnt/usb · 若想设置在开机时自动挂载,可在文件“/etc/fstab”中加入相应的设置行即可。 |
选 项 | 参 数 含 义 |
-1,--format=single-column | 一行输出一个文件(单列输出) |
-a,-all | 列出目录中所有文件,包括以“.”开头的隐藏文件 |
-d | 将目录名和其他文件一样列出,而不是列出目录的内容 |
-l,--format=long, --format=verbose | 除每个文件名外,增加显示文件类型、权限、硬链接数、所有者名、组名、大小(Byte)及时间信息(如未指明是其他时间即指修改时间) |
-f | 不排序目录内容,按它们在磁盘上存储的顺序列出 |
注意 | Linux中的可执行文件不是与Windows一样通过文件扩展名来标识的,而是通过设置文件相应的可执行属性来实现的。 |
选 项 | 参 数 含 义 |
-m | 对新建目录设置存取权限,也可以用chmod命令(在本节后会有详细说明)设置 |
-p | 可以是一个路径名称。此时若此路径中的某些目录尚不存在,在加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
选 项 | 参 数 含 义 |
-n | 由第一行开始对所有输出的行数编号 |
-b | 和-n相似,只不过对于空白行不编号 |
选 项 | 参 数 含 义 |
-a | 保留链接、文件属性,并复制其子目录,其作用等于dpr选项的组合 |
-d | 复制时保留链接 |
-f | 删除已经存在的目标文件而不提示 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,而且是交互式复制 |
-p | 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中 |
-r | 若给出的源文件是一个目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名 |
选 项 | 参 数 含 义 |
-i | 若mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,并要求用户回答y或n,这样可以避免误覆盖文件 |
-f | 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,在指定此选项后,i选项将不再起作用 |
选 项 | 参 数 含 义 |
-i | 进行交互式删除 |
-f | 忽略不存在的文件,但从不给出提示 |
-r | 指示rm将参数中列出的全部目录和子目录均递归地删除 |
选 项 | 参 数 含 义 |
-c,-changes | 详尽地描述每个file实际改变了哪些所有权 |
-f,--silent,--quiet | 不打印文件所有权就不能修改的报错信息 |
小知识 | 在进行有关文件的操作时,若想避免输入冗长的文件,在文件名没有重复的情况下可以使用输入文件前几个字母+<Tab>键的方式,即:cd /uC<tab>会显示cd /uClinux-list |
选 项 | 参 数 含 义 |
-c | 若该文件权限确实已经更改,才显示其更改动作 |
-f | 若该文件权限无法被更改也不要显示错误信息 |
-v | 显示权限变更的详细资料 |
转换后八进制数 | 二 进 制 | 对 应 权 限 | 转换后八进制数 | 二 进 制 | 对 应 权 限 |
0 | 000 | 没有任何权限 | 1 | 001 | 只能执行 |
2 | 010 | 只写 | 3 | 011 | 只写和执行 |
4 | 100 | 只读 | 5 | 101 | 只读和执行 |
6 | 110 | 读和写 | 7 | 111 | 读、写和执行 |
想一想 | chmod o+x uClinux20031103.tgz是什么意思?它所对应的八进制数指定更改应如何表示? |
选 项 | 参 数 含 义 |
-c | 只输出匹配行的计数 |
-I | 不区分大小写(只适用于单字符) |
-h | 查询多文件时不显示文件名 |
-l | 查询多文件时只输出包含匹配字符的文件名 |
-n | 显示匹配行及行号 |
-s | 不显示不存在或无匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
小知识 | 在文件命令中经常会使用pattern正则表达式,它是可以描述一类字符串的模式(Pattern),如果一个字符串可以用某个正则表达式来描述,就称这个字符和该正则表达式匹配。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作等。 正则表达式的主要参数有如下 · \:忽略正则表达式中特殊字符的原有含义; · ^:匹配正则表达式的开始行; · $:匹配正则表达式的结束行; · <:从匹配正则表达式的行开始; · >:到匹配正则表达式的行结束; · [ ]:单个字符,如[A]即A符合要求; · [-]:范围,如[A-Z],即A、B、C一直到Z都符合要求; · 。:所有的单个字符; · *:所有字符,长度可以为0。 |
选 项 | 参 数 含 义 |
-depth | 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容 |
-mount | 不在其他文件系统(如Msdos、Vfat等)的目录和文件中查找 |
选 项 | 参 数 含 义 |
-name | 支持通配符*和? |
-user | 用户名:搜索文件属主为用户名(ID或名称)的文件 |
-print | 输出搜索结果,并且打印 |
选 项 | 参 数 含 义 |
-u | 从根目录开始建立数据库 |
-U | 在指定的位置开始建立数据库 |
-f | 将特定的文件系统排除在数据库外,例如proc文件系统中的文件 |
-r | 使用正则运算式做寻找的条件 |
-o | 指定数据库的名称 |
命 令 | 命 令 含 义 | 格 式 |
bzip2 | .bz2文件的压缩(或解压缩)程序 | bzip2[选项] 压缩(解压缩)的文件名 |
bunzip2 | .bz2文件的解压缩程序 | bunzip2[选项] .bz2压缩文件 |
bzip2recover | 修复损坏的.bz2文件 | bzip2recover .bz2压缩文件 |
gzip | .gz文件的压缩程序 | gzip [选项] 压缩(解压缩)的文件名 |
gunzip | 解压缩被gzip压缩过的文件 | gunzip [选项] .gz文件名 |
unzip | 解压缩winzip压缩的.zip文件 | unzip [选项] .zip压缩文件 |
compress | 早期的压缩或解压缩程序(压缩后文件名为.Z) | compress [选项] 文件 |
tar | 对文件目录进行打包或解压缩 | tar [选项] [打包后文件名]文件目录列表 |
选 项 | 参 数 含 义 |
-c | 将输出信息写到标准输出上,并保留原有文件 |
-d | 将压缩文件解压 |
-l | 对每个压缩文件,显示下列字段:压缩文件的大小、未压缩时文件的大小、压缩比、未压缩时文件的名字 |
-r | 查找指定目录并压缩或解压缩其中的所有文件 |
-t | 测试,检查压缩文件是否完整 |
-v | 对每一个压缩和解压的文件,显示文件名和压缩比 |
选 项 | 参 数 含 义 |
-c | 建立新的打包文件 |
-r | 向打包文件末尾追加文件 |
-x | 从打包文件中解出文件 |
-o | 将文件解开到标准输出 |
-v | 处理过程中输出相关信息 |
-f | 对普通文件操作 |
-z | 调用gzip来压缩打包文件,与-x联用时调用gzip完成解压缩 |
-j | 调用bzip2来压缩打包文件,与-x联用时调用bzip2完成解压缩 |
-Z | 调用compress来压缩打包文件,与-x联用时调用compress完成解压缩 |
文 件 后 缀 | 解 压 命 令 | 示 例 |
.a | tar xv | tar xv hello.a |
.z | Uncompress | uncompress hello.Z |
.gz | Gunzip | gunzip hello.gz |
.tar.Z | tar xvZf | tar xvZf hello.tar.Z |
.tar.gz/.tgz | tar xvzf | tar xvzf hello.tar.gz |
tar.bz2 | tar jxvf | tar jxvf hello.tar.bz2 |
.rpm | 安装:rpm –i | 安装:rpm -i hello.rpm |
解压缩:rpm2cpio | 解压缩:rpm2cpio hello.rpm | |
.deb(Debain中的文件格式) | 安装:dpkg –i | 安装:dpkg -i hello.deb |
解压缩:dpkg-deb --fsys-tarfile | 解压缩:dpkg-deb --fsys-tarhello hello.deb | |
.zip | Unzip | unzip hello.zip |
选 项 | 参 数 含 义 |
-r | 对目录进行递归处理 |
-q | 只报告文件是否有不同,不输出结果 |
-e,-ed | 命令格式 |
-f | RCS(修订控制系统)命令简单格式 |
-c,--context | 旧版上下文格式 |
-u,--unified | 新版上下文格式 |
-Z | 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩 |
小知识 | 上例中所使用的”>“是输出重定向。通常在Linux上执行一个shell命令行时,会自动打开3个标准文件:标准输入文件(stdin),即通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),前两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,并且将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。这就是通常使用的标准输入/输出方式。 直接使用标准输入/输出文件存在以下问题:首先,用户输入的数据只能使用一次。当下次希望再次使用这些数据时就不得不重新输入。同样,用户对输出信息不能做更多的处理,只能等待程序的结束。 为了解决上述问题,Linux系统为输入、输出的信息传送引入了两种方式:输入/输出重定向机制和管道(在1.3.1的小知识中已有介绍)。其中,输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。同样,输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就可以不显示在屏幕上,而是写入到指定文件中。就如上述例子中所用到的把“diff hello1.c hello2.c”的结果重定向到hello.patch文件中。这就大大增加了输入/输出的灵活性。 |
选 项 | 参 数 含 义 |
-b | 生成备份文件 |
-d | 把dir设置为解释补丁文件名的当前目录 |
-e | 把输入的补丁文件看作是ed脚本 |
-pnum | 剥离文件名中的前NUM个目录部分 |
-t | 在执行过程中不要求任何输入 |
-v | 显示patch的版本号 |
选 项 | 参 数 含 义 | 常见选项格式 |
netstat | 显示网络连接、路由表和网络接口信息 | netstat [-an] |
nslookup | 查询一台机器的IP地址和其对应的域名 | nslookup [IP地址/域名] |
finger | 查询用户的信息 | finger [选项] [使用者] [用户@主机] |
ping | 用于查看网络上的主机是否在工作 | ping [选项] 主机名/IP地址 |
ifconfig | 查看和配置网络接口的参数 | ifconfig [选项] [网络接口] |
ftp | 利用ftp协议上传和下载文件 | 在本节中会详细讲述 |
telnet | 利用telnet协议访问主机 | telent [选项] [IP地址/域名] |
ssh | 利用ssh登录对方主机 | ssh [选项] [IP地址] |
选 项 | 参 数 含 义 |
-interface | 指定的网络接口名,如eth0和eth1 |
up | 激活指定的网络接口卡 |
down | 关闭指定的网络接口 |
broadcast address | 设置接口的广播地址 |
poin to point | 启用点对点方式 |
address | 设置指定接口设备的IP地址 |
netmask address | 设置接口的子网掩码 |
选 项 | 参 数 含 义 |
-v | 显示远程服务器的所有响应信息 |
-n | 限制ftp的自动登录 |
-d | 使用调试方式 |
-g | 取消全局文件名 |
命 令 | 命 令 含 义 |
account[password] | 提供登录远程系统成功后访问系统资源所需的补充口令 |
ascii | 使用ASCII类型传输方式,为缺省传输模式 |
bin/ type binary | 使用二进制文件传输方式(嵌入式开发中的常见方式) |
bye | 退出ftp会话过程 |
cd remote-dir | 进入远程主机目录 |
cdup | 进入远程主机目录的父目录 |
chmod mode file-name | 将远程主机文件file-name的存取方式设置为mode |
close | 中断与远程服务器的ftp会话(与open对应) |
delete remote-file | 删除远程主机文件 |
debug[debug-value] | 设置调试方式, 显示发送至远程主机的每条命令 |
dir/ls[remote-dir][local-file] | 显示远程主机目录,并将结果存入本地文件local-file |
disconnection | 同close |
get remote-file[local-file] | 将远程主机的文件remote-file传至本地硬盘的local-file |
lcd[dir] | 将本地工作目录切换至dir |
mdelete[remote-file] | 删除远程主机文件 |
mget remote-files | 传输多个远程文件 |
mkdir dir-name | 在远程主机中建立一个目录 |
mput local-file | 将多个文件传输至远程主机 |
open host[port] | 建立与指定ftp服务器的连接,可指定连接端口 |
passive | 进入被动传输方式(在这种模式下,数据连接是由客户程序发起的) |
put local-file[remote-file] | 将本地文件local-file传送至远程主机 |
reget remote-file[local-file] | 类似于get,但若local-file存在,则从上次传输中断处继续传输 |
size file-name | 显示远程主机文件大小 |
system | 显示远程主机的操作系统类型 |
注意 | 由于该站点可以匿名访问,因此,在用户名处输入anonymous,在Password处输入任意一个e-mail地址即可登录成功。 |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |