首页 > 系统相关 >SHELL

SHELL

时间:2024-10-20 13:01:53浏览次数:6  
标签:SHELL name argv echo 参数 file find

shell脚本运行4种方法:

1. chmod a+x myshell.sh

   ./myshell.sh

2. . myshell.sh

3. source myshell.sh

4. /bin/bash myshell.sh

shell 语法:

数据类型: 字符串 String 

	变量:	全局变量 ---- 环境变量

		局部变量 ---- 本地变量

		变量名=变量值		VAR=10

	对比:
		$变量名:	取变量的值

		${变量名}:	取变量的值(更安全)

		$(命令):	取命令执行结果

		$((变量名)): 	对变量执行算数运算

		$[变量名]: 	对变量执行算数运算

	导出:export

	删除:unset

	* ? [0123456789][0-9]

	命令代换:

		$() == ``  	VAR=`date` 

	算数代换:

		$(()) == $[]
		
	转义字符:

		\ 转特殊意 , 转本身意

		-- 

	单引号: 括字符串 --- 不能展开变量

	双引号: 括字符串 --- 可以将变量 展开。    --- 建议,在取变量值时,都加“”。尤其是在 测试条件中。


控制语句:if、else、switch case、for、while ...

	条件判别表达式:真:0	假:1

	test 测试条件

	[空格 测试条件]

	整数判别符:	-eq 等于			只能用在 整数之间。

			-ne 不等于

			-gt 大于

			-lt 小于

			-ge 大于等于

			-le 小于等于

	文件类型判别符:-d 目录文件

			-f 普通文件

			-p 管道

			-l 软连接

			-c 字符设备

			-b 块设备

			-s socket

	字符串长度判断:				
			-z 空字符串(长度0)

			-n 非空字符串(长度非0)

	字符串判等:					不能使用 整数判断的 符号

			=  相等

			!= 不等

	逻辑运算:	a  -- && 逻辑与

			o  -- || 逻辑或

			!	逻辑非


【if语句】:

	if [ 判别条件 ]; then
		
		执行内容

	elif [判别条件]

		执行内容
	else
		执行内容
	fi

demo:

! /bin/bash

echo "请输入你要判别的文件名:"

read file_name

if [ -f "$file_name" ];then
echo 'it is a file'

elif [ -d "$file_name" ];then

echo 'It is a dir'

elif [ -p $file_name ];then

echo 'It is pipe'

else
echo 'it is not a known file'
exit 1
fi

【case分支语句】:

! /bin/bash

echo "请输入你要判别的文件名:"

read file_name

case "$file_name" in

testfile|file1|file2)
echo "it is a file";;
testdir|dir1|dir2)
echo "it is a dir";;
p1)
echo "It's a pipe";;
*)
echo "not found";;

esac

【for循环语句】:

! /bin/bash

for TEST in ls;do
ls -l $TEST
done

【while循环换语句】:

! /bin/bash

count=1

read passwd

while [ $passwd != "itcast" -a $count -lt 3 ]; do
echo "Try again"

count=$[count+1]

read passwd

done

【位置参数】:
	
	$0:	类似于C中的argv[0] ---- 描述可执行程序名

	$1-$N:  类似于C中的argv[1]--argv[N] 命令行参数

	$#:	计算命令行参数的个数(不包含 argv[0])

	$*/$@:  表示所有的 argv 命令行参数(不包含 argv[0])

	$$: 	取出本进程的进程号 

	shift 左移 命令参数  

函数:	
	函数名(){ 

		函数体 
	}

	函数传参:	函数名 参数1 参数2 参数3 ...... 参数N

		函数外:$0 ---命令行参数的 argv[0]

			$1-$N 命令行参数的 argv[1]-argv[N]

		函数内:$0 ---命令行参数的 argv[0]

			$1-$N 函数的参数1--参数N
	

面向对象: 继承、重载、封装、多态。。。

框架:

正则表达式:

字符类使用的 符号:

	. 匹配一个字符

	* 匹配多个字符

	[]匹配指定范围的字符

	- 在[]内, 设定范围

	^ 匹配除该符号以后的其他字符, 在[]内使用

grep 找文本容

grep -R -r “” /目录位置

find 找文件

-name

	find ./ -name "init"    find /目录位置  参数  “匹配项”

-size
	
	find ./ -size +3M -size -7M 

	find ./ -size +20k -size -80k

	find ./ -size +200 -size -500  --> 单位: 512B(扇区的大小 0.5k)

-type
	-d/-f/-p/-l/-s/-c/-b

	find ./ -type f
	
-maxdepth

	find ./ -maxdepth 2  -type d

-exec

	find ./ -maxdepth 2  -type d -exec ls -ld {}\;

-ok:								交互版的 -exec

	find -maxdepth 1 -type d -ok rm -rf {}\;

-xargs

	find -maxdepth 1 -type f | xargs ls -ld

-print

	touch test\ test.c   ---》 “test test.c”

	find -maxdepth 1 -type f -print0 | xargs -0 ls -ld


-atime|ctime|mtime: 天为单位

	a:访问

	c:文件内容修改

	m:文件属性被修改

-amin|cmin|mmin:分钟为单位

	find ./ -name "syslog*" -mtime +5 -exec ls -l {} \;

sed ----行

格式1: sed  参数  脚本语句(/pattern/动作)  目标文件

格式2: sed  参数  -f 脚本文件	 目标文件

a: 追加

i:插入

d:删除

s:替换

s/原串/目标串/g ---> action

p: 打印 ---- 满足条件打印两次,没有满足打一次。

-n: 原输出静默。

-i: 反应到源文件中

&: 替代原串

\1 \2: 原串中的第一个字符,第二个字符。

贪心算法。

基础正则。 -E 选用扩展正则。

awk ----列。

格式1: awk  参数  脚本语句(pattern { 动 作 })  目标文件

格式2: awk  参数  -f 脚本文件	 目标文件


awk '$2>75 {print $0} $2<75 {printf "%s %s\n", $0, "reorder"}' testfile 

awk '$2>75 {print $0} $2<75 {printf("%s %s\n", $0, "reorder");}' testfile 

awk '$2>75 {print $0} $2<75 {print $0 " reorder";}' testfile 


CC  CFLAGS  CPPFLAGS...

脚本语句:

	1. /pattern/ { 动作 }

	2. condition { 动作 }

		condition :BEGIN、END

c中使用正则。

egrep "^([0-9]{1,3}\.){3}[0-9]{1,3}" test.regex


1. regcomp(): 编译正则表达式。————结构体。--》描述 "^([0-9]{1,3}\.){3}[0-9]{1,3}" 

2. regexec():  执行正则表达式。------》 用结构体样式的正则,匹配字符串

3. regfree(): 释放正则表达式。————结构体。释放

regerror():正则错误处理函数。 perror


1. int regcomp (regex_t *compiled, const char *pattern, int cflags)

	参1: 传出参数。结构体,用于保存转化后的正则表达式。  regex_t regex;  &regex

	参2:正则表达式字符串。

	参3:	REG_EXTENDED : 选用 扩展正则

		REG_NOSUB : 当指定该选项时。说明,不保存正则表达式匹配后的结果。

				影响regexec() nmatch = 0 和pmatch = NULL;

		REG_ICASE: 忽略大小写

		REG_NEWLINE: 识别换行符。 ^ $

	返回值:成功:0 失败:错误号。

2. int regexec (const regex_t *compiled, const char *string, size_t nmatch, regmatch_t matchptr[], int eflags)

	参1:regcomp传出参数。已经转化成结构体正则表达式

	参2:待匹配字符串

	参3:数组大小。欲使用该参数,要求:regcomp() 参3,应设置为非 REG_NOSUB 。

	参4:用于盛装匹配成功的结果集的数组。 欲使用该参数,要求:regcomp() 参3,应设置为非 REG_NOSUB 。

	参5:设置^ $ 失效。

		REG_NOTBOL、REG_NOTEOL

	
	返回值:成功:0 失败:错误号

3. void regfree (regex_t *compiled)

标签:SHELL,name,argv,echo,参数,file,find
From: https://www.cnblogs.com/pony1223/p/18487134

相关文章

  • openvpn2.0.9搭建和windows客户端拨号连接vpn,并用xshell连接机房只有内网的服务器
    openvpn2.0.9搭建和windows客户端拨号连接vpn,并用xshell连接机房只有内网的服务器如果对运维课程感兴趣,可以在b站上、csdn或微信视频号上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频1.openvpnserver服务器的安装、配置和服务启动:vpnserver服务器:(......
  • VSCode + Python + Shell 调试 (Debug) : debugpy
    场境:使用VSCode对一个用Shell脚本启动的Python程序进行Debug.1.debugpy安装在激活了相应的conda虚拟环境后,安装debugpy库:pipinstalldebugpy2.查看可用端口运行forportin{5000..6000};do(echo>/dev/tcp/localhost/$port)>/dev/null2>&1||echo"$portis......
  • shell脚本总结
    生成菜单法1:#!/bin/bash#定义颜色变量RED='\033[1;31m'GREEN='\033[32m'YELLOW='\033[33m'BLUE='\033[34m'NORMAL='\033[0m'PS3=`echo-e"${GREEN}请选择一个选项:${NORMAL}"`options=("选项1""......
  • 从零开始 -- Powershell入门
    学习一门技术,不止要会,还要善用,例子就是带你快速入门的最佳利器。本文就是要用例子,不,大量的例子来带你走进PowerShell应用世界。本文主要介绍一些PowerShell入门的基础知识,对技术小白来说可以快速入门,对技术老鸟来说可以复习巩固,废话不多说,直接进入正题。PowerShell,相信大家早已......
  • 逆向 | shellcode注入模板
    逆向|shellcode注入模板继续写书里的示例代码。#include<stdio.h>#include<windows.h>typedefint(WINAPI*PMESSAGEBOXA)(HWNDhWnd,LPCSTRlpText,LPCSTRlpCaption,UINTuType);typedefFARPROC(WINAPI*PGETPROCADDRESS)(HMODULEhModule,LPCSTRlpProcName);ty......
  • hdfs集群的shell操作
    1.进程启停管理:一键启动hdfs集群: start-dfs.sh一键关闭hdfs集群: stop-dfs.sh单独控制进程启停:hadoop-daemon.sh(start|status|stop)(namenode|datanode|secondarynamenode)     或者hadoop--daemon(start|status|stop)(namenode|datanode......
  • 关于Linux shell的简单分享
    背景前两天看到有人分享说,谷歌程序员至少要会3种语言,这要求倒也不过分。一个强类型、一个弱类型,一个工具型语言,刚好三个。想着随便更新点东西,就写几点关于工具shell语言的经验分享。在安装、部署、扩容、升级等重要场景中,Bash的方便性不言而喻。但我始终提醒大家,对代码保持敬......
  • PowerShell 实现删除指定路径X天前文件功能并添加定时JOB实例
    公司的POA服务器的E盘隔三差五就爆满,原因是数据库备份文件越来越大,现在已经大到需要高频清理的地步了十一前出现的这个问题,当时为了不专门在假期里某天特地去清理磁盘,想着一定要搞个定时JOB实现自动清理最后选用了PowerShell脚本实现新建一个txt文件,打开编辑内容如下:#设置要......
  • shell脚本自动选择空间最大的目录安装docker
    #!/bin/bash#二进制包安装docker-xy.xy.x-ce#变量unamer=`uname-r|cut-d'.'-f1-2`Max_Space=$(df|grep"^/dev"|sort-rn-k2|head-1|awk'{print$6}')Registry="mirror.eastraycloud.com:8665"#判断当前系统类型Unamer=$(uname-v|......
  • OS-Lab1-Linux的常见命令和Shell脚本编程
    Lab1:Linux常见命令的基本使用和总结:如ls、cd、mkdir、torch、rm、mv、clear、grep、find、cat、shutdown等。Lab2:Linux常见命令的应用案例:下面的步骤,通过相关的Linux命令,完成指定步骤的操作Lab3:VMware的Host(如Windows系统)与Guest(如UbuntuLinux)的数据交换:常见......