1 / 56

第四章 Shell 的基本应用

第四章 Shell 的基本应用. 本章内容. Shell 命令概述 Bash 的应用 正则表达式、管道与重定向 程序编辑器 vim. 计算机用户. 输入. 输入. 应用程序. Shell. 输出. 输出. 控制. 控制. Linux 内核. 系统硬件. Shell 的作用及常见种类. Shell 的作用 —— 命令解释器,“翻译官” 介于操作系统内核与用户之间,负责解释命令行. Ksh. Bsh. Csh. Bash. Zsh. Shell 的作用及常见种类. 80 年代早期诞生于加利福尼亚大学 ,使用 C 语言风格,命令交互方便.

roana
Download Presentation

第四章 Shell 的基本应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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 • 文件内容查找

More Related