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 *

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity之UI编程】编写一个面板交互界面需要注意的细节

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

devops完整搭建教程(gitlab、jenkins、harbor、docker)

devops完整搭建教程&#xff08;gitlab、jenkins、harbor、docker&#xff09; 文章目录 devops完整搭建教程&#xff08;gitlab、jenkins、harbor、docker&#xff09;1.简介&#xff1a;2.工作流程&#xff1a;3.优缺点4.环境说明5.部署前准备工作5.1.所有主机永久关闭防火墙…

[PHP]Kodexplorer可道云 v4.47

KodExplorer可道云&#xff0c;原名芒果云&#xff0c;是基于Web技术的私有云和在线文件管理系统&#xff0c;由上海岱牧网络有限公司开发&#xff0c;发布于2012年6月。致力于为用户提供安全可控、可靠易用、高扩展性的私有云解决方案。 用户只需通过简单环境搭建&#xff0c;…

数据库安全:Hadoop 未授权访问-命令执行漏洞.

数据库安全&#xff1a;Hadoop 未授权访问-命令执行漏洞. Hadoop 未授权访问主要是因为 Hadoop YARN 资源管理系统配置不当&#xff0c;导致可以未经授权进行访问&#xff0c;从而被攻击者恶意利用。攻击者无需认证即可通过 RESTAPI 部署任务来执行任意指令&#xff0c;最终完…

SQL SELECT INTO 语句

SQL SELECT INTO 语句 使用 SQL&#xff0c;您可以将信息从一个表中复制到另一个表中。 SELECT INTO 语句从一个表中复制数据&#xff0c;然后将数据插入到另一个新表中。 SQL SELECT INTO 语法 我们可以把所有的列都复制到新表中&#xff1a; SELECT * INTO newtable [IN ex…

【Git】说说Git中开发测试的使用Git分支Git标签的使用场景

一、Git的使用场景 1、四个环境以及各自的功能特点 dev环境&#xff1a;开发环境&#xff0c;外部用户无法访问&#xff0c;开发人员使用&#xff0c;版本变动很大。test环境&#xff1a;测试环境&#xff0c;外部用户无法访问&#xff0c;专门给测试人员使用的&#xff0c;版本…

Spring Boot (三)

1、热部署 热部署可以替我们节省大把花在重启项目本身上的时间。热部署原理上&#xff0c;一个springboot项目在运行时实际上是分两个过程进行的&#xff0c;根据加载的东西不同&#xff0c;划分成base类加载器与restart类加载器。 base类加载器&#xff1a;用来加载jar包中的类…

如何在苹果iOS系统ipa应用中获取当前版本号和Bundle ID

在iOS应用开发过程中&#xff0c;了解如何获取和使用应用的当前版本号、Bundle ID和其他相关信息是至关重要的。无论是在应用内显示这些信息&#xff0c;还是在编写一些版本依赖的逻辑时&#xff0c;掌握这些知识点都将帮助开发者进行更有效的管理和维护。本文将详细介绍如何在…

【探索Linux】—— 强大的命令行工具 P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)

阅读导航 引言一、进程间通信概念二、进程间通信目的三、进程间通信分类四、管道1. 什么是管道2. 匿名管道&#xff08;1&#xff09;创建和关闭⭕pipe() 函数⭕创建匿名管道⭕关闭匿名管道 &#xff08;2&#xff09;通信方式&#xff08;3&#xff09;用法示例&#xff08;4&…

腾讯云3年期轻量应用服务器优惠(薅羊毛教程)

腾讯云轻量应用服务器特价是有新用户限制的&#xff0c;所以阿腾云建议大家选择3年期轻量应用服务器&#xff0c;一劳永逸&#xff0c;免去续费困扰。腾讯云轻量应用服务器3年优惠可以选择2核2G4M和2核4G5M带宽&#xff0c;3年轻量2核2G4M服务器540元&#xff0c;2核4G5M轻量应…

Vatee万腾科技决策力的未来展望:开创数字化创新的新高度

随着科技不断演进&#xff0c;Vatee万腾的科技决策力在数字化创新领域展现出了强大的潜力和前瞻性。 Vatee万腾的科技决策力被视为数字化创新的引擎&#xff0c;为未来创新注入了新的动力。通过深刻的市场洞察和科学决策&#xff0c;Vatee万腾致力于推动数字化创新走向新的高度…

SW如何显示样条曲线的控标

刚刚学习隔壁老王的sw画图时&#xff0c;怎么点都点不出样条曲线的控标&#xff0c;于是果断查询了一下解决方法&#xff0c;其实很简单&#xff0c;只不过是培训机构故意不说&#xff0c;叫你还解决不了&#xff0c;难受了就会花钱买他们的课了。毕竟如果学会了怎么解决问题了…

【Linux C IO多路复用】多用户聊天系统

目录 Server-Client mutiplexingServer mutiplexingClient mutiplexing Server-Client 在Linux系统中&#xff0c;IO多路复用是一种机制&#xff0c;它允许一个进程能够监视多个文件描述符&#xff08;sockets、pipes等&#xff09;的可读、可写和异常等事件。这样&#xf…

计算机毕业设计 基于SpringBoot的驾校管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

win10虚机扩容C盘

需求&#xff1a; 在虚机管理平台上&#xff0c;将win10虚机的C盘空间扩容至200G&#xff0c;当前空间为100G 操作步骤 1.在虚机平台上&#xff0c;将硬盘1的大小增加至200G 如下图 点击保存&#xff1b; 查看win10虚机&#xff0c;发现C盘空间还是100G&#xff0c;如下图…

C++学习---信号处理机制、中断、异步环境

文章目录 前言信号处理signal()函数关于异步环境 信号处理函数示例raise()函数 前言 信号处理 关于信号&#xff0c;信号是一种进程间通信的机制&#xff0c;用于在程序执行过程中通知进程发生了一些事件。在Unix和类Unix系统中&#xff0c;信号是一种异步通知机制&#xff0c…

javaSE学习笔记(五)集合框架-Collection,List,Set,Map,HashMap,Hashtable,ConcurrentHashMap

目录 四、集合框架 1.集合概述 集合的作用 集合和数组的区别 集合继承体系 数组和链表 数组集合 链表集合 2.Collection 方法 集合遍历 并发修改异常 3.List List集合的特有功能&#xff08;核心是索引&#xff09; 集合遍历 并发修改异常产生解决方案ListIterato…

AI系统ChatGPT源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

vue-入门介绍

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容,初识vue入门到项目实战详解 目录 一.Vue介绍 二.初识Vue 工具安装 创建项目 目录结构介绍 项…

Python异常处理:三种不同方法的探索与最佳实践

Python异常处理&#xff1a;三种不同方法的探索与最佳实践 前言 本文旨在探讨Python中三种不同的异常处理方法。通过深入理解各种异常处理策略&#xff0c;我们可以更好地应对不同的编程场景&#xff0c;选择最适合自己需求的方法。 异常处理在编程中扮演着至关重要的角色。合…