第一课 14-08-09
shell脚本适合:
1.封装已有的程序 2.系统管理 3.自动化脚本,提高效率 --经常从系统已有的shell里面提取出有用的代码,复用
把同一性的脚本总结,收藏,复用!
#!开头,shell会把后面的命令 还有 本文件(hwc)作为参数传给命令行执行
eg: #! /bin/tail -1
hello world
./hwc ---> 实际上执行了 /bin/tail -1 ./hwc
1. ls -l -r --sort=time --time-style=+%Y%m%d%H%s ~ (-r 升序排序, --sort 排序
在命令行执行的:
2,tab补全
3. ctrl +r --敲出命令行一部分,可以在history中找到匹配的最近的命令t
4. ctrl-a(光标到命令行首), ctrl-e(到命令行尾), ctrl-u(删除当前到命令行首),ctrl-k(删除当前到命令行尾), ctrl -<--- ,ctrl- -->
5. 获得上个命令的参数 ESC-., ALT-.
基本命令:date ,tar,
tail file---显示文件末尾10行,默认的 tail -n 4 显示末尾4行 tail -f file 这样可以动态地查看file里面追加的内容
head file ---显示文件前10行
more [option] file 分屏显示 more -num file 一次显示多少行
less [option] file 分屏显示
cut -d: -f1,5 /etc/passwd ----以:为分隔符,显示第1个和第5个字段
grep keys file---找出匹配的行 pgrep keys---找出keys进程的pid
wc-l [-w -c] file 统计文件中的行数,单词数,字符数 ,主要与其他命令同时用
sort --排序
uniq--去除重复行。
diff file1 file2 比较两个文件是否相同 diff -r dir1 dir2
patch file < 1.patch ---打补丁。
课后作业:备份/etc ,如果今天的备份与前天的一样,则删除昨天的,否则保存(date, diff or md5sum,如果定时处理,需要crond)
额外的学习内容:---基础小白命令
lsblk -l --列出块设备
md5sum filename ---生成校验值,即签名信息 ,以此来检测文件是否改变
dd--转换和复制文件。可以用来转换和复制文件,大多数时间是用来复制iso文件(或任何其它文件)到一个usb设备(或任何其它地方)中去,所以可以用来制作USB启动器。
1
|
root@tecmint:~
# dd if=/home/user/Downloads/debian.iso of=/dev/sdb1 bs=512M; sync
|
注意:在上面的例子中,usb设备就是sdb1(你应该使用lsblk命令验证它,否则你会重写你的磁盘或者系统),请慎重使用磁盘的名,切忌。
dd 命令在执行中会根据文件的大小和类型 以及 usb设备的读写速度,消耗几秒到几分钟不等。
uname -a 显示内核信息 uname -r
history --历史记录 ctrl+r可以搜索已经执行过的命令,可自动补全
sudo command --允许用户借用超级用户的权限,su 命令允许用户以超级用户登录。
touch filename --更新文件的访问和修改时间为当前时间,如果文件不存在,则创建他。
chown root:root file , chmod u+x filename
apt--advanced package tool APT是一个为Debian系列系统(Ubuntu,Kubuntu等等)开发的高级包管理器,在Gnu/Linux系统上,它会为包自动地,智能地搜索,安装,升级以及解决依赖。
apt-get install python , apt-get update,apt-cache用来搜索包中是否包含子包mplayer,apt-get用来安装,升级所有的已安装的包到最新版。
同时,yum install python (yum 用在redhat, fadero系统)
“cal”(Calender),它用来显示当前月份或者未来或者过去任何年份中的月份。cal 02 1983 ---显示1983年2月
date”命令使用标准的输出打印当前的日期和时间,也可以深入设置。
1
2
3
|
root@tecmint:~
# date
Fri May 17 14:13:29 IST 2013
|
1
2
3
|
root@tecmint:~
# date --set='14 may 2013 13:57'
Mon May 13 13:57:00 IST 2013
|
注意:这个命令在脚本中十分有用,以及基于时间和日期的脚本更完美。而且在终端中改变日期和时间,让你更专业!!!(当然你需要root权限才能操作这个,因为它是系统整体改变)
mv file1 /dir/file2 ---如果在当前目录,则是改名。。mv需谨慎使用,因为移动系统的或者未授权的文件不但会导致安全性问题,而且可能系统崩溃。
pwd--显示当前路径
cat ---连接两个或者多个文本文件,或者以标准输出形式打印文件的内容
cat a.txt b.txt c.txt
cat ab.txt
cat -n ab.txt -----打印行号显示
cat << aaa
>b
>c
>hello
>aaa
从《aaa开始是here-document, 接着输入的内容,直到再次输入aaa才结束
常用通配符列表:
1
2
3
4
5
6
7
8
|
Wildcard Matches
* 零个或者更多字符
? 恰好一个字符
[abcde] 恰好列举中的一个字符
[a-e] 恰好在所给范围中的一个字符
[!abcde] 任何字符都不在列举中
[!a-e] 任何字符都不在所给的范围中
{debian,linux} 恰好在所给选项中的一整个单词
|
! 叫做非,带'!'的反向字符串为真