Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
第四章 Shell 的基本应用 PowerPoint Presentation
Download Presentation
第四章 Shell 的基本应用

第四章 Shell 的基本应用

177 Vues Download Presentation
Télécharger la présentation

第四章 Shell 的基本应用

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 第四章 Shell的基本应用

  2. 本章内容 • Shell命令概述 • Bash的应用 • 正则表达式、管道与重定向 • 程序编辑器vim

  3. 计算机用户 输入 输入 应用程序 Shell 输出 输出 控制 控制 Linux内核 系统硬件 Shell的作用及常见种类 • Shell的作用 —— 命令解释器,“翻译官” • 介于操作系统内核与用户之间,负责解释命令行

  4. Ksh Bsh Csh Bash Zsh Shell的作用及常见种类 80年代早期诞生于加利福尼亚大学 ,使用C语言风格,命令交互方便 70年代中期诞生于贝尔实验室,有较强的脚本编程功能 兼具Bsh的语法和Csh的交互特性 Bsh的升级版,Linux系统中的默认Shell 兼具各种Shell程序优点,交互式操作效率更高

  5. Shell环境的切换 • 登录Shell • 指用户每次登录系统后自动加载的Shell程序,大多数Linux系统采用 /bin/bash 作为默认登录Shell • /etc/shells 文件记录了系统支持的有效登录Shell • 如何切换Shell环境 • 临时切换:直接执行其他Shell程序,例如ksh、zsh等 • 更改用户登录Shell: • 需修改 /etc/passwd 文件中用户记录的最后一个字段 • 或执行:usermod -s Shell程序路径 用户名 [root@localhost ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh /bin/ksh

  6. Linux命令的分类 • Linux命令 • 用于实现某一类功能的指令或程序 • 命令的执行依赖于解释器程序(例如:/bin/bash) • Linux命令的分类 • 内部命令:属于Shell解释器的一部分 • 外部命令:独立于Shell解释器之外的程序文件

  7. Linux命令行的格式 • Linux命令的通用命令格式 • 命令字 [选项] [参数] • 选项及参数的含义 • 选项:用于调节命令的具体功能 • 以 “-”引导短格式选项(单个字符),例如“-l” • 以“--”引导长格式选项(多个字符),例如“--color” • 多个短格式选项可以写在一起,只用一个“-”引导,例如“-al” • 参数:命令操作的对象,如文件、目录名等 [root@localhost ~]# ls -l /home 总计 8 drwx------ 2 benet benet 4096 09-08 08:50 benet

  8. Linux命令行的格式 • 命令行编辑的几个辅助操作 • Tab键:自动补齐 • 反斜杠“\”:强制换行 • 快捷键 Ctrl+U:清空至行首 • 快捷键 Ctrl+K:清空至行尾 • 快捷键 Ctrl+L:清屏 • 快捷键 Ctrl+C:取消本次命令编辑

  9. 获得命令帮助 • 内部命令help • 查看Bash内部命令的帮助信息 • 命令的“--help” 选项 • 适用于大多数外部命令 • 使用man命令阅读手册页 • 使用“”、“”方向键滚动文本 • 使用Page Up和Page Down键翻页 • 按Q或q键退出阅读环境、按“/”键后查找内容 • 使用info命令阅读信息页

  10. 文件和目录管理 • 目录操作命令 • pwd、cd、ls、mkdir、du • 文件操作命令 • touch、file、cp、rm、mv、which、find、ln • 文件内容操作命令 • cat、more、less • head、tail、wc、grep • 归档及压缩命令 • gzip、bzip2、tar

  11. 目录操作命令 —— pwd、cd • pwd命令 • 用途:查看工作目录(Print Working Directory) • cd命令 • 用途:切换工作目录(Change Directory) • 格式:cd [目录位置] 绝对路径 [root@localhost ~]# cd /etc/httpd [root@localhost httpd]# cd conf [root@localhost conf]# cd ~benet [root@localhost benet]# pwd /home/benet [root@localhost zhangsan]# ls -dl ../jerry drwx------ 2 jerry jerry 4096 09-14 21:50 ../jerry 相对路径 相对路径

  12. 目录操作命令 —— ls • ls命令 • 用途:列表(List)显示目录内容 • 格式:ls [选项]... [目录或文件名] • 常用命令选项 • -l :以长格式显示 • -a:显示所有子目录和文件的信息,包括隐藏文件 • -d:显示目录本身的属性 • -A:类似于“-a”,但不显示“.”和“..”目录的信息 • -h:以更易读的字节单位(K、M等)显示信息 • -R:递归显示内容 • --color:以颜色区分不同类型文件

  13. 目录操作命令 —— ls [root@localhost ~]# ls install.log* install.log install.log.syslog [root@localhost ~]# ls -lh install.??? -rw-r--r-- 1 root root 37K 09-08 16:46 install.log [root@localhost ~]# ls -a . .chewing .gnome install.log.syslog .tcshrc .. .cshrc .gnome2 .lesshst .Trash …… 星号通配符 问号通配符 [root@localhost ~]# alias myls='ls -alh' [root@localhost ~]# myls /usr/src 总计 32K drwxr-xr-x 4 root root 4.0K 09-08 16:40 . drwxr-xr-x 14 root root 4.0K 09-08 16:28 .. drwxr-xr-x 3 root root 4.0K 09-08 16:33 kernels …… 定义命令别名

  14. 目录操作命令 —— mkdir • mkdir命令 • 用途:创建新的目录(Make Directory) • 格式:mkdir [-p] [/路径/]目录名 [root@localhost ~]# mkdir -p mydir/level1/level2 [root@localhost ~]# ls -R mydir mydir: level1 mydir/level1: level2 mydir/level1/level2: -p 选项用于创建多级目录

  15. 目录操作命令 —— du • du命令 • 用途:统计目录及文件的空间占用情况(estimate file space usage) • 格式:du [选项]... [目录或文件名] • 常用命令选项 • -a:统计时包括所有的文件,而不仅仅只统计目录 • -h:以更易读的字节单位(K、M等)显示信息 • -s:只统计每个参数所占用空间总的大小 [root@localhost ~]# du -sh /etc/httpd/ 184K /etc/httpd/

  16. 文件操作命令 —— touch、file • touch命令 • 用途:新建空文件,或更新文件时间标记 • 格式:touch 文件名… • file命令 • 用途:查看文件类型 • 格式: file 文件名… [root@localhost ~]# touch file1.txt file2.doc [root@localhost ~]# ls file* file1.txt file2.doc [root@localhost ~]# file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for ……

  17. 文件操作命令 —— cp • cp命令 • 用途:复制(Copy)文件或目录 • 格式:cp [选项]... 源文件或目录… 目标文件或目录 • 常用命令选项 • -r:递归复制整个目录树 • -p:保持源文件的属性不变 • -f:强制覆盖目标同名文件或目录 • -i:需要覆盖文件或目录时进行提醒

  18. 文件操作命令 —— rm • rm命令 • 用途:删除(Remove)文件或目录 • 格式:rm [选项]... 文件或目录 • 常用命令选项 • -f:强行删除文件或目录,不进行提醒 • -i:删除文件或目录时提醒用户确认 • -r:递归删除整个目录树

  19. 文件操作命令 —— mv • mv命令 • 用途:移动(Move)文件或目录 —— 若如果目标位置与源位置相同,则相当于改名 • 格式:mv [选项]... 源文件或目录… 目标文件或目录

  20. 文件操作命令 —— which • which命令 • 用途:查找Linux命令文件并显示所在的位置 —— 搜索范围由 PATH环境变量指定 • 格式:which 命令或程序名 [root@localhost ~]# which mkdir /bin/mkdir [root@localhost ~]# echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost ~]# which cd /usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) cd是Shell内部命令,因此查不到对应文件

  21. 文件操作命令 —— find • find命令 • 用途:用于查找文件或目录 • 格式:find [查找范围] [查找条件] • 常用查找条件 • -name:按文件名称查找 • -size:按文件大小查找 • -user:按文件属主查找 • -type:按文件类型查找

  22. 文件操作命令 —— ln • ln命令 • 用途:为文件或目录建立链接(Link) • 格式:ln [-s] 源文件或目录… 链接文件或目标目录 • 常用命令选项 • -s:建立符号链接文件(省略此项则建立硬链接) • 关于链接文件 • 符号链接:指向原始文件所在的路径,又称为软链接 • 硬链接:指向原始文件对应的数据存储位置 • 不能为目录建立硬链接文件 • 硬链接与原始文件必须位于同一分区(文件系统)中

  23. 文件内容操作命令 —— cat • cat命令 • 用途:显示出文件的全部内容 [root@localhost ~]# cat /etc/host.conf order hosts,bind [root@localhost ~]# cat /etc/resolv.conf search localdomain [root@localhost ~]# cat /etc/resolv.conf /etc/host.conf search localdomain order hosts,bind

  24. 文件内容操作命令 — more、less • more命令 • 用途:全屏方式分页显示文件内容 • 交互操作方法: • 按Enter键向下逐行滚动 • 按空格键向下翻一屏、按b键向上翻一屏 • 按q键退出 • less命令 • 用途:与more命令相同,但扩展功能更多 • 交互操作方法: • 与more命令基本类似,但个别操作会有些出入

  25. 文件内容操作命令 ——head、tail • head命令 • 用途:查看文件开头的一部分内容(默认为10行) • 格式:head -n 文件名 • tail命令 • 用途:查看文件结尾的少部分内容(默认为10行) • 格式:tail -n 文件名 tail -f 文件名 [root@localhost ~]# tail -2 /var/log/messages Sep 8 15:49:29 localhost scim-bridge: Cleanup, done. Exitting... Sep 8 15:49:29 localhost Cleanup, done. Exitting...

  26. 文件内容操作命令—— wc • wc命令 • 用途:统计文件中的单词数量(Word Count)等信息 • 格式:wc [选项]... 目标文件... • 常用命令选项 • -l:统计行数 • -w:统计单词个数 • -c:统计字节数 [root@localhost ~]# wc /etc/hosts 4 23 185 /etc/hosts 4行,23个单词,185个字节

  27. 文件内容操作命令—— grep • grep命令 • 用途:在文件中查找并显示包含指定字符串的行 • 格式:grep [选项]... 查找条件 目标文件 • 常用命令选项 • -i:查找时忽略大小写 • -v:反转查找,输出与查找条件不相符的行 • 查找条件设置 • 要查找的字符串以双引号括起来 • “^……”表示以……开头,“……$”表示以……结尾 • “^$”表示空行

  28. 归档及压缩命令 —— gzip、bzip2 • gzip命令、bzip2命令 • 用途:制作压缩文件、解开压缩文件 • 格式:gzip [-9] 文件名... bzip [-9] 文件名... gzip -d .gz格式的压缩文件 bzip2 -d *.bz2格式的压缩文件 • 常用命令选项 • -9:表示高压缩比,多在创建压缩包时用 • -d:用于解开已经压缩过的文件 制作压缩文件 解开压缩文件

  29. 归档及压缩命令 —— tar • tar命令 • 用途:制作归档文件、释放归档文件 • 格式:tar [选项]... 归档文件名 源文件或目录 tar [选项]... 归档文件名 [-C 目标目录] • 常用命令选项 • -c:创建 .tar 格式的包文件 • -x:解开.tar格式的包文件 • -v:输出详细信息 • -f:表示使用归档文件 • -p:打包时保留原始文件及目录的权限 • -t:列表查看包内的文件 制作归档文件 解开归档文件

  30. 归档及压缩命令 —— tar • 常用命令选项(续) • -C:解包时指定释放的目标文件夹 • -z:调用gzip程序进行压缩或解压 • -j:调用bzip2程序进行压缩或解压 制作压缩包文件 [root@localhost ~]# tar jcf test.tar.bz2 /etc/httpd/ tar: 从成员名中删除开头的“/” [root@localhost ~]# ls -lh test.tar.bz2 -rw-r--r-- 1 root root 21K 09-09 01:19 test.tar.bz2 [root@localhost ~]# tar jxf test.tar.bz2 -C /tmp [root@localhost ~]# ls -ld /tmp/etc/httpd/ drwxr-xr-x 4 root root 4096 09-08 16:37 /tmp/etc/httpd/ [root@localhost ~]# rm -rf /tmp/etc/ 释放压缩包文件

  31. Bash的常用功能 • Tab键自动补齐 • 命令编辑快捷键 • 命令历史 • 命令别名 • 标准输入输出 • 重定向操作 • 管道操作

  32. Bash的命令历史 • 命令历史 • 保存用户曾经执行过的命令操作 • 存放位置:~/.bash_history文件 • 查看历史命令 • 使用↑、↓按键逐条翻看,允许编辑并重复执行 • 执行:history • 清除历史命令 • 执行:history -c [root@localhost root]# history …… 556 useradd jerry 557 passwd jerry 558 crontab -e -u jerry 559 crontab -l -u jerry

  33. Bash的命令历史 • 调用历史命令 • !n:执行历史记录中的第n条命令 • !str:执行历史记录中以“str”开头的命令 • 设置记录历史命令的条数 • 修改 HISTSIZE 参数(默认为1000条) [root@localhost root]# !562 crontab -l -u jerry no crontab for jerry [root@localhost ~]# vi /etc/profile HISTSIZE=200

  34. Bash的命令别名 • 命令别名 • 为使用频率较高的复杂命令行设置简短的调用名称 • 存放位置:~/.bashrc • 查看命令别名 • 格式:alias [别名] • 设置命令别名 • 执行:alias 别名='实际执行的命令' • 取消已设置的命令别名 • 格式:unalias 别名 unalias -a [root@localhost ~]# alias alias cp='cp -i' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias mv='mv -i' alias rm='rm -i' ……

  35. 正则表达式 • 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab” 描述的特征是“一个 'a' 和 任意多个 'b' ,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。 表达式可以用来: • (1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。 • (2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。 • (3)用来替换,比普通的替换更强大。

  36. 基本的正则表达式

  37. 创建正则表达式 • 行以 “Test”or”test”开头 • ^[tT]est • 行以 “end.”结尾 • end\.$ • 整行是: This is a test. • ^This is a test\.$ • 以下任意名称:file5,file6,file7,file8 • file[5678] • 以下任意名称:file2,file4,file6,file8 • file[2468]

  38. 创建grep 命令 • 使用grep命令查找 /etc/passwd 文件中的字符串. • 打印以字母 r 开头的所有的用户名 • 打印以字母 g 开头的所有的用户名 • 打印其 shells (最后一列) 为 /sbin/nologin的所有账户 • 打印 UID or GID (第三或第四列) 为 0 的所有账户 • 打印 UID or GID 在 10-19 之间的所有账户 1. grep ‘^r’ /etc/passwd 2. grep ‘^g’ /etc/passwd 3. grep ‘/sbin/nologin$’ /etc/passwd 4. grep ‘:0:’ /etc/passwd 5. grep ‘:1[0-9]:’ /etc/passwd

  39. 管道和重定向 • 重定向允许将标准输出或错误消息从程序重定向到文件,以进行保存或稍后分析,或禁止其在终端显示。还可以通过文件而非键盘将输入读取至命令行程序 • 管道允许叫标准输出信息从程序连接至另一个程序的输入,每个程序作用于前一个程序的输出。

  40. Bash的标准输入输出 • 交互式硬件设备 • 标准输入:从该设备接收用户输入的数据 • 标准输出:通过该设备向用户输出数据 • 标准错误:通过该设备报告执行出错信息

  41. Bash的重定向操作 • 改变标准输入、标准输出、标准错误的方向

  42. 输出重定向实例 • 将命令输出重定向到文件 • 将标准输出重定向到文件 $ ls /etc/ > etcdir • 将标准输出重定向追加到文件 $ ls /etc/sysconfig/ >> etcdir • 将错误输出重定向到文件 $ nocmd 2> errfile • 将标准输出和错误输出重定向到文件 $ ls afile bfile &> errfile

  43. Bash的管道操作 • 管道操作符号“|” • 连接左右两个命令,将左侧的命令输出的结果,作为右侧命令的输入(处理对象) • 格式:cmd1 | cmd2 [... | cmdn] [root@localhost ~]# free -m | head -2 total used free shared buffers cached Mem: 503 339 163 0 87 199 [root@localhost ~]# free -m | grep "Mem" | awk '{print $2,$4}' 503 163 awk,以空格或制表位为分隔,输出指定第n列数据

  44. 阶段练习 • 1. 列出 /usr/share/doc 中以数字4结尾的文件. • ls /usr/share/doc I grep ‘4$’ • 2. 打印 /etc/hosts 中包含数字的所有行 • grep ‘[0-9]’ /etc/hosts • 3. 打印 /etc/hosts 中包含 127.0.0.1 的行 • grep ‘127\.0\.0\.1’ /etc/hosts • 4. 以 student用户运行以下命令, 并将 STDOUT重定向到/tmp/output . txt 将 STDERR 重定向到 /tmp/error .txt: find /etc -name host* • find /etc -name ‘host*’> /tmp/output.txt 2> /tmp/error.txt

  45. 阶段练习(续) • 5. 以 student用户身份运行以下命令, 并将 STDOUT 和 STDERR重定向到 / tmp/all.txt 文件. find /etc -name host* • find /etc -name host* >& /tmp/all.txt • 6. 排列 /etc/passwd 文件,并将其发送到默认打印机 • cat /etc/passwd I sort I lpr • 7. 打印 /etc/passwd 中冒号之间是三位数的行 • grep ‘:[0-9][0-9][0-9]:’ /etc/passwd

  46. 文本编辑器概述 • 文本编辑器的作用 • 创建或修改文本文件 • 维护Linux系统中的各种配置文件 • Linux中最常用的文本编辑器 • vi:类Unix系统中默认的文本编辑器 • vim:vi编辑器的增强版本,习惯上也称为vi [root@localhost ~]# alias vi='/usr/bin/vim' [root@localhost ~]# which vi alias vi='/usr/bin/vim' /usr/bin/vim 设置别名,以便执行vi时自动调用增强版编辑器

  47. [root@localhost ~]# vi 文件名 教员演示操作过程 vi编辑器的工作模式 • 三种工作模式 • 命令模式、输入模式、末行模式 • 不同模式之间的切换 命令模式 a、i、o等键 :键 Esc键 Esc键 输入模式 末行模式

  48. 命令模式中的基本操作-1 • 光标移动

  49. 命令模式中的基本操作-2 • 复制、粘贴、删除

  50. 命令模式中的基本操作-3 • 文件内容查找