linux_day02
1、链接:LN

一个点表示当前工作目录,两个点表示上一层工作目录;

目录的本质:文件(该文件储存目录项,以链表的形式链接,每个结点都是目录项,创建文件相当于把目录项添加到链表中)


如果想在一个目录中添加或者删除目录项,需要获取这个目录的写权限;
软连接:符号链接,单独的文件里面存储了文件路径,类似于指针,指向目录;
硬链接:文件以链表形式存于物理文件系统,虚拟文件系统(VFS)与物理文件系统存在一种映射,上图he目录和点目录指向同一个文件,这种映射情形叫硬链接;
创建硬链接:
dir目录下创建三个子文件夹,dir目录下有五个硬链接:如果创建文件硬链接为1;


创建a.txt和link_hard的硬链接:在dir下面创建了一个路径,这个路径名叫link-hard,都指向同一个文件a.txt;

link_hard和a.txt的路径都一样,都是523423;所以指向同一个文件

创建软链接参数:-s


在dir目录下的dir1创建符号链接,存储了b.txt的相对路径;

回到上级目录dir,利用echo(输出流命令,可以输出stdout打印指定字符)利用 > 符号重定向输出,输出到b.txt,cd 到dir1,操作link_sym这个符号链接,操作的是它指向的文件;

运用绝对路径创建软链接二;

一般采用相对链接进行符号链接;
符号连接类似于window的快捷方式,c语言的指针;
硬链接不能跨分区链接,不能为文件夹创建硬链接;
查找文件:
locate

windows的everything查找插件原理:有自己的数据库,把文件系统中的文件进行分析创建索引存入数据库,如果要查找的文件未存于数据库中是查找不到的;
locate查找原理:有一个自己的数据库,通过分析文件系统,把索引存入数据库;
所有满足查找条件的都会打印出来;

新添加的文件未来得及添加到数据库,所以·查找不到

which:查找可执行程序
command(可执行程序)


tree:以树状格式列出目录内容


find:在目录的层次结构中搜索(包含子目录)
find 起始目录 查找条件 操作

-name:根据名字查找

find 后添加根目录 / ,在整个文件系统中查找
find / -name "stdio.h"


在linux-5.16.12(内核版本),src目录下存放linux内核源代码;linux内核用c实现
在内核中查找所有 .c 结尾的文件
![]()
find 可以组合多个查找条件:

-a :and ;
-o:or ;
!:逻辑取反;
查找改内核的所有 .c 文件和 按名字查找.h 文件:
![]()
根据类型查找:-type c代表文件类型


f(常规文件):find . -type f (根据类型查找)

l (链接文件查找):find . -type l

在本目录下查找名包含soft 而且是软链接的文件(find 命令可以多种组合查找)
![]()
根据用户组ID进行查找:
-user:用户
-group:组
-uid:用户id
-gid:组id
添加用户 test //创建家目录,用bash这个shell(命令行解释器)
![]()
根据test 查找,在家目录下

根据大小进行查找:rouding up(近视规则:如果文件有1.1kb,对应的是2kb,向上取整)
(b)block:块(512字节为一块)
(c)character:一个字符占一个字节(以字节为单位)

-size 默认以b为参数;
find ~ -size 4096 :在家目录下查找大小为4096*512 字节大小的文件;默认为block,一块512byte
find ~ -size 4096c:以字节为单位,4096byte(加了参数表示精确查找)

超过5M的文件:
![]()
小于5M文件:![]()
查找4k向上取整:

查找空文件或空目录:-empty
find . -size 0c (查找不到一些空目录)

-empty:空目录默认大小为4096byte,如果要查空目录应使用-empty;

根据权限查找:-perm

perm + mode 进行查找;
权限中rwx用三位二进制就可以表示,而三位二进制数可以用一位8进制数表示;

-rw- rw- r--:有权限记作1,无权限记作0
-110 110 100;
-6 6 4;
find . -perm 664

用户拥有执行权限,或用户只拥有执行权限,查手册具体用法;

命令的组合:
按顺序组合:命令依次执行


可以把一个命令的输出结果,以行为单位当作另一个命令的参数;
把find 的命令结果放入下一个命令的参数{ };

查找某些文件并且直到该文件详细信息:

管道 + xargs:
管道符 | (将前一个的输出stdout作为后一个命令的输入stdin,管道使用字符竖杠表示)
语法格式:命令1 | 命令2 | 命令 3
并不是所有的命令都支持管道符运算,
xargs 完成了两个行为:xargs 将标准输入作为命令行的参数
1、处理管道传输过来的stdin;
2、将处理后的数据传递到正确的位置;

不加xargs,管道符的左侧的命令输出格式与右侧的命令输入格式不匹配,
加了xargs,xargs会把管道符左侧的输出格式转化为右侧命令行所期望的输入格式;

权限:
当有时候没有权限的时候,不能使用一些对应的功能,所以需要用到更改权限;

上图所示,hello.py没有执行权限x,使用 chmod u+x hello.py后获得执行权限;

chmod:按位编码;

rwx rwx rwx
user group other
权限的设置:
文字设定法:
chmod [ugoa] [+ = -] [rwx] file/dir //a--all,
chmod u+x hello.py ///添加执行权限
chmod a+x aabbcc.txt /给所有用户添加对aabbcc.txt的写权限

chmod a-x aabbcc.txt ;给所有用户减少对aabbcc.txt的执行权限

chmod a=x aabbcc.txt ;所有的用户都只有执行权限

权限可以组合使用:
chmod u=rw,g=rw,o=r a.txt ;给user 读写权限,组读写权限,其他用户读权限;

数字设定法:
chmod 三位八进制数字 file/dir
第一位用户权限,第二位组权限,第三位其他人权限
chmod 664 hello.py ;;

文件掩码:umask

文件掩码关注后三位八进制数字,
普通用户的文件掩码:002
![]()
root用户的文件掩码:022

创建文件夹时默认的权限是777;最终生成文件夹的时候生成775;(对umask(002)取反再与默认权限777按位与最终生成775)

创建普通文件时,默认权限是666,对umask取反再将取反的结果与默认权限按位与最终生成权限
临时改变umask(文件掩码):umask 0···;退出用户,重启动后生效;
在bash.rc文件中修改umask,可以永久改变;
![]()
umask :222
创建文件夹:

创建普通文件:

查看文件内容:
cat:(拼接到流的末尾)把标准输入中的内容输出到标准输出

文件描述符(非负整数):可以用文件描述符表示输入输出;
stdin(标准输入) 键盘 0(文件描述符)
stdout(标准输出) 显示器 1(文件描述符)
stderr(标准错误输出) 显示器 2(文件描述符)
重定向 :
> 标准输出重定向
< 标准输入重定向
2> 标准错误重定向 (2表示标准错误输出)
>> 标准输出重定向(追加)
cat hello.py > a.txt 标准输出重定向到a.txt

cat把标准输入的内容读取到缓存中然后输出到标准输出流中;
cat > d.txt (ctrl + D)结束输入
创建了d.txt文件并输出了输入流内容

cat可以重定向标准输入,把输入流换成文件;
echo:
echo "hello world" e.txt
创建了e.txt 并重定向了字符串的流向

head:显示文件的头几行信息(默认前10行)

可以指定head的参数


head -n 5 a.txt (输出前5行)

tail :输出文件后几行 (默认显示后10行)


用-n 限制显示后5行

tail可以用来查看日志文件;
more :单页浏览
more file
只显示第一页,可以按f下翻,b上翻;
less:单页浏览
less file
f(forward):向前翻页
b (backward):往后翻页
q (quit):退出
其他操作:
排序:sort (以行为单位)


读取文件的内容,并且在内存中对文件的内容(行)进行排序,并把排序后的结果输出到stdout中;


uniq:去重(去除连续重复的,以行为单位)

只去除了不同行且相邻的重复项的一项:

读取文件的内容,并对连续的行去重,并把去重后的结果输出到stdout中;
如果想把所用行进行去重,可以先排序后去重;
也可以用xargs;

管道排序后去重,不加xargs是读取文件为参数,加了xargs就会把文件里的行作为参数,导致uniq找不到文件;

file:确认文件类型


WC:统计文件行,字节数等



行数,单词数,字节数(wc默认格式)
iconv:修改字符集,(修改编码格式)


-f:从哪个字符集开始(from)
-t:要转化的目标字符集

转化后需要重定向保存,不然会输出到输出流;

grep:搜索文件内容

G:globally;(全局)
re:regex--regular expression(正则表达式)
p:print;
-E:使用扩展版本的正则表达式规则(正则表达式有很多版本,添加-E增加兼容性)

-n:显示行号
-i :ignore 忽略正则表达式中的大小写;
grep -nE "txt" a (查找含txt的内容并显示其行号,双引号里是正则表达式)

"[ro]+" (ro至少出现一次)

“.*” (点是匹配任意字符,*是重复任意次,会匹配所有的行)
正则表达式:
基本单位:普通字符,转义字符,. (用点代表任意字符),[ ] (集合), () (把小括号的整体当基本单位,)
基本操作:
连接:ab,
重复:?(问号表示重复0次或1次),+(加号表示重复一次或者多次),*(重复任意次数){m,n}(可以用{ }表示重复次数)

匹配以t开头以e结尾的单词:
贪婪匹配模式(尽量匹配更多内容
,该正则表达式匹配方式"\<t.*e\>"会尽量匹配更多内容)
![]()
可以利用集合取反,不匹配空格即可避免空格;
找到家目录中所有的main函数:
1、找到所有.c结尾的文件
find home/ -name "*.c"

2、利用grep找到main函数;grep -nE "int main\("
3、利用管道 | 和xargs 组合完成对所用文件的查找

可以直接通过vim命令打开对应的文件的行:vim +2 home/leao/work/bit2.c (+2 表示查到的行号,后面则是路径)
![]()

在test01里查找以.txt结尾的内容:
grep -nE "\.txt$" test01 ($符号表示结尾,)

正则表达式会尽量匹配更多的内容;

其他命令:
alias :别名

直接输入alias会显示已有的别名;

history:显示最近敲过的命令

可以给history起别名:
该起别名方式只是临时生效(类似umask)

把最近输出的20条命令保存到文件中:
![]()

打包和压缩:
把多个文件包成一个文件,打包后的文件大小一般高于打包前文件的总和(会预留空间用于后续添加),压缩便于传输;
tarball的大小大于打包的文件:

打包:tar

打包后的文件叫tarball;


tar (主选项 + 辅选项) 目标文件名 源文件或目录
主选项:(只能选择一个)
c(create):创建一个包;
r():追加;
x:释放文件;
辅选项:
f:指定文件的名称
v (verbose):显示打包过程
z:用gzip算法来压缩或解压缩文件,后缀名为.gz;
把所有.txt结尾的文件打包成tarball:


移动包到dir5,使用sudo获得临时授权;

在dir5中进行解包:

压缩:sudo tar cvfz tarball *

以上打包和解包以及压缩的命令不加-;
打包所有.txt结尾的文件到tarball中:sudo tar cvf tarball *.txt
解包tarball:sudo tar xvf tarball
压缩所有文件到tarball:sudo tar cvfz tarball *
相关文章:
linux_day02
1、链接:LN 一个点表示当前工作目录,两个点表示上一层工作目录; 目录的本质:文件(该文件储存目录项,以链表的形式链接,每个结点都是目录项,创建文件相当于把目录项添加到链表中&…...
OpenCV-Python小应用(九):通过灰度直方图检测图像异常点
OpenCV-Python小应用(九):通过灰度直方图检测图像异常点 前言前提条件相关介绍实验环境通过灰度直方图检测图像异常点代码实现输出结果 参考 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容ÿ…...
关于el-table+el-input+el-propover的封装
一、先放图片便于理解 需求: 1、el-input触发focus事件,弹出el-table(当然也可以为其添加搜索功能、分页) 2、el-table中的复选共能转化成单选共能 3、选择或取消的数据在el-input中动态显示 4、勾选数据后,因为分页过多,原先选好…...
基于Python+OpenCV+SVM车牌识别系统-车牌预处理系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介系统流程系统优势 二、功能三、系统四. 总结 一项目简介 ## PythonOpenCVSVM车牌识别系统介绍 简介 PythonOpenCVSVM车牌识别系统是一种基于计算机视…...
力扣第72题 编辑距离 (增 删 改) C++ 动态规划 附Java代码
题目 72. 编辑距离 中等 相关标签 字符串 动态规划 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 1: 输入&a…...
工业相机基本知识理解:工业相机IO接口,功耗和供电方式
I-input 相机接收外部信号,可用于触发相机(硬触发),也可用于定制不同的 功能,例如使用不同信号宽度来改变相机的曝光时间。主要用于现场设 备控制相机使用,常常配合各种传感器使用 O-output 相机输出信号&a…...
数据库设计
数据库设计特点 数据库建设的基本规律:三分技术,七分管理,十二分基础数据结构(数据)设计和行为(处理)设计相结合:数据库设计应该和应用系统设计相结合 数据库设计方法 新奥尔良方…...
【react.js + hooks】使用 useLoading 控制加载
在页面上 loading(加载)的效果十分常见,在某些场景下,一个页面上甚至可能有特别多的 loading 存在,此时为每一个 loading 专门创建一个 state 显然太过繁琐,不如试试写一个 useLoading 来集中管理ÿ…...
Cordova系列之化繁为简:打造全场景适用的Cordova组件
前言 在我之前的文章 Cordova初探 的开篇中说到了Cordova在Android应用开发中的一个显著的局限性就是我们的Activity必须继承其提供的CordovaActivity。这种设计对于那些追求个性化UI设计的项目而言,显得尤为受限。 其实也可以理解,Cordova主要旨在为前…...
Flink之Catalog
Catalog Catalog概述Catalog分类 GenericInMemoryCatalogJdbcCatalog下载JAR包及使用重启操作创建Catalog查看与使用Catalog自动初始化catalog HiveCatalog下载JAR包及使用重启操作hive metastore服务创建Catalog查看与使用CatalogFlink与Hive中操作自动初始化catalog 用户自定…...
计算机网络——物理层-传输方式(串行传输、并行传输,同步传输、异步传输,单工、半双工和全双工通信)
目录 串行传输和并行传输 同步传输和异步传输 单工、半双工和全双工通信 串行传输和并行传输 串行传输是指数据是一个比特一个比特依次发送的。因此在发送端和接收端之间,只需要一条数据传输线路即可。 并行传输是指一次发送n个比特,而不是一个比特&…...
男科医院服务预约小程序的作用是什么
医院的需求度从来都很高,随着技术发展,不少科目随之衍生出新的医院的,比如男科医院、妇科医院等,这使得目标群体更加精准,同时也赋能用户可以快速享受到服务。 当然相应的男科医院在实际经营中也面临痛点:…...
有没有实时检测微信聊天图片的软件,只要微信收到了有二维码的图片就把它提取出来?
10-2 如果你有需要自动并且快速地把微信收到的二维码图片保存到指定文件夹的需求,那本文章非常适合你,本文章教你如何实现自动保存微信收到的二维码图片到你指定的文件夹中,助你快速扫码,比别人领先一步。 首先需要准备好的材料…...
core-site.xml,yarn-site.xml,hdfs-site.xml,mapred-site.xml配置
core-site.xml <?xml version"1.0" encoding"UTF-8"?> <?xml-stylesheet type"text/xsl" href"configuration.xsl"?> <!--Licensed under the Apache License, Version 2.0 (the "License");you may no…...
数据分析实战 | KNN算法——病例自动诊断分析
目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型改进 十一、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接:https://dow…...
JS实现数据结构与算法
队列 1、普通队列 利用数组push和shif 就可以简单实现 2、利用链表的方式实现队列 class MyQueue {constructor(){this.head nullthis.tail nullthis.length 0}add(value){let node {value}if(this.length 0){this.head nodethis.tail node}else{this.tail.next no…...
计算机毕业设计 基于SpringBoot的驾校管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
S7-1200PLC和SMART PLC开放式以太网通信(UDP双向通信)
S7-1200PLC的以太网通信UDP通信相关介绍还可以参考下面文章链接: 博途PLC开放式以太网通信TRCV_C指令应用编程(运动传感器UDP通信)-CSDN博客文章浏览阅读2.8k次。博途PLC开放式以太网通信TSENG_C指令应用,请参看下面的文章链接:博途PLC 1200/1500PLC开放式以太网通信TSEND_…...
作用域插槽slot-scope
一般用于组件封装,将使用props传入组件的数据再次调出来或者单纯调用组件中的数据。也可用于为组件某个部分自定义样式以及为某次使用组件自定义样式。 直接拿elementui的el-table举例: <template><el-table v-loading"loading&q…...
Redis学习笔记13:基于spring data redis及lua脚本list列表实现环形结构案例
工作过程中需要用到环形结构,确保环上的各个节点数据唯一,如果有新的不同数据到来,则将最早入环的数据移除,每次访问环形结构都自动刷新有效期;可以基于lua 的列表list结构来实现这一功能,lua脚本可以节省网…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...

