linux_day02

news2025/1/14 0:49:50

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 *

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1197965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

111111111111111

全局锁 就是对整个数据库进行加锁&#xff0c;加锁之后整个数据库就处于只读状态&#xff0c;后续的DML写语句&#xff0c;DDL语句&#xff0c;以及对更新事务的提交操作都会被阻塞&#xff0c;典型地使用场景就是做整个数据库的逻辑备份&#xff0c;对所有的表进行锁定&#x…

LIBGDX实时绘制字符、实时绘制中文

LIBGDX实时绘制字符、实时绘制中文 转自&#xff1a;https://lingkang.top/archives/libgdx-shi-shi-hui-zhi-zi-fu 注意&#xff0c;相比于贴图字体&#xff0c;实时绘制会有一定的失真、模糊 Maven项目依赖&#xff1a; <properties><maven.compiler.source>…

【Java 进阶篇】Java中的 JSP(JavaServer Pages)

JavaServer Pages&#xff08;JSP&#xff09;是一种用于开发动态Web页面的Java技术。它是在静态Web页面中嵌入Java代码的一种方式&#xff0c;使得开发者可以借助Java的强大功能来创建动态、交互性强的Web应用程序。在本文中&#xff0c;我们将深入探讨JSP的概念、原理和基本用…

算法:FloodFill算法

文章目录 算法原理图像渲染岛屿数量岛屿的最大面积被围绕的区域太平洋大西洋水流问题扫雷游戏衣橱整理 算法原理 FLoodFill算法通俗来讲&#xff0c;就是洪水给地势带来的变化&#xff0c;而实际上题目要求的就是一个连通块问题&#xff0c;那本质还是暴搜和DFS/BFS相结合&…

vue做的一个一点就转的转盘(音乐磁盘),点击停止时会在几秒内缓慢停止,再次点击按钮可以再次旋转,

先看效果&#xff1a; 代码&#xff1a;主要部分我会红线画出来 css:部分&#xff1a; 源码&#xff1a; vue部分&#xff1a; <template><div class"song-lyric"><div><div class"type"><div class"right">&l…

【Git】git常用命令大全

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Git》。&#x1f3af;&#x1f3af; &#x1f449…

实体店铺必看:如何申请低手续费或免手续费的收款码

在数字支付日益普及的今天&#xff0c;为实体店铺如餐饮店引入低成本甚至免手续费的收款解决方案变得尤为重要。本文将详细介绍实体店铺如何申请低手续费或免手续费的收款码&#xff0c;助您降低运营成本&#xff0c;提升业务效率。 一、了解不同支付平台的政策 首先&#xf…

性能测试之性能调优详解

性能测试是通过模拟实际使用场景&#xff0c;对系统进行压力测试和负载测试&#xff0c;以评估系统的性能指标&#xff0c;如响应时间、吞吐量和并发能力等。通过性能测试可以发现系统的瓶颈和性能问题&#xff0c;并针对性地进行优化。 监控工具可以实时监测系统的运行状态和…

gorm使用之各种表关系实例-主外键->struct

gorm使用之各种表关系实例-主外键->struct 一对多关系(用户与文章) 如: 老板与员工 女神和舔狗 老师和学生 班级与学生 用户与文章 ...以用户与文章举例 models应当如,注意&#xff01;&#xff01;&#xff1a;User表中的ID应当与Article中的UID一直&#xff0c;大小和…

搞怪python代码

微信消息重发代码&#xff1a; from pynput.keyboard import Key,Controller import time keyboard Controller()a input("请输入你需要循环输出的内容&#xff1a;") b eval(input(请输入你想要循环的次数&#xff1a;)) print("数据已接收&#xff01;请将…

基于51单片机的篮球比赛计分器积分器

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机篮球 获取完整源程序仿真源文件原理图文件论文报告等 基于51单片机的篮球计分器 由STC89C51单片机数码管显示模块按键模块电源模块构成 具体功能&#xff1a; &#xff08;1&#xff09;能记录单节比赛的比赛时间&am…

msvcp140.dll丢失的解决方法win7系统,全面详细解析

在Windows 7系统中&#xff0c;msvcp140.dll是一个非常重要的动态链接库文件&#xff0c;它负责许多应用程序和系统的正常运行。然而&#xff0c;由于各种原因&#xff0c;msvcp140.dll文件可能会丢失或损坏&#xff0c;导致系统出现错误提示、程序无法启动等问题。本文将详细介…

leetcode(力扣) 207. 课程表1+2(图的构造与遍历,清晰思路,完整模拟)

文章目录 题目描述思路分析完整代码 题目描述 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学…

赛氪ETTBL全国商务英语翻译大赛入榜国内翻译赛事发展评估报告

中国外文局下属CATTI项目管理中心出具2023 国内翻译赛事发展评估报告&#xff0c;ETTBL全国商务英语翻译大赛赫然在榜 2023年11月6日&#xff0c;继2022年首次发布国内翻译赛事发展评估报告后&#xff0c;中国外文局CATTI项目管理中心和中国外文界平台联合发布了《2023国内翻译…

OpenCV图像坐标系

绘制代码: X轴 # 选取两个点 point1 = (20, 0) point2 = (200, 0)# 在图像上绘制连接线 cv2.line(img, point1, point2, (

C# ZXing 二维码,条形码生成与识别

C# ZXing 二维码条形码生成识别 安装ZXing使用ZXing生成条形码生成二维码生成带Logo的二维码识别二维码、条形码 安装ZXing NuGet搜索ZXing安装ZXing.Net包 使用ZXing using ZXing; using ZXing.Common; using ZXing.QrCode; using ZXing.QrCode.Internal; 生成条形码 //…

MYSQL内容补充:

一)联合索引: 1)定义:是给一张表上面的多个列增加索引&#xff0c;也就是说给表上面的多个列增加索引&#xff0c;供快速查询使用&#xff0c;当两个列的组合是唯一值时&#xff0c;联合索引是个不错的选择 联合索引和单个索引对比来讲&#xff0c;联合索引的所有索引项都会出现…

maven 私有仓库配置

1.整体库信息 2.配置阿里云库 &#xff08;可以配置多个库&#xff0c;再引用代理库&#xff09; 3.建立自己的 发布&#xff0c;快照库 4.建立自由的公共库- 引用所有需要的库 5.maven setting 中配置 用户名密码 <server><id>mv-releases</id><usernam…

IDEA运行前端vue项目,安装nodejs,以及配置

我在刚接手到一个项目的时候&#xff0c;不知道前端的代码的情况下&#xff0c;想要写后端代码&#xff0c;遇到问题 所以需要看前台代码&#xff0c;着手IDEA 开始 安装nodejs (为什么要安装nodejs呢&#xff0c;首先就是说需要npm, 而nodejs 内置npm) 1.从官网下载 nodej…

字符三角形-第10届蓝桥杯国赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第6讲。 字符三角形&#x…