Linux:shell编程

来源:互联网 发布:bim软件 编辑:程序博客网 时间:2024/06/05 09:46

shell脚本的参数:

testfunc(){echo "$# parameters";echo "$@";}
testfunc a b c

3 parameters

a b c

\\\\\\\\\\\\\\\\\\\\\\\\\\\

testfunc a "b c"

2 parameters

a b c

$#代表传入函数的参数个数,而$@代表所有参数的内容。


基于文本的处理:【常用命令】


cut -d ' ' -f 2,3 record.txt   -d选项定义了字段分隔符;-f 选项要求cut取出记录中的第二个字段和第三个字段。

cut -d ' ' -f 2,3 record.txt | sort 按照第2个字段的值进行排序

cut -d ' ' -f 2,3 record.txt | sort | uniq -c

cut -d ' ' -f 2,3 record.txt | sort | uniq -c |sort -r    r选项是告诉排序使用倒序显示

cut -d ' ' -f 2,3 record.txt | sort | uniq -c |sort -r |head -n10   显示前10位的数值

tr的用法:主要用于删除文件中的控制字符,或进行字符转换

语法:tr [–c/d/s/t] [SET1] [SET2]
SET1: 字符集1
SET2:字符集2
-c:complement,用SET2替换SET1中没有包含的字符
-d:delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符
-t: truncate-set1,将SET1用SET2转换,一般缺省为-t
1.去除重复的字符        $echo aaacccddd | tr -s [a-z]

2.删除空白行    就是删除换行符/n    cat text.txt | tr -s ["\n"]

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

文件系统:

Linux下5种文件类型:普通文件;目录;字符设备文件;块设备文件;符号链接文件。

chown:改变文件的所有者; chgrp:改变文件的用户组。

find命令的一般格式:

find pathname -options 【-print -exec -ok ...】

find /etc -iname "*rc" -print :递归检索/etc下的所有文件,凡是文件名符合“*rc”的,都打印出来(print)。

find /etc -iname "*rc"  -exec cp {} /tmp/rcfile/  \ ;:递归检索/etc下的所有文件,凡是文件名符合“*rc”的,都检索出来,然后对于每一个这类文件,执行命令cp file /tmp/rcfile/。

exec选项后面跟随着所要执行的命令或脚本,然后是一对{},一个空格和一个\,最后是一个分号。


(1) find ~ -iname ".*txt" -print

(2)find . -perm 755 -print

(3)find . -type d -print

(4)find /tmp -newer /tmp/record.txt

(5)find ~ -size +1M -print

(6)find /tmp -user root -print

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

sed编辑器:

datafile 文件此处略。

(1) 把Jon的名字改为Jonathan

sed -e "s/Jon/Jonarhan/g" datafile    再次提醒:替换命令是s////.而在末尾的g表示全局替换。

(2)删除头3行

sed -e "3d" datafile

(3)显示5-10行

sed -n '5,10p' datafile    选定5到10行的工作区域,用p命令打出。-n选项采用安静模式

(4)删除包含Lane的行

sed -e '/Lane/d' datafile  

(5)显示所有生日在November-December之间的行

sed -n '/[:::]1[1-2][:/:]/p' datafile      在sed中,为了匹配特殊字符,需要将它用[::]包围起来。

(6)把3个星号(***)添加到以Fred开头的行

sed -e 's/^Fred/***Fred/' datafile  "^"表示行首。

(7)用JOSE HAS RETIRED 取代包含Jose的行

sed -e 's/^.*Jose.*$/JOSE HAS RETIRED/g' datafile

(8)把Popeye的生日改为11/14/46

sed -e '/Popeye/s/:[0-9]*\/.*\/.*:/:11\/14\/46:/ ' datafile 

(9)删除所有空白行

sed -e '/^$/d' datafile

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

文本处理器awd

先来个例子: awk '{print $1}' /etc/fstab

awk -F":" '{print "USER: "$1 "\tSHELL: "$7}' /etc/fstab         -F参数设置的是awk的初始化变量FS,控制着awk的字段分隔符,在默认情况下是空白字符。此处设置为冒号(:)。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

进程:

进程的组成元素:(1)程序的读取上下文;(2)程序当前的执行目录;(3)程序服务的文件和目录;(4)访问权限;(5)内存和其他分配给进程的系统资源

前台启动:df命令

后台启动:直接在命令的末尾增加一个&符号

前后台进度调度:需要中断一个前台进程时,常使用Ctrl+C快捷键。前台转为后台:在前台进程运行中,按Ctrl+Z快捷键,会把当前进程挂起,当shell再次出现命令提示符时,键入bg命令,刚刚被你挂起的进程再次开始运行,此时由前台转到了后台;后台转前台:直接在shell中键入fg命令,就会将后台进程转换为前台进程。

jobs命令:显示当前shell被挂起的进程和后台进程的状况。


crontab:调度重复性系统任务

crontab -e : 创建crontab文件

crontab文件放入/var/spool/cron/crontabs目录下


at:在特定时间调用单个系统任务

创建at作业:

at -m 1930

rm /home/a.txt

atq命令:可以显示已创建的at作业的状态信息

如何显示at作业:at -l [job-id]

删除作业:at -r [job-id]

设置拒绝at命令的访问: /etc/cron.d/at.deny


虚拟文件系统proc:在用户与内核之间开设接口,展现当前系统状态。用户能从proc中获取系统和进程信息,也能通过proc操作系统。

/proc/cpuinfo  cpu的信息

/proc/meminfo  物理内存、交换空间等的信息

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


0 0
原创粉丝点击