Linux 操作系统 shell 和常用命令

Preview:

DESCRIPTION

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 操作系统程序而已。 - PowerPoint PPT Presentation

Citation preview

Acegene IT Co. Ltd. 1

Linux 操作系统shell 和常用命令

周炯周炯上海艾基信息技术有限公司上海艾基信息技术有限公司

Acegene IT Co. Ltd. 2

内容提要• 1 shell• 2 进程和 shell 命令行• 2 常用命令

Acegene IT Co. Ltd. 3

1 、使用 SHELL• 1.1 什么是 Shell• 1.2 系统中有几种 Shell• 1.3 Shell 脚本

Acegene IT Co. Ltd. 4

1.1 什么是 Shell• shell 提供了一个到 Linux 操作系统的界面以方便运行程序。事实上, shell 也只不过是另外一个 Linux 操作系统程序而已。• shell 是一个命令解释器,它可以用来启动、挂起、停止甚至编写程序。 shell 是 Linux操作系统的一个整体组成部分,也是 Linux操作系统和 UNIX 设计的一部分。

Acegene IT Co. Ltd. 5

1.1 什么是 Shell• 如果把 Linux 操作系统的内核想象成一个球体的中心,那么 shell 就是包围内核的外层。从 shell 或其他程序向 Linux 操作系统传递命令的时候,内核就会做出相应的反应。• 用户 Shell 配置的位置/etc/passwd

Acegene IT Co. Ltd. 6

1.2 shell• 这种 shell 的内建命令都有哪些?• 怎样进行任务控制?• 这种 shell 是否支持命令行编辑?• 这种 shell 是否支持命令行历史记录?• 什么是它的重要的开机启动文件或者配置文件?• 各个 shell 的重要环境变量有哪些?• 可以使用什么样的命令行提示符?• 它支持什么样的编程框架?

Acegene IT Co. Ltd. 7

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. 8

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. 9

1.3 建立 Shell 命令脚本程序• shell script (脚本文件)

– 编辑文件•将其所有命令写入到该文件中,

– 添加执行权限•将该文件设置为可以执行

– 运行

Acegene IT Co. Ltd. 10

2 Shell 命令行和进程• 2.1 对 shell 进行定制设置• 2.2 进程管理• 2.3 使用重定向和管道

Acegene IT Co. Ltd. 11

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. 12

2.2 进程的定义• Linux 是一个多用户多任务的操作系统。

– 多用户是指多个用户可以在同一时间使用计算机系统;– 多任务是指 Linux 可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 – Linux 用分时管理方法使所有的任务共同分享系统资源。

• 进程 : Linux 系统上所有运行的程序都可以称之为一个进程。– 进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。– 进程与程序是有区别的,

• 程序只是一个静态的指令集合,不占系统的运行资源;• 进程不是程序,虽然它由程序产生。进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。

Acegene IT Co. Ltd. 13

2.2 在后台运行程序• 后台运行程序的意思是这个命令继续在内存中执行,而在这同时 shell 命令行的控制权已经返回到了控制台。

– 对巨型文件进行排序或者对子目录和其他类型的文件系统进行搜索等等操作都是可以放到后台去执行的好例子。• 运行一个进程命令格式:进程名 & nohup 进程名 &

Acegene IT Co. Ltd. 14

2.2 报告进程状况 PS• ps 命令是进程查看命令。• ps 命令语法格式如下: ps [option] ps axps -ef

– 常用选项说明如下: • -e:显示所有进程。• -f :全格式。• -u:打印用户格式,显示用户名和起始时间。

• ps 重要的输出字段– USER 进程所有者的用户名– PID 进程号– STAT 进程状态,常见的值有:

• R: 可执行的。• S: 睡眠状态。 • Z: 僵尸。• I: 空闲。

Acegene IT Co. Ltd. 15

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. 16

2.2 休眠进程• sleep 命令可使当前正在执行的进程在规定的时间内处于睡眠。其使用的语法格式为:

$ sleep [time]– time为进程将睡眠的时间,以秒为单位

Acegene IT Co. Ltd. 17

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. 18

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. 19

3.1 使用 man 命令获得帮助• man 可以得到几乎所有命令的有关信息,包括man 命令本身。# man man• Linux 操作系统发行版本也为几乎每个程序、工具、命令或系统编程调用编制了使用手册页。存放在 /usr/man 的子目录下。• man 命令的使用手册页文件被命名为:

– /usr/man/man1/man.1.gz

Acegene IT Co. Ltd. 20

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. 21

3.2.1 使用 cd 命令进入不同目录• 输入 cd 命令,后面跟着一个路径名,就可以直接进入到另外一个子目录中去• # cd /usr/bin• # cd ..• # cd ../..• 你总能够用下面的命令回到自己的用户子目录 ( 也就是保存自己文件的子目录 ):• # cd 或者 # cd ~

Acegene IT Co. Ltd. 22

3.2.2 pwd 命令查看所在位置• pwd(显示工作子目录 ) 命令告诉你自己所在的位置,并显示当前工作子目录。例如,执行命令:• # cd /usr/bin• 接着输入:• # pwd• 会看到:• /usr/bin•注意: pwd 有内置命令和外部命令

Acegene IT Co. Ltd. 23

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. 24

3.2.4 使用 whereis 命令查文件• whereis 命令 可以迅速地找到文件,而且提供二进制可执行文件、源代码文件和使用手册页存放的位置。•例如:# whereis (-b) findfind: /usr/bin/find /usr/man/man1/find.1.gz

Acegene IT Co. Ltd. 25

3.2.5 使用 locate 命令定位文件• 文件名数据库 (updatedb)• locate 命令 在文件名数据库中检索文件名

– 检索要比搜索整个硬盘驱动器要快# locate *.ps

Acegene IT Co. Ltd. 26

3.2.6 whatis 和 apropos 命令简介• whatis 命令 : 从程序使用手册中抽出介绍

– 例如:# whatis whowho(1) - show who is logged on

– makewhatis 创建数据库• apropos 命令 : 查找可以执行某个操作的程序• man -K: 实现 apropos 命令同样的功能

– 其搜索过程会很慢,– 搜索结果给出的是每个含有匹配字符串的使用手册页。

Acegene IT Co. Ltd. 27

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. 28

3.3.1 ls :列出子目录的内容清单• ls : 列出子目录内容清单• 常用参数:

– -l 长文件名列表– -a 显示所有文件(包括隐含文件)– -m 把文件用逗号分隔显示在一行上– -x 按水平对齐的方式而不是缺省的垂直对齐方式列出文件– -F 特殊显示目录和可执行文件– -R 显示子目录

Acegene IT Co. Ltd. 29

3.3.2 ll, dir 和 vdir :子目录的内容清单• ll 命令 : 相当于 ls -l 参数,它缺省地列出文件的全部信息。• dir 或 vdir 命令。使用上与 ls 命令类似,但是使用了一些缺省的参数。• dir 命令 像普通的 ls 命令那样把文件按列对齐输出。• vdir 命令 像 ls -l 参数,它缺省地列出文件的全部信息。

Acegene IT Co. Ltd. 30

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. 31

3.3.4 使用 more 命令阅读文件• more 命令 : 页命令使你在浏览文件的时候可以一次阅读一屏或者一行。# more longfile.txt– h” 键获得帮助。– 空格键阅读后一页,也可以– b 键阅读前一页。– 惊叹号 (!) ,从 more 命令中去执行其他的命令

Acegene IT Co. Ltd. 32

3.3.5 使用 less 命令浏览文件• less 命令 页命令

– 但功能比 more 命令更强大。Mark Nudelman 编写,– less页命令是许多程序 (man) 的缺省页命令。

• /usr/bin/zless 命令 阅读压缩文件 (.gz)

Acegene IT Co. Ltd. 33

3.3.6 head 或 tail :阅读开头结尾• head 命令 :  用来显示文件开头 x 行:head -n x• tail 命令 : 一直跟踪显示文件变化

– tail -f filename

Acegene IT Co. Ltd.

AQ&Q U E S T I O N SQ U E S T I O N SA N S W E R SA N S W E R S

Acegene IT Co. Ltd. 35

练习• 用 cat 命令显示 .bash_profile 配置文件• 用 env, set显示环境变量• 启动一个后台程序,然后杀掉该进程。

– # ping localhost &– 察看进程的 ID ps– 杀掉该进程 kill

• 练习重定向和管道• 用 man 命令获得帮助信息• 练习文件目录操作命令 cd pwd find whereis locate ls ll dir• 用 cat more less tail 命令操作文件