——————————第6—8章————————————————

一、一些linux的快捷键

ctrl+a 移动光标到行首

ctrl+e 移动光标到行尾

ctrl+u 删除光标到行首的内容

ctrl+k 删除光标到行尾的内容

ctrl+方向键 一次移动一个单词

二、文件名通配

* 匹配任意长度的字符

?匹配任意的单个字符

[] 范围的匹配,指定范围内的单个字符

[0-9] 连续的字符0到9中选择一个

[a-z] 连续的字母a-z中选择一个

[:plpha:] 取中括号里面的范围

文件名通配 想引用用[[:plpha:]]

三、用户的家目录

~ 代表当前用户的家目录

ls ~redhat 查看redhat的家目录

四、shell简单介绍

bsh bourn在bell实验室开发,是通用的标准的shell

csh bill joy c语言开发

ksh kron 融入了csh

bourn again shell bash 重新写(GNU)

zsh 刚刚诞生 功能比bash更强大

2、shell的几种变量

编译类:源代码——>目标代码(编译器)c c++ JAVA

脚本类:源代码,(解释器,bash),

perl 5.8 python

ruby (on rail),shell

变量:(容器) 命名的内存空间

bash:分为几种变量

本地变量

环境变量

位置参数变量

特殊变量, $?

3、变量引用

变量的声明与赋值直接name=jerry

set class=3

unset class

unset name

变量引用:取变量值 "" '' ``

"" 弱引用 可以替换变量

' ' 强引用 不能替换变量

`` 命令引用 ``=${}

echo -e 换行

echo -e "

printf "$s\n",$name n换行

4、几种变量的举例

name=tom

echo ${name}s

toms

FILE=`ls /root`

echo $FILE

cp /etc/fstab /root/fstab-`date "+%H-%M-%S"`

拷贝文件的时候加上时分秒

export,导出, 输入

HISTSIZE HISTFILE HISTFILESIZE 系统自定义变量

五、别名

alias mntcd='mount /dev/cdrom /media/cdrom'

unalias cdmntcd #取消自定义的别名

自定义的别名只对当前的shell生效

touch \*.txt

cat *.txt 显示三个文件的内容 (有三个文件以txt结尾)

cat \*.txt 显示*.txt文件的内容

echo \*.txt

六、命令的调试

#!/bin/bash

set –x #开启调试,跟踪命令

ls /var /etc

set +x #关闭调试,追踪命令

echo $USER

调试一部分命令

还可以用bash -x a.sh 进行对脚本的调试

七、脚本的小应用

A=$((1+1))

echo $A

2

a=$((2*3))

echo $a

6

2、位置变量

#!/bin/bash

sum=$(($1+$2))

echo $sum

bash a.sh 2 6

8

echo "2/6"|bc

echo "1+1"|bc 将前面的传递到后面进行运算

3、/etc/profile /etc/profile.d/* /etc/bashrc 存放系统变量的配置文件

/etc/profile-->/etc/profile.d/*-->~/.bashrc--/etc/bashrc

八、重定向

< 输入重定向 > 输出重定向 &gt;&gt; 追加

标准输出:monitor,1 1&gt; 标准输出重定向

标准错误输出:monitor,2 2&gt; 标准错误输出重定向

&&gt; 正确的错误的都重新定向

set -C 如原文件有内容,禁止覆盖内容

set +C 如原文件有内容,可以覆盖内容

&gt;&gt; 追加重定向

2&gt;&gt; 错误信息重定向

<&lt; here document 可以在脚本中生成文件

九、tr,tee,exec命令

tr 'a-z' 'A-Z' 把所有的小写转换成大写字母

echo 'abcd' | tr 'a-z' 'A-Z'把abcd换成大写

tee命令 丁字重定向,把一部分内容重定向

echo 'abcd' |tee /tmp/tee.out| tr 'a-z' 'A-Z'

ABCD

cat /tmp/tree.out

abcd

exec 3>/tmp/custom.out 定义文件名3 文件描述符

ls /etc/ &gt;&3 重定向到3等于输入到了/tmp/custom.out

cat /tmp/custom.out

exec 3&gt;&- 关闭3 不关闭会占用内存空间

exec 提高脚本输出效率

less -m(-M) /etc/rc.d/rc.sysinit 报告当前所在的行号,和总行号

tail -f /tmp/ls.out2 动态显示文件最后几行的内容

十、grep命令

grep 全面搜索正则表达式,并打印

patterm 模式,从文件匹配整个模式。而后显示包含了匹配到的内容的行

grep

-v 表示反向匹配,不匹配的显示出来

-i 查找的时候忽略大小写

-n 在匹配的结果中只显示有限范围的行

-An 表示匹配的行在显示几行 (-A2)

-B 显示匹配的前面的

-C2 匹配的中间显二行

--color=auto 自动加颜色

export GREP_CLOR='01;34'改变匹配字符的颜色 # 3表示前景色4表示背景色

1、grep --color=auto 'root' /etc/passwd

在文件中搜索含有root的并以颜色显示

grep --color=auto 'r.t' /etc/passwd

搜索以r开头t结尾中间是任意一个字符

grep -E =egrep

egrep

? 0,1 a?root broot 可以匹配root ?表示匹配时候a可有可无

fgrep fastgrep =grep -f

正则表达式

基本表达式,扩展正则表达式(-E)

元字符

. grep 'f..t' /etc/passwd #中间匹配二个字符

* 次数匹配 a*root,abroot,aaroot,aroot

*代表匹配出现0到多次abroot不匹配

.* 代表任意长度的字符

grep --color=auto 'r.*t' /etc/passwd

以r开头中间任意最后以t结尾

r.\{2\}t 中间明确规定匹配二个字符

r.\{0,2\}t 中间规定可以匹配0到二个字符

r.\{2,\}t 中间可以匹配二个字符以上

grep "^root" 查找以root开头的

grep "root$" 以root结尾的

\< grep "\&lt;root\>" 查找匹配root单词的匹配

\&gt; grep “root\&gt;” 以root单词结尾

十一、cut,wc.sort.uniq命令的简单用法

1、cut -d: -f1 /etc/passwd

cut指定分隔符,(以冒号区分)切割第一段的内容

ifconfig |grep "inet addr" |cut -d: -f2

cut -d' ' -f1 以空格分割的第一段

cut -c2-6 分割地二个字符到第六个字符

2、wc统计

wc -c 统计字节

wc –l 统计行数 wc -l /etc/passwd #统计/etc/passwd文件里一共多少行

3、sort,排序

sort /etc/passwd 手动对文件排序,(默认安a到z)对原文件没有影响

sort -o 输出到/tmp/passwd.sort

-r 逆序排序

-n 1,2 以数值排序(文件里有数字)

-f 忽略大小写

-u 去除重复的行

-t 指定分段

-k 指定段

srot -n -t : -f 3 /etc/passwd #指定第三段忽略大小写以数值排序

4、uniq 去除重复的挨着的行

sort sort.txt |uniq sort.txt

uniq -c 可以显示每一行所被重复的次数

uniq -u 只显示不重复的行

uniq -d 只显示重复的行

十二、脚本基础

-h/-L file ;测试一个文件是否是符号链接文件

-O file ;测试文件属主是否是你

-G file ;测试文件的属组是否是你

test 1 -gt 2

echo $?

[3 -gt 1]

echo $? 0

test -e /etc/issue

echo $? 0

test -f /etc/issue -o -d /etc/issue

-f 文件 -o 或者 -d 目录

test -f /etc/issue && -d /etc/issue

test -d /etc/issue && mkdir /tmp/haha

前面为假后面不执行

或 如果前面为假则执行后面,如果前面为真则不执行后面

-a 与 && 当前面的为假后面不执行(前边为真才执行后面)

-o 或 || 如果前面为假则执行后面

! 非

[$a -gt $b ] && echo "$a is max" || echo "$b is max "

a与b比较如果a是大的则显示a is max 否则显示b is max

简单脚本测试数字的大小

#!/bin/bash

[ $1 -gt $2 ] && echo "$1 is max" || echo "$2 is max"

十三、diff,sed的用法

1、diff 比较二个文件的内容

diff a.txt a2.txt diff -u a.txt a2.txt

2c2

diff a.txt a2.txt &gt; a.txt

patch a.txt < a.txt 补补丁

patch -R a.txt .&lt; a.txt 把补丁补回去

patch -p1 把补丁前面的一个目录去掉

patch -p2 把补丁前面的二个目录去掉

2、aspell check 文件名字 检查文件的单词是否错误

look 单词 查找以某一个单词开头的单词

3、sed 非交互式的流编辑器(行编辑器) 不修改原文件,没有破坏性

sed -i 直接诶对原文件进行修改,替换 -i写在后面表示不区分大小写

-e 同时指定多个操作

-n只显示匹配到的并被处理的内容

-a 在某一行的前面加上特定的内容

-s 用一个字符串替换另一个 s///分隔符

-f 读取某一个文件的内容并进行替换

/p 打印出来

sed '/root/p' (p把它显示出了)/etc/passwd

搜索/etc/passwd中包含root的行数并把它显示出来

sed 's/root/ROOT/' /etc/passwd

搜索/etc/passwd包含root的行并替换成大写

1,6s/root/ROOT/g

指定第一行到第六行root替换大写(默认全文替换)

10,$s/root/ROOT/g

第十行到最后替换

sed 's/ftp:\/\/instu.com/public\/\/\/media/cdrom/g

用\作为分隔符把/分开

-------------------------------------------第九章---------------------------------------

一、模式化的文本编辑器

Vi的③种模式:命令模式,输入模式,末行模式

vim +10 /etc/passwd 打开/etc/passwd让光标处在第十行

vi +/redhat /a.txt #打开含有redhat的行

2、命令模式下的光标移动

h(右),j(下),k(上),l,(右)

^ 移动光标到行首

0 绝对行首,包含空格

$ 绝对行尾

w (word)一次移动一个单词,移动到下一个单词的词首

b 如果光标在当前字母词首则移动到上一个单词的词首,如果没有在词首则移动到单词首部

e 行间移动

G 最后一行

1G或者 gg移动到第一行

末行模式 :5 跳到第五行

段间跳转 }{

句间跳转 )(

3、光标插入

i 在当前光标所在处插入

I 在当前光标所在行的行首

a (append) 在当前光标出的后面插入

O 在当前所在行的上方插入

o 在当前光标的下方插入

4、命令删除

C 删除光标所在行

3cc 删除三行

c 删除一个单词

c( 删除到句首

c} 删除到段尾

r 单词替换

x 删除光标所在处的后面的字段

X 删除光标所在的前面的内容

d 删除行 dd删除一行 3dd删除三行

5、复制粘贴

y$ 复制光标到行尾

p (复制一行)粘贴到光标的下一行,如果复制一段内容,则粘贴到光标的后面

P 在粘贴到上一行

:10,100y 复制10-100行内容

:.,+100d 删除当前光标行到下面100行内容(.表示当前行)

:%d 表示删除全文

6、可视模式

v 以字符为单位选中

V 以行为单位选中

选中后可以删除或者复制

7、查找与替换

/\$[[:upper:]]\{1,\}

查找以$开头的以大写字母开头的单词

:addr1,addr2s///g

:%s\&lt;redhat\>/REDHAT/gi

查找redhat并替换成大写的REDHAT

:%s/^#//g 去除#号

:%s/^[[:space:]]*#[[:space:]]*//g # 去除#号

:%s/^[[:space:]]*#[[:space:]]*.*//g # 去除以#号开头的行

%s/^[[:space:]]*[^[:space:]] # 去除#号和空格

8、撤销操作

u(undo)撤销上一次的操作

U 最近一次的所有操作(默认保存五十次)

ctrl+r 取消撤销

(redo).重做上次的命令

9、vim打开多个文件

vim a.txt b.txt

:prev 前一个文件 :next打开后一个文件

:first第一个文件 :last打开最后一个文件

vim -o a.txt b.txt #水平打开多个窗口

vim -O #垂直打开多个出口

打开多个切换到另一个用ctrl+ww 关闭一个用close

10、末行模式下输入set打开所有可用的项目

set nu #显示行号

想永久保存显示行号,在自己的家目录下创建~/.vimrc隐藏文件,文件里写set nu

set autoindent 自动缩进

showmatch 显示匹配的括号

11、vimtutor 自己练习vim

————————————————第十章———————————————

一、基本的概念介绍

管理进程是系统工程师的职责之一

进程:活体的,是程序的副本

虚拟内存空间(硬盘交换空间);线性,32bit,任何4G

系统角度;

进程名,PID

init进程号永远是1 initial 1

init 1

clone 2 所有进程都是由父进程的产生的

cpu time,进程调度,进程优先级

进程间通信,IPC

信号

share memory(共享内存)

socket

cpu密集型,IO密集(优先级稍高)

二、查看进程

sys V (非常经典的unix)后来发展二大分支--&gt;Berkeley.BSD

1、查看进程命令

Berkeley风格 ——&gt; ps -ef

BSD风格 ——&gt; ps aux

ps 默认显示当前用户正在运行的进程

daemon 守护进程,服务进程

调度进程(在未来一段时间运行的程序)

前台进程

ps -e

? 表示后台进程,与任何用户或tty都无关

CMD 是发起命令是什么

ps -ef(-eF大F内容详细)

[]表示内核线程(thread)

PID 进程号

PPID 父进程(这个进程有谁发起)

C 表示cpu占用时间

SZ 占用虚拟内存空间

RSS 占用物理内存大小

STIME 进程运行时间

PSR 在哪个cpu上运行

pstree 查看当前系统的进程树

ps -ejH 以作业(job)形式显示,可以显示进程数(标准风格)

ps -axjf (x前台进程)

ps -ef -eF aux

ps -eo(o自定义显示进程的字段)

ps -eo pid,%cpu,comm 显示cpu pid 运行命令

ps -eo comm,tty |grep 'tty/1' 显示tty1进程

pgrep 查看进程

pgrep -U root 查看root用户进程 -G组进程

ps -U root pd

pidof 显示某一个进程是进程号

三、进程

&lt; 表示高优先级的进程

N 表示低优先级的进程

s 会话的发起者

+ 表示前台进程组中的进程

l 表示多线程的进程

四、进程状态

运行态(R)running

就绪态(R)runnable

停止态(T)stopped

睡眠态 sleep可中断的睡眠(S),不可中断的睡眠(D)

僵死态(Z)

五、终止进程

IPC:信号

kill -l kill主要用来给一个进程发送信号

man 7 signal

kill -n PID

kill -SIGKILL PID

killall -n(数字)进程名,跟一个发起进程的命令

pgrep 进程 #查找进程号 pkill 进程名 终止某一个进程

静态优先级,动态优先级

0--99 100-139

六、nice

1、ps -o comm,nice 查看进程的优先级

-20,19数字越小优先级越大

2、两种方式调整进程的优先级

nice -n N base

renice 重新调整优先级

nice -n 3 bash 把bash优先级调低

3、gnome-system-monitor 图形界面查看动态进程

top 用于动态查看进程

top -d 10 每十秒钟刷新一次

top -b batch mode 数据保存下来

top -n 2 在-b模式下一共显示几批

七、作业管理

firefox 打开火狐浏览器

firefox & 后台运行

jobs 显示后台运行作业

fg 把后台作业调到前台

fg 2 把第二个后台作业调到前台

bg 让后台停止的作业继续运行

kill -9 %3 杀掉第三个作业,%不可少

nohup cp /etc/tmp/ -r & 后台的作业在退出的时候不终止