《实战Linux Shell编程与服务器管理》章节试读

当前位置:首页 > 网络编程 > > 实战Linux Shell编程与服务器管理章节试读

出版社:电子工业出版社
出版日期:2010-3
ISBN:9787121103285
作者:卧龙小三
页数:533页

《实战Linux Shell编程与服务器管理》的笔记-第56页

1)内置命令
不用搜索$PATH的命令 (*代表还未理解的命令)(查看所有的内置命令输入help)
alias 别名 / unalias 去除别名
bg 把作业放到后台 / fg 把后台作业放到前台
*bind 显示当前关键字与函数的绑定情况,或将关键字与readline函数或宏进行绑定。
break 从最内层循环跳出
*builtin 运行一个内置Shell命令,并传送参数,返回退出状态0。当一个函数与一个内置命令同名时,该命令将很有用
case
cd
*command 即使有同名函数,仍然执行该Unix命令。也就是说,跳过函数查找。
*compgen 结合Bash内置命令complete和compgen即可实现自定义Tab补全
complete
continue
declare 显示所有变量,或用可选属性声明变量。
dirs 显示当前记录的目录(pushd的结果)
disown 从作业表中删除一个活动作业。
echo 显示args并换行
enable 启用或禁用Shell内置的Unix命令
eval eval [args]:把args读入Shell,并执行产生的Unix命令。
exec exec command:运行Unix命令,替换掉当前Shell。
exit exit [n]:以状态n退出Shell。
export export [var]:使变量可被子Shell识别。
fc 历史的修改Unix命令,用于编辑历史Unix命令。
for
getopts 解析并处理Unix命令行选项。
hash 控制用于加速Unix命令查找的内部哈希表
help
history
if
jobs 显示放到后台的作业
kill
let 用来计算算术表达式的值,并把算术运算的结果赋给变量
*local 用在函数中,把变量的作用域限制在函数内部。
logout 退出登录的Shell。
popd 从目录栈中删除项
pushd 向目录栈中增加项
printf
pwd
read 从标准输入读取一行,保存到变量var中
readonly 将变量var设为只读,不允许重置该变量
return 从函数中退出,n是指定给returnUnix命令的退出状态值
set/unset 设置选项和位置参量/取消指定变量的值或函数的定义
shift
shopt
source
suspend 终止当前Shell的运行(对登录Shell无效)
test 检查文件类型,并计算条件表达式。
time /times 打印设置命令执行的real user sys时间/显示由当前Shell启动的进程运行所累计用户时间和系统时间。(书中没讲times)
trap trap [arg] [n]:当Shell收到信号n(n为0、1、2或15)时,执行arg。
type 显示Unix命令的类型,例如:pwd是Shell的一个内置Unix命令。
--------------------
ego@J:~$ type times
times 是 shell 内嵌
ego@J:~$ type time
time 是 shell 关键字
-----------------
typeset 同declare。设置变量并赋予其属性
ulimit 显示或设置进程可用资源的最大限额。
umask
until
wait 等待pid号为n的后台进程结束,并报告它的结束状态
while
2)命令行程序
cp date who w ls cat .....
date
data +'时间格式'
date +‘%d%H%M’ 日 时 分
wc
wc -l file 显示file文件内容有几行
wc -c file 显示file文件有多少个字符
wc -w file 显示file文件有多少个单词。
find
很复杂的命令
tar
普通命令行 tar xvf test.tar.gz (-C /tmp) 解压(到/tmp)
tar zcvf test.tar.gz /tmp/123 将/tmp/123里的内容压缩到test.tar.gz的包里
另一种方式 tar cvf - /tmp/123 | gzip -9 > /tmp/save.tar.gz
将/tmp/123打包,管道到gzip,使用最大的压缩比9,压缩到save.tar.gz。此种方式不支持选项z
gzip -9dc save.tar.gz | tar xvf -
同样不支持选项z,用gzip -9dc解压,-d表示解压,-c表示解压至标准输出,接着通过管道,交给tar包。-表示由标准输入读取数据
-------------
一个简易的备份脚本
#!/bin/bash
A=/tmp/123
B=/tmp/456
cd $A
tar cvf - . | tar xvf - -C $B
脚本有不少缺陷,但是基于这个脚本,慢慢扩增,即可成为一个全备脚本
---------------
basename 取得路径文件名中最后的文件名部分
dirname 取得路径名称中的目录部分
sort 排序
sort file 升幂排序(按照ASCII字符,做大小比较)
sort -r file 降序排列
sort -n 升序排列 以字符串的数值大小为比较的标准
sort -k 3 file
http://www.linuxfly.org/read.php?186 讲的很详细
uniq 去除重复行
uniq file 去除重复行
sort file | uniq 排序file,并消除重复行
sort file | uniq -d 排序file,只显示重复行
sort file | uniq -c 排序file,消除重复行,并且显示重复的次数
cut 抽取文件部分
cut -c2 file 抽取file的每行第二个字符
cut -c2-10 file 抽取file的每行第2-10个字符
cut -c9- file 抽取file的每行的第九个之后的字符(包含第九个)
cut -c1-3,22- file 抽取file的每行1-3,22之后的字符
cut -d: -f1 passwd 抽取passwd每行的第一个字段
-d: 表示cut用:作为分割符,-f1是第一个字段的意思。
cut -d: -f2,4 passwd
paste 对文件以行和行的方式合并
paste file1 file2 file1和file2每行合并,默认以tab分割
paste -d ‘#’ file1 file2 file1和file2每行合并,以#分割
paste -s file1 file1的每行合并到一行,默认以tab分割

tr 转换或删除字符
tr r R < /etc/passwd 把passwd文件中r换成R
tr ‘:’ '\n' file 把file里的,替换成\n
tr -d k 删掉所有k字符
cut -d: -f1-6 /etc/passwd | tr : '#' (注意空格啊!!!!) 取出passwd的1到6列,并改以#分割。
tr ‘[a-z]' '[A-Z]' < /etc/passwd 将所有的小写变成大写
tr -s '''' < file 将多余的空白删除,只有一个空白。(未理解)

grep 过滤,看起来简单,其实用起来很复杂
grep A * 当前文件夹里,将含有A的文件和行显示出来
grep -i A * 将含有A和a的文件和行显示出来。-i意思是不区分大小写


《实战Linux Shell编程与服务器管理》的笔记-第31页

1)通配符
* 代表任意字符,可以为空字符
? 代表一个字符,不可以为空字符
2)转义字符,续航字符
\
3)字符合集
字符合集就是[]中所列的字符范围中的某一个字符,长度为一, - 表示字符范围
[xyz] x 或 y 或 z
[a-z] 英文小写
[A-Z] 英文大写
[a-zA-Z] 英文大小写字母
[0-9] 数字
[a-zA-Z0-9] 英文大小写数字
字符合集中的“非”
[!0-9] 不是数字
[!a-z] 不是小写字母
... 其他类推
当需要匹配 - 这个符号的时候,将 - 放在最后
[a-z_-] 小写字母,_,-
当!不在字符合集的开头,或者被\转义的时候,就代表一个符号,而不是非的意思
[0-9!] 数字,!
[\!0-9]
当 * 在字符合集里时不代表匹配的意思,就是一个符号的意思
[123.*] 就是 1 2 3 . 和 *
4)括号扩展
echo {a,b,c}_test ---> a_test b_test c_test
echo {1,2,3,4,5,6,7,8,9}\*{1,2,3,4,5,6,7,8,9} ----> 九九乘法表
--------------------------------------------------------------------------
注意:书35页中端部分说 此处*需要转义 似乎是不准确的
bash 4.1(ubuntu 10.10),bash 3.2(RHEL5) 中 echo a*b 和 echo a\*b是完全一样的。
但是的确echo *的结果和 ls是同样的。
--------------------------------------------------------------------------
5)< > 连用
格式: 命令 < 文件 > 转入文件
ego@J:/tmp/123$ sort < testfile
04test1
11test1
28test1
35test1
45test1
46test1
sort < testfile > file file文件里就被写入上面sort排序的结果。
6)管道
命令1的输出结果,通过管道,变成命令2的输入
cat testfile | sort > file3 ----> 过程是读取testfile,sort排序,写入file3文件。
管道的组合使用,经典样例!!!!需要牢记!!!!!
----------------------------------------------------------
grep '".*" 4[0-9[0-9]' access_log | grep -o '".*" 4[0-9][0-9]' | sort | uniq -c | sort -n | tee /tmp/log.txt
access_log是apache日志文件,将这行命令分解如下
grep '".*" 4[0-9][0-9] access_log 找出含有4xx错误信息的内容
grep -o '".*" 4[0-9][0-9]' 将前面的输出结果过滤,取出符合样式的字符串。
sort 排序
uniq -c 去除重复行,并且统计重复次数
sort -n 再交给sort,按照重复次数排序
tee /tmp/log.txt 最后交给tee写入文件,并且显示.
-----------------------------------------------------------
7)前台工作,后台工作
& fj bj 具体google,查man

《实战Linux Shell编程与服务器管理》的笔记-第43页

1)Bash结构:变量设定,内置命令,语法结构,函数 ,其他命令行
2)执行方式: ./test.sh
. test.sh (与前一种其实是有区别的,不会fork出子shell)
source test.sh (同样不会fork出子shell)
/root/test.sh(需要执行权限的)
bash/sh test.sh
3)排错方法
bash -v
bash -n
bash -x

《实战Linux Shell编程与服务器管理》的笔记-第16页

(此方法和书中不同)
FreeBSD默认是用的csh
1)安装bash
cd /usr/ports/shell/bash
make install clean
2)修改配置文件
装好以后,使用chsh -s /usr/local/bin/bash就可以把默认的shell改成bash了。


 实战Linux Shell编程与服务器管理下载 更多精彩书评


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024