热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

abdshell关闭所有程序_linux——shell编程(整体框架与基础笔记)

1、终端、shell和bash详细的区别与联系:点这里一个最简单的“Helloworld”显示程序:#!binbashechoHelloworld
6e4a3611ba278d289612ef48b9178446.png

1、终端、shell 和 bash

详细的区别与联系:点这里

一个最简单的 “Hello world” 显示 程序:

#! /bin/bash
echo "Hello world"

#!/bin/bash 的作用:说明是用哪一个shell 来解释文件,如果没写,默认使用 $SHELL 里设置的shell

#! 可以用来指定不同的命令解释器,比如我们指定 rm 程序, 以下是一个自删除脚本:

#!/bin/rm
# 自删除脚本
# 当你运行这个脚本时,基本上什么都不会发生...... 当然这个文件消失不见了
WHATEVER = 65
echo "This line will never print"
exit $WHATEVER #脚本不会执行上面这几句#!/bin/rm

2、常用的基础命令

echo:显示一个字符串

pwd:打印当前工作目录

whereis: 查看与程序相关的路径

source: 在当前的环境下执行指定的脚本文件,其执行结果会影响当前环境,比如执行的脚本 中cd执行会影响当前工作目录

more 或 less : 以翻页的方式查看文件,less 相比与 more 多了一些功能上的特性

cat: (连接文件)将文件输出到标准输出

head | tail: 输出文件的头或尾的一部分

grep: 打印符合特定模式的行

> | : 重定向 和 管道

ls 显示当前目录下的文件(ll 等)

read: 从标准中读取一行

printf "Enter new password:"
stty-echo
read poss printf "Enter again"
read pass2 ......例子:/dev/tty 读取密码

3、Linux Shell 的变量

普通变量:

例子:

1 vname="content" 2 echo "$vname" 3 echo '$vname'

变量赋值:= 的两边不能有任何空格

变量援引:line 2 显示 “content” ;line 3 显示 “$vname”

数值变量运算:

let "var += 4"
var=$(($var + 4))

环境变量:

unset:从当前shell删除变量或函数

export:修改当前进程的环境变量

env:显示环境中的环境变量和对于的值

注意:env 和 set 函数不同。env函数显示的是环境变量,而set显示的是所有本地变量,包括用户的环境变量。

环境变量相关文件的设置:点这里

shell 脚本语法:(条件、循环等) 点这里

4、编程语法 与 文本处理

由于这两部分内容相对较多,为避免文章篇幅过大,这两部分分别在具体的文章里记录。

编程语法:点这里

文本处理:点这里

5、正则表达式

概要

正则表达式在UNIX/Linux 系统中有广泛的结合与应用,用来强化工具本身的功能。常见的 UNIX 下支持正则表达式的工具有:

  • 用于匹配文本行的 grep 工具族
  • 用于改变输入流的 sed 流编辑工具(steam editor)
  • 用于处理字符串的语言,如 awk 、python 、perl 、Tcl 等语言
  • 文件查看程序,或分页程序,如more ,page,less
  • 文本编辑器,如 ed,vi, emacs,vim 等

gerp 族有曾有三种版本:

grep 最早的文本匹配程序。使用 POSIX 支持的基本正则表达式 (Basic Regular Expression, BRE)

egrep 拓展的grep 。使用拓展正则表达式 (Extended Regular Expression,ERE)

fgrep 快速grep (fast/fixed grep)。这个版本用于匹配固定字符串而不是正则表达式

1992 年 POSIX标准 将其合而为一,只推荐使用grep,其他用参数来支持。

基础

正则表达式中有两种基本字符匹配,特殊字符(meta Character , 元字符)和一般字符。

POSIX BRE 和 ERE 都支持的meta字符:

^    锚定行或字符串的开始。BRE仅在正则表达式的结尾处有意义,ERE在正表达式的任何地方都

     有特殊意义(.*^word 在ERE有效,但是意义?)

$    锚定行或字符串的结尾。在BRE 与 ERE的区别同上

.     匹配一个非换行符的字符。

*    匹配先前字符任意多个,包括0

[...]   方括号表达式(Bracket Expression ),匹配方括号里任意一个字符 [^A-FH-Z] 表示匹

     配大写字母G和其他除大写字母外的字符/

     用于打开或关闭后续字符的特殊含义。如 ()

POSIX BRE 和ERE 支持不同的meta字符

仅 BRE:

()     ()两个符号之间的模式被储存在保留空间(Holding Space),在后续通过转义引用,最多储

       存9个。(a).*1 表示2个a中间有任意字符的串。

n      与上面的()结合使用,n为1~9

x{m,n}  x表示模式,表示x出现m~n次,x{n} 表示出现n次,x{m,} 表示出现至少m次

仅 ERE:

x{m,n}  同上一条

+     相比* , 不包括0

?      匹配0个或1个

|      匹配前面 “或” 后面的正则表达式

()     匹配使用括号括起来的正则表达式群,如 (a.*a)|(b.*b) 表示匹配2个a中间有任意字符的串 或 2个b的情况。

GNU 版本 的grep 支持额外的 meta字符:

<    锚定单词的开始&#xff08;不仅仅是行的开始&#xff09;

>    锚定单词的结束

w    匹配文字和数字字符&#xff0c;等价于 [A-Za-z0-9]

W    w 的反义

b    锁定单词&#xff0c;如“bgrepb”只匹配前后有空格或行开始与行结束的串

为了在不同国家的字符编码中保持一致&#xff0c;POSIX &#xff08;The Portable Operating System Interface&#xff09;增加了特殊的字符类&#xff1a;

[:alnum:]  A-Za-z0-9

[:alpha:]  文字字符

[:blank:]  space 和 tab

[:digit:]   数字

[:graph:]  非空字符&#xff08;非空格、控制字符&#xff09;

[:lower:]  小写字符

[:cntrl:]   控制字符

[:print:]   可打印字符&#xff0c;非空字符&#xff08;包括空格&#xff09;

[:punct:]  标点符号

[:space:]   space 和tab 和 换行符

[:upper:]  大写字符

[:xdigit:]   十六进制数 &#xff08;0-9&#xff0c;a-f ,A-F&#xff09;

这样就可以使用[:alpha:]匹配中文了&#xff1b;上面字符使用的时候必须置于[] 中才能成为正则表达式。

比如匹配数字字母下划线&#xff1a; grep -E "[[:digit:][:alpha:]_]&#43;"

6、进程相关

ps&#xff1a; 显示当前进程的快照 &#xff08;常用参数 aux 或 -elf &#xff09;

pstree: 打印进程结构

top : 显示系统的进程

后台方式启动程序&#xff1a;command &

jobs&#xff1a; 查看当前会话的作业状态 &#xff08;-l 参附加地显示任务的进程号&#xff09;

Ctrl-Z&#xff1a; 可以使前台任务挂起暂停执行

bg: (将当前作业带入后台) 对于后台挂起暂停的进程&#xff0c;转到后台继续执行&#xff1b; 使用 %jobID 参数可以指定具体的进程

fg: 将后台进程 (由&#43;号指定) 置于前台

stty tostop : 如果后台具有终端输出。该命令强制停止该作业

kill -l : 列出所有进程调度信号

nice: 以指定的优先级启动一个程序

crontab 和 at &#xff1a;调度例程或单个&#xff08;一次&#xff09;系统任务。

产生信号的方式&#xff1a;

1) 终端按键&#xff1a;Ctrl&#43;C: SIGINT Ctrl&#43;Z:SIGSTOP Ctrl&#43;:SIGQUIT

2) 通过系统调用&#xff1a;kill -SIGTERM 45624 | kill -9 4546

3) 通过函数&#xff08;软件&#xff09;&#xff1a;kill(SIGTERM,456465);

嵌入式物联网资料分享交流群&#xff1a;332650978 入群有全套学习视频资料电子书免费赠送&#xff01;

参考资料&#xff1a;

shell脚本-变量_Linux 基础_JAVA架构师​www.makeru.com.cn
9fdfc44456f08949ee1aaa6478ed3cb5.png
shell基本系统维护命令_Linux 基础_JAVA架构师​www.makeru.com.cn
aa7a965bd23a0c1ce5d4348197a363b1.png
Linux介绍_Linux 基础_JAVA架构师​www.makeru.com.cn
aa7a965bd23a0c1ce5d4348197a363b1.png
线程模型及线程创建_Linux多线程编程 _物联网开发工程师​www.makeru.com.cn
7a65ce605f9a2eb823c2c539445d9773.png



推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 开发笔记:select from具体执行相关知识介绍及案例分析
    本文由编程笔记小编整理,主要介绍了select from具体执行相关的知识,包括数据插入、查询最小rowID、查询每个重复名字的最小rowID、删除重复数据等操作,并提供了案例分析。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • R语言拼接字符串_paste的用法说明
    这篇文章主要介绍了R语言拼接字符串_paste的用法说明,具有很好的参考价值,希望对大家有所帮助。一 ... [详细]
  • 随着我司的应用都开始容器化,相应的ETL流程也需要迁移到容器中。常规的SQL和shell脚本迁移之后执行基本没有问题,主要的问题在于数据接入使用kettle的场景下,kettle启 ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
author-avatar
mobiledu2502918113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有