![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
shell
文章平均质量分 85
舌耳
一入江湖岁月催
展开
-
shell的变量
变量按照惯例,Shell变量由全大写字母加下划线组成,有两种类型的Shell变量:环境变量可以从父进程传给子进程,因此Shell进程的环境变量可以从当前Shell进程传给fork出来的子进程。用printenv命令可以显示当前Shell进程的环境变量。2.本地变量只存在于当前Shell进程,用set命令可以显示当前Shell进程中定义的所有变量(包括本地变量和环境变量)和函数。...原创 2018-08-18 13:02:56 · 196 阅读 · 0 评论 -
shell脚本的调试方法
Shell提供了一些用于调试脚本的选项,如下所示:-n读一遍脚本中的命令但不执行,用于检查脚本中的语法错误-v一边执行脚本,一边将执行过的脚本命令打印到标准错误输出-x提供跟踪执行信息,将执行的每一条命令和结果依次打印出来使用这些选项有三种方法,一是在命令行提供参数 $ sh -x ./script.sh二是在脚本开头提供参数 #! /bin/...原创 2018-08-21 20:23:10 · 190 阅读 · 0 评论 -
shell的函数
shell中的函数非常简单,例如: #! /bin/sh foo(){ echo "Function foo is called";} echo "-=start=-" foo echo "-=end=-"注意:函数体的左花括号'{'和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号'}'写在同一行,命令末尾必须有;号。在定义foo()函...原创 2018-08-20 19:24:45 · 133 阅读 · 0 评论 -
shell的位置参数和特殊变量
shell中有很多自动复制的变量常用的位置参数和特殊变量有$0 相当于C语言main函数的argv[0]$1 $2 $3....位置参数,相当于argv[1],argv[2],argv[3]$# 相当于argv -1$@ 表示参数列表(可以用做for的遍历)$* 表示参数列表$? 上一条命令的exit sta...原创 2018-08-20 19:20:34 · 629 阅读 · 0 评论 -
find详解
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。一、find 命令格式1、find命令的一...原创 2018-08-23 13:35:21 · 2216 阅读 · 0 评论 -
shell 练习题(7)
显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit 显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep "^[[:space:]]...原创 2018-08-27 15:21:06 · 438 阅读 · 0 评论 -
shell 练习题(6)
显示当前系统上所有用户的shell,要求,每种shell只显示一次; # cut -d: -f7 /etc/passwd | sort -u 取出/etc/passwd文件的第7行; # head -7 /etc/passwd | tail -1 显示第3题中取出的第7行的用户名; # head -7 /etc/passwd | tail -1 | c...原创 2018-08-27 15:20:00 · 520 阅读 · 0 评论 -
shell 练习题(5)
统计404的连接 awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort 统计http status cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'cat access.lo...原创 2018-08-27 15:18:29 · 752 阅读 · 0 评论 -
shell 练习题(4)
找查较多的SYN连接 netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more 根据端口列进程 netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1 获得访问...原创 2018-08-27 15:14:47 · 245 阅读 · 0 评论 -
shell 练习题(3)
编写shell程序,实现自动删除30个账号的功能。账号名为std01至std30。 用户清理,清除本机除了当前登陆用户以外的所有用户 设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名,为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。 对于一个用户日志文件,每...原创 2018-08-27 15:13:15 · 499 阅读 · 0 评论 -
shell 练习题(2)
写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录。 编写shell脚本获取本机的网络地址。 编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下 编写一个名为myfirstshell.sh的脚本,它包括以下内容。 a) 包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的。b) 问候用户。c) 显示日期和时间。d) 显示这个月的日...原创 2018-08-27 15:11:27 · 1182 阅读 · 3 评论 -
shell 循环语句for/do/done和while/do/done以及break,continue
for/do/doneShell脚本的for循环结构和C语言很不一样,它类似于某些编程语言的foreach循环。例如: #! /bin/sh for FRUIT in apple banana pear; do echo "I like $FRUIT" doneFRUIT是一个循环变量,第一次循环$FRUIT的取值是apple,第二次取值是banana...原创 2018-08-19 22:58:17 · 69064 阅读 · 0 评论 -
grep 详解
1,作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符...原创 2018-08-22 13:40:36 · 359 阅读 · 0 评论 -
正则表达式
字符类字符 含义 举例. 匹配任意一个字符 abc.可以匹配到 abcd,abc9 等等[] 匹配括号中的任意一个字符 [abc]d 可以匹配到ad,bd,cd。- ...原创 2018-08-22 12:04:45 · 121 阅读 · 0 评论 -
shell语法 case/esac
case命令可类比C语言的switch/case语句,esac表示case语句块的结束。C语言的case只能匹配整型或字符型常量表达式,而Shell脚本的case可以匹配字符串和Wildcard,每个匹配分支可以有若干条命令,末尾必须以;;结束,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳到esac之后,不需要像C语言一样用break跳出。 #! /bin/sh ...原创 2018-08-19 19:40:20 · 19308 阅读 · 2 评论 -
shell if/then/elif/else/fi
shell中用if/then/elif/else/fi实现分支控制,本质上是由若干条shell命令组成。例如if [ -f ~/.bashrc ]; then . ~/.bashrcfi如果两条命令需要在同一行写,那么用;隔开,一行只写一个命令则不需要用;隔开。命令与各参数之间需要用空格隔开。if 后面的子命令,如果该命令的exit status为0则...原创 2018-08-19 11:25:15 · 5693 阅读 · 0 评论 -
shell 条件测试
条件测试:test []命令test或[]可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:[root@localhost ~]# var=2[root@localhost ~]# test $var -gt 1[root@localhos...原创 2018-08-18 19:54:56 · 248 阅读 · 0 评论 -
shell 通配符,`或$(),$(()),转义字符\,单双引号
通配符 * ? []* 用来匹配0个或多个任意字符? 用来匹配一个任意字符[数个字符] 匹配方括号中的任意一个字符出现一次[root@localhost ~]# ls /dev/ttyS*/dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3...原创 2018-08-18 16:42:33 · 13704 阅读 · 0 评论 -
shell 练习题(1)
1.求2个数之和#!/bin/bashecho $(($1+$2))2.计算1-100的和#! /bin/sha=0sum=0while [ 0 ];do sum=$(($sum+$a)) a=$(($a+1)) if [ $a -eq 101 ];then break fidoneecho $sum3.将一目录下所有的文件的扩展名改为b...原创 2018-08-25 08:15:43 · 421 阅读 · 0 评论