shell

来源:互联网 发布:法剧 知乎 编辑:程序博客网 时间:2024/05/16 09:03

grep的查找

grep test *file //在当前目录中,查找后缀有"test"字样的文件中包含"test"字符串的文件
grep -r update /etc/acpi //以递归的方式查找符合条件的文件
grep -v test*//查找文件名中包含test 的文件中不包含test 的行

sed的编辑  Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作

sed [-hnV][-e<script>][-f<script文件>][文本文件]
sed -e 4a\newLine testfile 

AWK是一种处理文本文件的语言 

awk '{[pattern] action}' {filenames}
 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt

1.ps -ef 查看正在活动的进程

ps -ef |grep abc 查看含有"abc"的活动进程


ps -ef |grep -v abc 查看不含abc的活动进程


2.特殊的处理参数的方法:


$# 传递到脚本的参数个数


$* 以一个单字符串显示所有向脚本传递的参


$$ 脚本运行的当前进程ID号


# vi variable
 
脚本内容如下:
 
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
echo "show parm list:$*"
echo "show process id:$$"
echo "show precomm stat: $?"
保存退出
 
赋予脚本执行权限
 
# chmod +x variable
 
执行脚本
 
# ./variable aa bb
number:2
scname:./variable
first:aa
second:bb
argume:aa bb
show parm list:aa bb
show process id:24544
show precomm stat:0
 
通过显示结果可以看到:
 
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
3.数组:

定义:array_name[0]=value0

读取:${array_name[index]}

4.Shell 基本运算符


expr命令为Linux中的命令,一般用于整数


值计算,但也可用于字符串操作


val=`expr 2 + 2`
echo "两数之和为 : $val"

5.字符串的输出:

read name echo "$name It is a test"
echo "It is a test" > myfile//

显示结果定向至文件

原样输出字符串,不进行转义或取变量(用单引号)echo '$name\"'


http://www.runoob.com/linux/linux-command-manual.html命令大全

6.VIM:


6.重定向:

command1 < file1输入重定向

command > file 将 stdout 重定向到


 file,command < file 将stdin 重定向到


 file。

 追加到 file 

command 2 >> file
 command 2 > file//重定向


7.

  • 管道命令与重定向区别

区别是:

1、左边的命令应该有标准输出 | 右边的命令应该接受标准输入
   左边的命令应该有标准输出 > 右边只能是文件
   左边的命令应该需要标准输入 < 右边只能是文件

 

2、管道触发两个子进程执行"|"两边的程序;而重定向是在一个进程内执行

这些都是网上总结很多的,其实只要多加清楚用法,也一定有自己的一份不同描述。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#可以相互转换情况
#输入重定向
 
[chengmo@centos5 shell]$ cat test.sh|grep -n'echo'
5:   echo "very good!";
7:   echo "good!";
9:   echo "pass!";
11:   echo "no pass!";
#"|"管道两边都必须是shell命令
 
 
[chengmo@centos5 shell]$ grep -n'echo' <test.sh   
5:   echo "very good!";
7:   echo "good!";
9:   echo "pass!";
11:   echo "no pass!";
#"重定向"符号,右边只能是文件(普通文件,文件描述符,文件设备)


一.linux命令:


修改档案时间或新建档案:touch30


-a修改访问时间


以二进制的方式读取档案内容:od


只看尾几行:tail27


只看头几行:head26


一页一页的显示档案内容:more


由第一行开始显示档案内容:cat22


移动档案与目录,或更名:mv20


移除档案或目录:rm19


复制档案或目录:cp18


档案与目录的显示:ls17


删除『空』的目录:rmdir16


建立新目录:mkdir15


显示当前所在目录:pwd14


变换目录:cd


改变文件的权限:chmod11


http://blog.csdn.net/xiaoguaihai/article/details/8705992


vim:


一般模式切换到编辑模式的快捷键:


i光标所在处符插入


a光标所在下一个字符插入


o光标所在下一个行插入


r取代光标文字


一般模式切换到指令模式:


:wq!强制存储离开


http://blog.csdn.net/xiaoguaihai/article/details/8707051




Linux查看CPU和内存使用情况
top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。
Linux系统怎样执行进程调度,就是执行schedule()函数,


二.死锁:
谓死锁:是指多个进程在运行过程中因争夺资源而造成的一种僵局。
互斥条件:进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用。
请求和保持条件:指一个进程已经保持了至少一个资源,但又提出新的资源请求,而此资源被其他占用,此时请求进程阻塞,但又对自己已经占用的资源保持不放。
不剥夺条件:进程已经获得资源,在未使用完之前,不能被剥夺,只能在使用完时,由进程自己释放。
环路等待条件:发生死锁时,必然存在一个进程-资源的环形链。
有序资源分配法避免死锁


0 0