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 物理内存、交换空间等的信息
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------