390 likes | 571 Views
Turbolinux 用户基础 课程内容. 第一章 什么是 LINUX 第二章 安装 TURBOLINUX 第三章 TURBOLINUX 工具 第四章 X 配置及疑难解答 第五章 运行级别与故障排除 第六章 文件系统基础 第七章 SHELL 使用指南 第八章 SHELL 进程与脚本 第九章 文档编辑工具 第十章 TURBOLINUX 应用程序. 第七章 Shell 使用指南. 主要内容:. Linux 的基本命令 SHELL 环境 bash shell bash, vi, emacs 功能强大的实用工具
E N D
Turbolinux用户基础 课程内容 • 第一章 什么是LINUX • 第二章安装TURBOLINUX • 第三章TURBOLINUX工具 • 第四章 X配置及疑难解答 • 第五章 运行级别与故障排除 • 第六章 文件系统基础 • 第七章 SHELL使用指南 • 第八章SHELL进程与脚本 • 第九章文档编辑工具 • 第十章TURBOLINUX应用程序
第七章 Shell使用指南 主要内容: • Linux的基本命令 • SHELL环境 • bash shell • bash, vi, emacs • 功能强大的实用工具 • diff, find, grep, 正则表达式,sed, awk, perl
7.1 Linux的基本命令 • cd, cp, rm, mv, ls, less, ln, cat, diff, man, passwd, pwd, find, exit • 在线帮助 • man ls • whatis proc • man 5 proc • man –k time • apropos time
7.2 SHELL环境 • 变量 • 如:$HOME/.bash_profile • SHELL: • bash, sh, tcsh, csh, ash, bsh, ksh, zsh等 • 父进程和子进程 • bash(PID=xx) bash(PID=yy)vi(PID=yy)
SHELL环境 • 环境:一组定义,变量,别名,函数 • 子进程从父进程继承环境(如shell) • 子进程中可改变环境,但它不影响父进程 • 局部变量 • 环境变量:export • HOME是变量,$HOME是变量的值
定义shell变量 • 如: $TEST=“test” $echo $TESTstring $echo ${TEST}string teststring $ 视为变量TESTstring
用变量EDI定义一个带路径的命令 $EDI=/usr/local/src/editor/bin/editor $$EDI filename
用变量EDI定义一个带路径的命令 $DISPLAY=192.168.0.1:0 $export DISPLAY $
SHELL内置的系统变量 HOME PWD OLDPWD PATH PS1,PS2 HISTFILE HISTSIZE ENV TERM VISUAL EDITOR LOGNAME SHELL PAGER
查找路径 • PATH • 如:PATH=:/bin:/usr/bin:/usr/local/bin • 内部命令优先于外部命令 • 若有同名程序,只运行先找到的 • 允许在当前目录查找并运行程序:用.(点),或以冒号开头或结尾 • 超级用户的查找路径加. (当前目录)非常危险! • type可指出程序在PATH的什么路径找到 • 如 type tty
shell提示符 • PS1 主提示符 • PS2 附加部分提示符(命令行续行符) • PS4 显示命令行扫描的结果(解析) • set –x
环境文件 • /etc/profile 系统变量,由管理员维护 • $HOME/.bash_profile 用户可修改 • $HOME/.bashrc 该名字由变量ENV定义, 该文件定义bash shell的特征
环境文件 • 查看环境: • set • set –o • env • Unset
练习 • 练习7-1:shell环境 • P142 • 练习7-2:其他附加的环境变化 • P143
7.3 bash shell • 命令行扫描 • 按回车表示命令行输入结束 • SHELL解析整个行,特殊字符被解释替换掉 • 如$HOME • TAB键的使用 • 再按TAB键
扩展通配符 • “*”,“?”是通配符 • SHELL在扫描阶段对通配符进行展开 • “*”匹配跨越“.”的文件名(点只是文件名中的一个普通字符) • 如:my* 可能匹配 my myfile my.word my.old.t
文件名的形成 • 通配符有: • * 匹配任意个(含0个)字符 • ? 匹配任意一个字符 • [list] 匹配其中之一的字符 • [!list] 匹配不在其中的字符
练习 • 练习7-3:文件名的生成 • P147
引号 • ' 单引号 屏蔽所有特殊字符 • “ 双引号 屏蔽多数特殊字符(如:空格,连字符-, 反斜杠\等;但不屏蔽$,允许对变量和命令进行替换) ls aa bb cc 列表aa,bb,cc三个文件或目录项 ls “aa bb cc” 列表名为“aa bb cc”的文件 • \ 反斜杠 屏蔽紧跟其后的字符的特殊含义 touch \\aa 创建名为“\aa”的文件
bash的别名 • 别名:用来创建命令的缩写或另一可选名字 • 如: alias dir=ls alias if=‘ls -fi’ rm=‘rm -I’ cp=‘cp -I’ • 列出别名: alias
命令历史:history • 重复调用命令:! • 命令行编辑模式: • set –o vi • set –o emacs • 用分号在一行中执行多条命令
vi模式的命令行编辑 • ESC进入命令行模式 • 编辑命令行时使用vi的命令 • 使用垂直方向键调用历史命令 • 使用/查找先前的命令 • 不能使用光标键! • h左移;l右移;j下移;k上移
练习 • 练习7-4:bash shell P152 • 练习7-5:命令的展开和通配符 P153
7.4 功能强大的实用工具diff • 比较两个文件的不同之处 • 格式:diff file1 file2 • 显示结果中, • n1 a n3,n4:在file1的第n1行之后加进了file2第n3行至第n4行。 • n1,n2 d n3:删除了原属于file1的第n1至n2行(即file2的第3行)。 • n1,n2 c n3,n4:file1的第n1至第n2行变成了file2的第n3至第n4行 • “<“行列出第一个文件中受影响的行 • “>”行为第二个文件中的新行 • 例: diff /etc/passwd /etc/passwd.bak
diff • diff可用于目录操作 • 格式:diff dir1 dir2 • 显示: • Common subdirectories: • Only in dir1: • Only in dir2:
find实用程序 • 例:fine –name name –print • 格式:find directories… options… action • options为参数,如: • -name name 查找名为name的文件 • -user name 查找属于用户name的文件 • -type [fdlcb] 查找指定类型的文件(d目录,l连接) • -size [+/-]n[bckw] 查找指定大小的文件(如+10k表示大于10KB,b-blocks(512B), c-Bytes, k-KB, w-2Bytes word) • -inum number • action为操作,如: • -print 在标准输出中显示文件名 • -exec command {} \; 对找到的文件执行指定命令 • -ok command {} \; 在执行命令前请求确认
练习 • 练习7-6:find的使用 P155
grep实用程序 • 文本文件中查找内容 • Global regular expression print的缩写 • 匹配模式称“正则表达式” • 通常当作过滤器使用 • 也可查找多个文件
grep实用程序 • 命令格式: • grep <参数> <正则表达式> <待查文件名> 如: grep –n else rc • <命令> | grep <参数> <正则表达式> 如: ls | grep rc* • 参数:
sed实用程序 • sed: 字符流编辑器 • 与ed相似,一般用作管道过滤器 • 简单的语法: sed [-n] ‘command’ [files…] sed [-n] ‘command’ [files…] > file sed –nf scriptfile [files…] <命令> | sed ‘command’ > file
查找替换: n,ms/old/new/flags 表示从第n行到第m行,(s)查找old, 替换为new 如:sed ‘1,10s/Now/Today/g’ rc • 行号也可用正则表达式查找: sed –n ‘/^France/,/^Japan/s/ /-/p’ country.txt
awk实用程序 • 一种强大的解释性的编程语言 • 可用作过滤或操纵文本 • 可用于处理格式化的文本文件 • 常与sed配合使用 • 语法: awk [-F char] [-f file | program] [files…] • awk是Aho, Weinberger和Kernighan三位早期UNIX的作者 • awk通常硬连接到新的awk, 即nawk • awk是高级系统管理员必须学习的!
awk实用程序 第1列,$0表示整个记录 • ifconfig | grep ^[a-z] | awk '{print $1}' • cat /etc/passwd | awk –F: '{print $1}' • awk –F: '{print $1}' /etc/passwd • awk 'BEGIN {print "I am counting"} {for (I=1;I<=NF;I++) words[$I] += 1} END {for (w in words) print w ":" words[w]}' datafile • grep awk /etc/rc0.d/*
.Perl • Practical Extraction and Report Language的简称 • 跨平台,适用于异构环境 • Perl脚本可实现交互式任务,可实现几乎所有自动服务管理任务 • 可完成sed和awk的所有任务 • 具有速度、性能和安全方面的优势
小结 • Shell是一个环境 • 应理解Shell运行机制 • 了解SHELL的主要环境变量 • bash • 实用工具
练习 • P161 练习7-7 正则表达式在grep中的用法 • P161 练习7-8 在vi的查找中使用正则表达式 • P162 练习7-9 先进的正则表达式 • P163 练习7-10 实用工具的其他用法 • 课后习题