设为首页 加入收藏

TOP

Shell命令(一)
2023-07-23 13:34:04 】 浏览:55
Tags:Shell 命令

1.shell命令的执行机制:fork+exec执行命令(任何的shell都会执行)

2.shell中的用户输入处理

1  命令行参数:选项、参数
2  运行时输入
3  read命令:
4  1.基本读取、
5  2.超时处理-t选项、
6  3.隐藏方式读取-s选项)
7  4.从文件中读取

3.shell的反引号

1 /*
2 ``反引号在Linux shell命令行中有特殊的含义:反引号间的内容,会被shell先执行。其输出被放入主命令后,主命令再被执行。命令替换,即完成引用的命令的执行,将其结果替换出来,与变量替换差不多
3 */
4 echo `date '--date=1 hour ago' +%Y-%m-%d-%H`  
5 echo $(date '--date=1 hour ago' +%Y-%m-%d-%H)

4.setuid

 setuid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。
 因此当程序设置了setid权限位时,普通用户会临时变成root权限,但实际用户任然是原来的mike。

5.linux文件

 /etc/mtab文件的作用:记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;
/etc/fstab是系统准备装载的find命令:以递归的方式进行搜索文件或文件夹

6.find命令

1 1  --查找当前目录下所有文件中包含deposit_account的文件 
2 2  -- f 普通文件 l 符号连接 d 目录 c 字符设备 b 块设备 s 套接字 p Fifo
3 3  find . -type f -print |xargs grep "deposit_account"
4 4  --查找根目录下名字为create.txt的文件
5 5  find / -name "create.txt"
6 6  --查找根目录下文件大小大于100M的文件
7 7  find / -size +100M
8 8  --使用find查找png和jpg的文件 -o 指定多个-name选项
9 9  find . -name '*.png' -o -name '*.jpg' -type f
find

7.for循环

 1  1  /*for 变量名 in 取值列表({1..100}--1到100依次执行、{1..100..2} --间隔2个)
 2  2  do
 3  3     命令序列
 4  4  done
 5  5  --举例*/
 6  6  sum=0
 7  7  for ((i=1;i<100;i++))
 8  8  do
 9  9     sum=$($i+$sum)
10 10  done
11 11     echo "0-100的和为:" $sum
for循环

8.正则表达式

 1  1  --行首定位符“^”:用来匹配行首的字符
 2  2  --列出etc目录下以po开头的文件
 3  3  str='ls /etc |grep "^po"'
 4  4  echo "$str"
 5  5  ?
 6  6  --行尾定位符“$”
 7  7  str='ls /etc |grep "conf$"'
 8  8  echo "$str"
 9  9  ?
10 10  --单个字符匹配“.”:圆点“.”用来匹配任意单个字符,包括空格,但是不包括换行符“\n”
11 11  --列出所有的包含字符串“13”的文件名
12 12  str=`cat dian.txt | grep "13"`
13 13  echo "$str"
14 14  echo "-------------"
15 15  --列出包含字符串'13'以及另外一个字符的文件名
16 16  str=`cat dian.txt | grep "13."`
17 17  echo "$str"
18 18  ?
19 19  --限定符“*”:用来指定其前面的一个字符必须要重复出现多少次才能满足匹配
20 20  str=`ls /etc | grep "^sss*"`
21 21  echo "$str"
22 22  ?
23 23  --字符集匹配“[]”
24 24  /*"[a-f]”表示匹配字母表中a到f中的任意一个字母。
25 25  “[0-9]”表示匹配任意单个数字
26 26  "[^b-d]” 匹配除了从 b 到 d 范围内所有的字符  --取反
27 27  */
28 28  --筛选所有以字符r开头,并且紧跟着1个字符c的文本行
29 29  str='ls /etc |grep "^rc"'
30 30  echo "$str"
31 31  echo "---------------------"
32 32  --筛选所有以字符r开头,紧跟着1个字符为c,下面1个字符为单个数字的文本行
33 33  str='ls /etc | grep "^rc[0-9]"'
34 34  echo "$str"
35 35  ?
36 36  ?
37 37  --字符集不匹配“[^]”:表示不匹配其中列出的任意字符
38 38  "[^b-d]” 匹配除了从 b 到 d 范围内所有的字符  
39 39  ?
40 40  --反斜杠字符 \转义  使这个字符表示原来字面上的意思
41 41  “\$“表示了原来的字面意思”$”,而不是在正则表达式中表达的匹配行尾的意思.
42 42  ?
43 43  --转义(escape) “尖角号” \<...\>
44 44  用于表示单词的边界. 尖角号必须被转义,因为不这样做的话它们就表示单纯的字面意思而已."\<the\>" 匹配单词"the",但不匹配"them", “there”, “other”, 等等.
正则表达式

9.扩展正则表达式

 1  1 --限定符“+” :匹配一个或多个前面的字符.和*相似,区别是它不匹配零个字符的情况.
 2  2  --筛选以字符串“ss”开头,后面至少紧跟着1个字符“s”的文本行
 3  3  str=`ls /etc | egrep "^sss+"`
 4  4  echo "$str"
 5  5  --输出
 6  6  sssd
 7  7  ?
 8  8  --限定符“?”:限定前面的字符最多只出现1次,即前面的字符可以重复0次或者1次。
 9  9  str=`ls /etc | egrep "^sss?"`
10 10  echo "$str"
11 11  --输出
12 12  ssh
13 13  ssl
14 14  sssd
15 15  ?
16 16  --竖线“|” 和圆括号“()”:
17 17  --竖线“|” 表示多个正则表达式之间“或”的关系
18 18  --竖线“|” 表示多个正则表达式之间“或”的关系
19 19  #筛选含有字符串“ssh”、“ssl”或者以字符串“yum”开头的文本行
20 20  #grep -E主要是用来支持扩展正则表达式
21 21  #grep -E =egrep
22 22  str=`ls /etc | egrep "(ssh|ssl|^yum)"`
23 23  echo "$str"
24 24  ?
25 25  ?
26 26  --转义“大括号”{}指示前边正则表达式匹配的次数,
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql二进制安装脚本部署 下一篇LVS+keepalived+nginx+tomcat 主..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目