370 likes | 617 Views
Linux 操作系统 shell 和常用命令. 周炯 上海艾基信息技术有限公司. 内容提要. 1 shell 2 进程和 shell 命令行 2 常用命令. 1 、使用 SHELL. 1.1 什么是 Shell 1.2 系统中有几种 Shell 1.3 Shell 脚本. 1.1 什么是 Shell. shell 提供了一个到 Linux 操作系统的界面以方便运行程序。事实上, shell 也只不过是另外一个 Linux 操作系统程序而已。
E N D
Linux操作系统shell和常用命令 周炯 上海艾基信息技术有限公司 Acegene IT Co. Ltd.
内容提要 • 1 shell • 2 进程和shell 命令行 • 2 常用命令 Acegene IT Co. Ltd.
1、使用SHELL • 1.1 什么是Shell • 1.2 系统中有几种Shell • 1.3 Shell脚本 Acegene IT Co. Ltd.
1.1 什么是Shell • shell提供了一个到Linux操作系统的界面以方便运行程序。事实上,shell也只不过是另外一个Linux操作系统程序而已。 • shell是一个命令解释器,它可以用来启动、挂起、停止甚至编写程序。shell是Linux操作系统的一个整体组成部分,也是Linux操作系统和UNIX设计的一部分。 Acegene IT Co. Ltd.
1.1 什么是Shell • 如果把Linux操作系统的内核想象成一个球体的中心,那么shell就是包围内核的外层。从shell或其他程序向Linux操作系统传递命令的时候,内核就会做出相应的反应。 • 用户Shell配置的位置/etc/passwd Acegene IT Co. Ltd.
1.2 shell • 这种shell的内建命令都有哪些? • 怎样进行任务控制? • 这种shell是否支持命令行编辑? • 这种shell是否支持命令行历史记录? • 什么是它的重要的开机启动文件或者配置文件? • 各个shell的重要环境变量有哪些? • 可以使用什么样的命令行提示符? • 它支持什么样的编程框架? Acegene IT Co. Ltd.
1.2 系统中有几种Shell • ash袖珍的sh兼容的shell • 由Kenneth Almquist编写的ash shell是Linux操作系统上尺寸最小的shell之一。这个shell有24个不同的内建命令和10个不同的命令行参数。 • bash Bourne Again Shell(与ksh和sh兼容) • bash就是由Brian Fox和Chet Ramey编写的Bourne Again Shell,它是Linux操作系统上最流行的shell之一。 • csh对tcsh的一个符号链接 • ksh pdksh,公共域Korn(与ksh兼容)shell • pdksh shell在Linux操作系统中叫做ksh。这个shell和商业化UNIX中的版本几乎是完全兼容的。 • sh 对bash的一个符号链接 • tcsh与csh兼容的shell • zsh Z-shell,一个与csh、ksh、和sh兼容的shell Acegene IT Co. Ltd.
1.2.2 bash • bash就是由Brian Fox和Chet Ramey编写的Bourne Again Shell,它是Linux操作系统上最流行的shell之一。它有48个内建的命令和十多个命令行参数。 • 可以使用方向键查阅以前输入的命令(历史记录功能) • 可以对某个命令行进行编辑 • 敲入命令的一部分然后再按下Tab键获得其他部分 • 自动执行脚本 • 初始化设置文件/etc/rc /etc/bashrc /etc/profile • 用来设置全局(对所有用户都起作用的)参数,比如环境变量或者在第一次登录进入的时候给你发送一条消息(比如一条欢迎标语)。 • 用户子目录中的.bashrc登录文件 • 控制bash shell启动运行方式或者对不同的击键(如退格键)的响应; • 用户子目录中.bash_profile文件, • 通知s h e l l在用户登录后系统应该使用哪一个资源文件。 Acegene IT Co. Ltd.
1.3 建立Shell命令脚本程序 • shell script (脚本文件) • 编辑文件 • 将其所有命令写入到该文件中, • 添加执行权限 • 将该文件设置为可以执行 • 运行 Acegene IT Co. Ltd.
2 Shell命令行和进程 • 2.1 对shell进行定制设置 • 2.2 进程管理 • 2.3 使用重定向和管道 Acegene IT Co. Ltd.
2.1 对shell进行定制设置 • shell包含了“环境变量” • 重要的就是$PATH变量 • $PS1变量 • alias命令 • 显示环境变量 • printenv • env • set • 环境变量由资源文件预先定义 • bash shell全局性系统环境变量的资源文件 • /etc/rc • /etc/bashrc • /etc/profile • 用户定制的系统环境变量 • ~/.bashrc • ~/.bash_profile Acegene IT Co. Ltd.
2.2 进程的定义 • Linux是一个多用户多任务的操作系统。 • 多用户是指多个用户可以在同一时间使用计算机系统; • 多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 • Linux用分时管理方法使所有的任务共同分享系统资源。 • 进程: Linux系统上所有运行的程序都可以称之为一个进程。 • 进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。 • 进程与程序是有区别的, • 程序只是一个静态的指令集合,不占系统的运行资源; • 进程不是程序,虽然它由程序产生。进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。 Acegene IT Co. Ltd.
2.2 在后台运行程序 • 后台运行程序的意思是这个命令继续在内存中执行,而在这同时shell命令行的控制权已经返回到了控制台。 • 对巨型文件进行排序或者对子目录和其他类型的文件系统进行搜索等等操作都是可以放到后台去执行的好例子。 • 运行一个进程命令格式: 进程名 & nohup 进程名 & Acegene IT Co. Ltd.
2.2 报告进程状况 PS • ps命令是进程查看命令。 • ps命令语法格式如下: ps [option] ps ax ps -ef • 常用选项说明如下: • -e:显示所有进程。 • -f:全格式。 • -u:打印用户格式,显示用户名和起始时间。 • ps 重要的输出字段 • USER 进程所有者的用户名 • PID 进程号 • STAT 进程状态,常见的值有: • R: 可执行的。 • S: 睡眠状态。 • Z: 僵尸。 • I: 空闲。 Acegene IT Co. Ltd.
2.2 结束进程 kill • 结束进程的办法有: • <Ctrl+c>组合键: 当需要中断一个前台进程的时候,通常是使用<Ctrl+c>组合键; • kill命令: 该命令可以终止后台进程。 • kill命令的语法格式很简单,大致有以下两种方式: • kill [-s 信号 | -p ] [ -a ] 进程号 • kill -l [信号] • 命令中的参数说明如下: • -s:指定需要送出的信号。既可以是信号名也可以对应数字。 • -p:指定kill命令只是显示进程的pid,并不真正送出结束信号。 • -l:显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到。 Acegene IT Co. Ltd.
2.2 休眠进程 • sleep命令可使当前正在执行的进程在规定的时间内处于睡眠。其使用的语法格式为: $ sleep [time] • time为进程将睡眠的时间,以秒为单位 Acegene IT Co. Ltd.
2.3 使用重定向和管道 • 重定向操作符:< mysql Database < sql.txt > help > helplist.txt >> help >> helplist.txt • 管道:| ps ax | grep ftpd | wc - l • 例子: • find /home -name *.doc | xargs fgrep administration | less • find *.doc | xargs cat | tr ' ' '\ n' | sort | uniq | tee dict | less Acegene IT Co. Ltd.
3、常用命令 • 3.1 使用man命令获得帮助 • 3.2 浏览及搜索文件系统 • 3.3 阅读子目录及文件 • 其他命令 • df、date、who、cp、mv、rm、mkdir、wc、vi、gcc、ln、nohup、nice、passwd、echo、mail、talk、du、grep、chown、chgrp、chmod、uname Acegene IT Co. Ltd.
3.1 使用man命令获得帮助 • man可以得到几乎所有命令的有关信息,包括man命令本身。 # man man • Linux操作系统发行版本也为几乎每个程序、工具、命令或系统编程调用编制了使用手册页。存放在/usr/man的子目录下。 • man命令的使用手册页文件被命名为: • /usr/man/man1/man.1.gz Acegene IT Co. Ltd.
3.2 浏览及搜索文件系统 • 3.2.1 使用cd命令进入不同的目录 • 3.2.2 使用pwd命令查看自己所在的位置 • 3.2.3 使用find命令在子目录中搜索匹配的文件 • 3.2.4 使用whereis命令查找文件 • 3.2.5 使用locate命令定位文件 • 3.2.6 使用whatis和apropos命令获取命令简介 Acegene IT Co. Ltd.
3.2.1 使用cd命令进入不同目录 • 输入cd命令,后面跟着一个路径名,就可以直接进入到另外一个子目录中去 • # cd /usr/bin • # cd .. • # cd ../.. • 你总能够用下面的命令回到自己的用户子目录(也就是保存自己文件的子目录): • # cd 或者 # cd ~ Acegene IT Co. Ltd.
3.2.2 pwd命令查看所在位置 • pwd(显示工作子目录)命令告诉你自己所在的位置,并显示当前工作子目录。例如,执行命令: • # cd /usr/bin • 接着输入: • # pwd • 会看到: • /usr/bin • 注意:pwd有内置命令和外部命令 Acegene IT Co. Ltd.
3.2.3 用find在子目录搜索文件 • find命令在硬盘驱动器上查找文件。 • -name 按名字查找。比如说,如果想查找子目录/usr中的spell命令,可以采用下面的方法: • # find /usr -name spell –print • -atime 按照日期查找文件,或者可以指定一个日期范围。例如查找最近一百天没有使用过的程序: • # find /usr/bin -type f -atime +100 –print • -mtime 按修改时间查找,如查找建立不到一天的新文件或者二十四小时内修改过的文件: • #find /usr/bin -type f -mtime -1 –print • -xdev 按Windows分区查找,xdev参数把查询操作限制在当前的文件系统之中,检索子目录下所有以.sys结尾的文件: • # find /mnt/dos -name *.sys -print –xdev Acegene IT Co. Ltd.
3.2.4 使用whereis命令查文件 • whereis命令 可以迅速地找到文件,而且提供二进制可执行文件、源代码文件和使用手册页存放的位置。 • 例如: # whereis (-b) find find:/usr/bin/find /usr/man/man1/find.1.gz Acegene IT Co. Ltd.
3.2.5 使用locate命令定位文件 • 文件名数据库(updatedb) • locate命令 在文件名数据库中检索文件名 • 检索要比搜索整个硬盘驱动器要快 # locate *.ps Acegene IT Co. Ltd.
3.2.6 whatis和apropos 命令简介 • whatis命令: 从程序使用手册中抽出介绍 • 例如: # whatis who who(1) - show who is logged on • makewhatis 创建数据库 • apropos命令: 查找可以执行某个操作的程序 • man -K: 实现apropos命令同样的功能 • 其搜索过程会很慢, • 搜索结果给出的是每个含有匹配字符串的使用手册页。 Acegene IT Co. Ltd.
3.3 阅读子目录及文件 • 3.3.1 使用ls/ll命令列出子目录的内容清单 • 3.3.2 使用dir和vdir命令列出子目录的内容清单 • 3.3.3 使用cat命令列出及合并文件 • 3.3.4 使用more命令阅读文件 • 3.3.5 使用less命令浏览文件 • 3.3.6 使用head或tail命令阅读文件的开头和结尾 Acegene IT Co. Ltd.
3.3.1 ls:列出子目录的内容清单 • ls : 列出子目录内容清单 • 常用参数: • -l 长文件名列表 • -a 显示所有文件(包括隐含文件) • -m 把文件用逗号分隔显示在一行上 • -x 按水平对齐的方式而不是缺省的垂直对齐方式列出文件 • -F 特殊显示目录和可执行文件 • -R 显示子目录 Acegene IT Co. Ltd.
3.3.2 ll, dir和vdir:子目录的内容清单 • ll命令: 相当于ls -l参数,它缺省地列出文件的全部信息。 • dir或vdir命令。使用上与ls命令类似,但是使用了一些缺省的参数。 • dir命令 像普通的ls命令那样把文件按列对齐输出。 • vdir命令 像ls -l参数,它缺省地列出文件的全部信息。 Acegene IT Co. Ltd.
3.3.3 cat:列出及合并文件 • cat命令: 把文件内容在屏幕上去显示。 • -n 在阅读文件时显示行号 # cat -n test.txt • cat 和重定向符“>” : cat命令通过输出“重定向”把文件内容送到其他的文件中去。如: # cat test* > test3.txt # cat test.txt test2.txt > test3.txt • cat和重定向符“>>” : 文件合并 # cat test.txt >> test2.txt • cat > : 创建新文件,输完文本内容后按下Ctrl+D组合键关闭这个文件。 # cat > myfile.txt Acegene IT Co. Ltd.
3.3.4 使用more命令阅读文件 • more命令: 页命令使你在浏览文件的时候可以一次阅读一屏或者一行。 # more longfile.txt • h”键获得帮助。 • 空格键阅读后一页,也可以 • b键阅读前一页。 • 惊叹号(!),从more命令中去执行其他的命令 Acegene IT Co. Ltd.
3.3.5 使用less命令浏览文件 • less命令 页命令 • 但功能比more命令更强大。Mark Nudelman编写, • less页命令是许多程序(man)的缺省页命令。 • /usr/bin/zless命令 阅读压缩文件(.gz) Acegene IT Co. Ltd.
3.3.6 head或tail:阅读开头结尾 • head命令: 用来显示文件开头x行:head -n x • tail命令: 一直跟踪显示文件变化 • tail -f filename Acegene IT Co. Ltd.
Q & Q U E S T I O N S A N S W E R S A
练习 • 用cat命令显示 .bash_profile 配置文件 • 用env, set显示环境变量 • 启动一个后台程序,然后杀掉该进程。 • # ping localhost & • 察看进程的ID ps • 杀掉该进程 kill • 练习重定向和管道 • 用man命令获得帮助信息 • 练习文件目录操作命令 cd pwd find whereis locate ls ll dir • 用 cat more less tail 命令操作文件 Acegene IT Co. Ltd.