LinuxNote

linux之通过grep使用or、and、not操作 1 问题 linux之如何再搜索结果上过滤关键字1或者关键字2 2 解决办法 grep -P *** 这个的P是正则表达式的意思, 比如我们需要在当前目录下过滤文件 1.txt和2.txt,命令如下 ll -rw-r--r-- 1 root root 0 Jul 11 23:01 1.txt -rw-r--r-- 1 root root 0 Jul 11 2... 阅读详情

Linux 进阶

权限管理

一个文件或者目录有三种权限r/w/x
文件或者目录所归属的三类用户
- u: 属主
- g: 属组
- o: other
- a: all

常见命令

  1. chown:改变文件属主(只有管理员可以使用此命令)
chown USERNAME file, ...
-R: 修改目录及其内部文件的属主
--reference=/path/to/somefile file,...

还可以使用此命令来同时修改属主属组

chown USERNAME:GROUPNAME file, ...
chown :GROUPNAME file, ... #只修改属组
  1. chgrp:改变属组
chgrp GROUPNAME file, ...
-R: 修改目录机器内部文件的属主
--reference=/path/to/somefile file,...
  1. chmod: 修改文件的权限

可以改变三类用户的权限

chmod MODE file, ...
-R
--reference=/path/to/somefile file

修改某类用户或某些类用户的权限

chmod 用户类型(u,g,o,a)=rwx file
chmod g=r,o=w file
chmod go=rw file
chmod g=rx, o= file

修改某类用户的某些位的权限

#chmod ugoa +- MODE file, ...
chmod u-x file
chmod u+x,g-x file
chmod a-x file, chmod -x file #三类用户同时改变某位权限

掩码

umask:
666-umask //文件
777-umask //目录
默认文件不能具有执行权限,如果有则在权限上加1
例如,如果umask为023,则新建文件的权限为666-023=643,但由于不能具有执行文件,则生成的文件权限为644
对应生成的目录权限为777-023=754

掩码修改后,每次登录shell后,被重置为002,why?

站在用户登录的角度来说,SHELL的类型:

登录式shell
- 正常通过某终端登录
- su -USERNAME
- su -l USERNAME
非登录式shell
- su USERNAME
- 图形终端打开命令窗口
- 自动执行的shell脚本

bash的配置文件
全局配置

    /etc/profile, /etc/profile.d/*.sh, /etc/bashrc

个人配置

    ~/.bash_profile, ~/.bashrc

作用范围越小,越最终生效

profile类的文件:
1. 设定环境变量
2. 运行命令或脚本

bashrc类的文件:
1. 设定本地变量
2. 定义命令别名

登录式shell如何读取配置文件?

/etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc

非登录式shell如何配置文件?

~/.bashrc –> /ect/bashrc –> /etc/profile.d/*.sh

重定向

系统有多个输入输出设备,需要指定默认的输入输出设备

默认输入设备 键盘 标准输入 STDIN 0
默认输出设备 显示器 标准输出 STDOUT 1
默认错误输出设备 显示器 标准出错 STDERR 2

I/O 重定向

模式: 覆盖 > <

模式: 追加 >> <<

错误输出 2> 2>>

重定向标准输出或错误输出至同一个文件 &>

为防止对现存文件的覆盖操作,可以使用set -C来禁止对已存文件的覆盖行为,在此设置下可以使用 >| 来强制覆盖。
可以使用 set +C 来开启对已存文件的覆盖行为

<<: Here Document. 以该<<之后的字符为结束符, 作为输入。

cat << END
>hello world
>END
#以上代码将返回hello world

管道

命令tee可以将输入既显示在标准输入,同时存放在文件中

echo "hello world." | tee /tmp/hello.out

正则表达式

grep, egrep, fgrep.

grep: 根据模式搜索文本,并将符合模式的文本行显示出来。
pattern: 文本字符和正则表达式的元字符组合而成的匹配条件。

grep [options] PATTERN file
        -i #忽略大小写
        --color
        -v #只显示没有被匹配的行
        -o # 只显示被模式匹配到的字符串
        -E  # 使用扩展的正则表达式
        -A num #显示匹配到的行后面的num行
        -B num #显示匹配到的行前面的num行
        -C num #显示上下num行




正则表达式(Regular Expression, REGEXP):

元字符:
. : 表示任意单个字符
[]: 匹配指定范围内的任意单字符
[^]: 匹配指定范围外的任意单字符
字符集合: [:digit:], [:lower:], [:upper:], [:alnum:], [:space:], [:punct:]

grep ‘[[:digit:]]$’ file 以数字结尾的行
字符个数的元字符:
* : 匹配其前面的字符任意次
a*b 可以匹配 b, ab, aab, aaab, 可以匹配任何以b结尾的行
a.*b 可以匹配 a开头b结束的任意长度的任意字符串: acccb, adddb, amngfb

\?: 匹配其前面的字符1次或者0次:

a\?b 可以匹配acb, ccab, aaab, mnb grep ‘a\?b’ test.txt

{m,n}:匹配其前面的字符至少m次,至多n次, 如果没有上限,则可以省略n;如果至少为0,可以写为0,但不可以省略

{1,} , 匹配至少1次
{0, 1}, 匹配至多1次

位置锚定
^: 该字符之后的任意内容必须出现在行首
$: 此字符前面的内容必须出现在行尾
^$: 空白行

以字符开始字符结束,期间没有特殊字符的组合称为单词

\< 或者 \b:其后面的任意字符必须作为单词首部出现
> 或者 \b:其后面的任意字符必须作为单词尾部出现

\

扩展正则表达式

字符匹配
.
[]
[^]

次数匹配
*:
?:
+:匹配其前面的字符至少一次
{m,n} # 省略了反斜线

位置锚定
^
$
\<
\>

分组
(): 分组
\1, \2, \3, ...

或者
|: 表示or   例如C|cat表示匹配C字符或者cat单词

快速grep表达式, 不支持正则表达式,仅以字符匹配

shell 编程

编译器,解释器
编译语言: 机器语言、汇编语言、高级语言
静态语言:编译型语言

强类型(变量)
事先转换成可执行格式
C/C++/JAVA/C#

动态语言:解释型语言, on the fly

弱类型,
边解释边执行
eg. PHP/SHELL/Python/Perl/lua

面向过程:shell, C
面向对象:JAVA, Python, perl, C++

bash 变量类型

环境变量
局部变量
位置变量
特殊变量
  • 本地变量
    VARNAME=VALUE: 作用域为整个bash进程
  • 局部变量
    local VARNAME=VALUE:作用域为当前代码段
  • 环境变量: 作用域为当前shell进程及其子进程:
    export VARNAME=VALUE

**命令行中启动的脚本会继承当前shell环境变量
系统子佛那个执行的脚本(非命令行启动)就需要自定义所需的各环境变量。**

  • 位置变量
    $1, $2, …

  • 特殊变量
    $?:上一个命令的执行状态的返回值。

撤销变量
unset VARNAME

查看当前shell中的变量:
set

查看当前shell中的环境变量
printenv
env
export
都可以

可以定义变量多个值

ANIMALS=pig;
ANIMALS=$ANIMALS:goat
ANIMALS=$ANIMALS:sheep
#ANIMALS=pig:goat:sheep

引用变量
${VARNAME}, 括号有时可省略

bash中如何实现条件判断?
条件测试类型
整数测试
字符测试
文件测试
条件测试的表达式

[ expression ]
[[ expression ]]
test expression

整数比较:
-eq 测试两个整数是否相等: 比如 A−eqB
-ne 测试两个整数是否不等:不等,为真;相等为假
-gt 测试一个数是否大于另一个数:大于为真,否则为假
-lt 测试一个数是否小于另一个数:小于为真,否则为假
-ge 小于或等于
-le 小于或等于

命令间的逻辑关系
逻辑与:如果第一个为假,则不做第二的判断,直接为假;相反,如果第一个条件为真,则执行第二个语句
逻辑或:如果第一个为真,则不做第二个判断,直接为真;相反,如果第一个条件为假,则执行第二个语句

例如如果A不等于B,则执行某个程序

[ $A -eq $B ] && echo "Equal" || echo "Not Equal"
#如果A==B,则不执行echo,如果不等,则会echo
if statement; then
    statement1
    statement2
else
    statement3
    statement4
fi

“”与”的区别在于,如果“”中存在$VARNAME,将使用VARVALUE来替换它;相反”不会解析变量值

保姆级教程:用CANoe手把手复现ECU刷写全流程(含BootLoader三阶段详解) 本文提供了一份详细的CANoe ECU刷写实战指南,涵盖BootLoader三阶段的深度解析。从实验环境搭建到预编程、主编程及后编程阶段,逐步讲解ECU刷写的关键步骤和隐藏逻辑,特别强调UDS诊断和CAN通信的精确控制,帮助开发者掌握ECU刷写的核心技术。 阅读详情

相关推荐

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1101

linux命令(find中-a,-o,not的用法)

sudo find /etc -size +1M -exec echo {} \; #在/etc目录下找文件大小在1M以上的文件并且显示,文件用换行符隔开。 sudo find /etc -size +1M | xargs echo #达到-exec相同的功能但是用空格分开寻找到的文件。 #-exec后面的{} \;是不能少的。 find 紧跟的是指定开始寻找的绝对路径,我取当前路径。 find

liuhuiyan_2014的专栏 1万+

树莓派与无人机协同实战:基于OpenCV的地标识别优化策略

本文深入探讨了基于树莓派与无人机的协同系统,重点分享了利用OpenCV优化地标识别以实现精准降落的实战策略。内容涵盖从应对复杂光照的图像预处理、鲁棒的轮廓几何过滤,到通过ROS进行稳定通信,以及实现分层控制与状态机设计,旨在提升系统在真实环境中的可靠性与性能。

y2z3a4b5c的博客 1086

Linux命令:grep命令AND、OR、NOT实例

简介 在grep中,我们有相当于OR和NOT运算符的选项,但没有AND运算符。但是,我们可以使用模式来模拟AND。在本文的例子将有助于理解如何使用grep命令的OR, AND和NOT运算进行文本的搜索。 本文将使用下面的employee.txt文件作为例子讲解: $ cat employee.txt 100 Thomas Manager Sales $5,000 20...

Bob Liu的程序人生 2万+

Fast DDS源代码走读

DDS, PDP, EPD, DataWriter, DataReader

weixin_43082062的博客 715

SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比

本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。

chiman6219的博客 395

Linux指令not found

在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? pip用来安装来自PyPI(https://www.python.org/)的python所有的依赖包,并且可以选择安装任何在PyPI上已上传的先前版本的依赖包,个人认为是python相关的包和第三方包以及各种版本; apt-get可

于书盼的博客 2684

YOLOv8 + TensorRT 实战:手把手教你用 C++ 实现实时视频流目标检测(附完整项目代码)

本文详细介绍了如何将YOLOv8与TensorRT结合,通过C++实现实时视频流目标检测的全流程。从环境配置、模型转换优化到视频处理架构设计,手把手教你构建高性能检测系统,并附完整项目代码。特别针对Windows平台下的TensorRT模型加速部署提供了实用技巧和性能优化方案。

weixin_29051193的博客 347

Linux下的 command not found错误(解决方法)

Linux下的 command not found错误(解决方法)

it琦 的博客 47万+

形状记忆合金热机械本构模型的ABAQUS子程序实现与Fortran\_ABAQUS编程实践

本文详细介绍了如何使用ABAQUS子程序实现形状记忆合金的热机械本构模型,并通过Fortran_ABAQUS进行编程实践。我们首先介绍了问题的背景和目标,然后讲解了如何在Fortran_ABAQUS子程序中实现热变形模型、应力应变关系和相变模型,最后进行了ABAQUS模拟,并分析了模拟结果。希望通过本文的讲解,能让大家更深入理解ABAQUS子程序以及Fortran的使用,也希望能对大家在进行相关学习或研究工作时提供一些帮助。

qq_38334677的博客 1328

halcon算子翻译——connection

算子:connection(Region : ConnectedRegions : : ) 功能:分离一个区域中相连接的部分(变成多个区域)。 输入参数: Region:输入一个区域; 输出参数: ConnectedRegions: ———————————————— 版权声明:本文为优快云博主「机器人自动化控制」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/haier123888/article/details/1

haier123888的博客 4829

linuxnote

http://linuxnote.blog.51cto.com/9876511/1642287 转载于:https://blog.51cto.com/tenderrain/1658472

weixin_34403693的博客 96

飞腾UEFI配置GPIO—飞腾FT2000/4 (D2000/8) GPIO引脚配置及使用

讲解了在飞腾UEFI代码中如何添加GPIO配置相关代码,并以GPIO1_B0—B7为例,将这8个引脚配置为GPIO工作模式并默认输出低电平

qq_30135687的博客 5349

LinuxNote 第二章 新手必须掌握的Linux命令

目录第二章 新手必须掌握的Linux命令2.1 Shell2.2 命令格式及帮助命令 man2.2.1 命令格式2.2.2 帮助命令 man2.3 常用的系统工作命令 第二章 新手必须掌握的Linux命令 2.1 Shell 命令行工具(终端),Shell充当用户与内核(硬件)交互的翻译官,用户将命令告诉终端,它就会调用相应的程序服务去完成某些工作;目前主流为Bash,Bash不仅好用,而且应用广泛; 2.2 命令格式及帮助命令 man 2.2.1 命令格式 通常命令格式如下,且分为长和短格式(有例

mitays的博客 699

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LinuxNote 第零章 开源与Linux系统

目录Lesson1 开源与Linux系统一. 开源特性与常见开源协议1.1 开源特性1.1.1 四大特性1.1.2 六个自由1.2 常见开源协议二、Linux系统2.1 相对于windows系统,Linux的优点2.2 常见Linux系统版本 Lesson1 开源与Linux系统 一. 开源特性与常见开源协议 1.1 开源特性 1.1.1 四大特性 低风险:开源社区很少有闭源软件那样因倒闭等原因导致代码无人维护的情况发生; 高品质:开源项目通常是由开源社区来研发及维护,参与编写、维护、测试的用户极多,bu

mitays的博客 254

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Linux进程调度-linuxnote02

linuxnote01中学习了Linux中的进程,本篇将要学习系统中调度程序是如何对进程进行调度。在多任务系统中可分为非抢占式多任务(coorperative)和抢占式多任务(preemptive),Linux采用的则是后者,这就意味着进程对CPU的占用时间是由操作系统决定的,具体的说则是由操作系统中的进程调度程序所决定的。对CPU访问的裁决过程被称为调度(scheduling)。(本篇及后续所有...

为码消得人憔悴 433

Linux进程管理-linuxnote01

进程管理是所有操作系统的心脏所在,Linux也不例外。(本篇及后续所有的Linux学习都基于”LINUX内核修炼之道任桥伟著“和”Linux内核设计与实现“这两本书。站在巨人的肩上,我们得以往的更远。) 进程和线程 进程就是处于执行期间的程序(目标代码存在某种存储介质上),进程是动态的,程序是静态的。但进程不仅仅局限于一段可执行的代码,通常进程还要包含其他资源,比如打开的资源,挂起的信号,内核...

为码消得人憔悴 275

LinuxNote 第六章 存储结构与磁盘划分

目录第六章 存储结构与磁盘划分6.1 一切从 "/ "开始6.2 物理设备的命名规则 第六章 存储结构与磁盘划分 6.1 一切从 "/ "开始 在Linux系统中,目录、字符设备、套接字、硬盘、光驱、打印机等都会被抽象成了文件形式,即“Linux系统中一切都是文件”;但是在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS:Filesystem Hierarchy Standard)采用倒树状结构来存放文件,以及定义了常见

mitays的博客 498

LinuxNote 第一章 部署虚拟环境安装Linux 系统

目录第一章 部署虚拟环境安装Linux 系统1.1-1.4 虚拟机及系统安装1.5 RPM1.6 Yum软件仓库 第一章 部署虚拟环境安装Linux 系统 1.1-1.4 虚拟机及系统安装 省略。。。 1.5 RPM Redhat Package Manager(红帽软件包管理器),作用是降低安装的难度,能详细记录软件信息并自动分析依赖关系; RPM是由 “源代码” + “安装规则” 组成; 作用 命令 安装软件 rpm -ivh filename.rpm 升级软件 rpm -Uvh

mitays的博客 192

mydumper备份原理和使用方法 - linuxnote

时间 2014-07-01 09:50:31  博客园精华区 原文  http://www.cnblogs.com/linuxnote/p/3817698.html 主题 mydumper MySQL 自身的 mysqldump 工具支持单线程工作, 依次一个个导出多个表,没有一个并行的机,这就使得它无法迅速的备份数据。 mydumper 作为一个实用工具,能够良好

流浪猫之家 548

LinuxNote 第五章 用户身份与文件权限

目录第五章 用户身份与文件权限5.1 用户身份与能力5.1.1 id5.1.2 useradd5.1.3 groupadd5.1.4 usermod5.1.5 passwd5.1.6 userdelx.x.x model 第五章 用户身份与文件权限 5.1 用户身份与能力 Linux系统有三种用户身份: 管理员UID为0:系统的管理员用户。 系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。(

mitays的博客 252

LinuxNote 第七章 RAID与LVM磁盘阵列技术

目录第七章 RAID与LVM磁盘阵列技术7.1 RAID磁盘阵列7.1 部署磁盘阵列 第七章 RAID与LVM磁盘阵列技术 7.1 RAID磁盘阵列 RAID模式 特点 0 把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中;有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力 1 把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份); 5 把硬盘设备的数据

mitays的博客 306

LinuxNote 第四章 Vim编辑器与Shell命令脚本

目录第四章 Vim编辑器与Shell命令脚本4.1 Vim文本编辑器 第四章 Vim编辑器与Shell命令脚本 4.1 Vim文本编辑器

mitays的博客 233

Linux内存管理-linuxnote03

linuxnote01和linuxnote02中学习了Linux中进程线程的描述,并学习了Linux中如何进行进程管理,学习理解的过程中,我们有收获也有疑惑,比如什么是进程的地址空间这个地址空间存在哪儿,什么是内核栈,页表是什么?等等的问题,其中一些问题都是与Linux中内存管理相关,因此linuxnote03开始学习Linux内存管理相关的知识。本篇及后续所有的Linux学习都基于”LINUX内...

为码消得人憔悴 366

LinuxNote 第三章 管道符,重定向与环境变量

目录第三章 管道符、重定向与环境变量3.1 输入输出重定向3.2 管道命令符3.3 命令行的通配符3.4 常用转义字符3.5 重要的环境变量 第三章 管道符、重定向与环境变量 重定向:命令与文件之间 管道符:命令与命令之间 3.1 输入输出重定向 输入重定向:指把文件导入到命令中; (同 inputStream 理解) 输出重定向:指把原本要输出到屏幕的数据信息写入到制订文件中;(同 outputStream 理解) 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令

mitays的博客 230

LinuxNote 第八章 iptables 与firewalld 防火墙

目录第八章 iptables 与firewalld 防火墙8.1 第八章 iptables 与firewalld 防火墙 8.1

mitays的博客 128
上一篇: uget使用aria2,出现Is aria2 shutdown的错误
下一篇: IP地址分类与子网掩码
AdmireLinux
博客等级 码龄11年 6粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值