【从Python基础到深度学习】4. Linux常用命令(进阶)

接上篇 【从Python基础到深度学习】4. Linux 常用命令-CSDN博客

1.文件查找 - find 命令

find [搜索路径] [搜索条件] [操作]

1.1 常用选项和参数

  • -name:按文件名搜索。

    find 命令的 -name 选项可以接受通配符来匹配文件名。通配符可以帮助你更灵活地搜索文件名,以下是一些常见的通配符:

  • *:匹配任意长度的字符。
  • ?:匹配单个字符。
  • 搜索当前目录及其子目录下以 .txt 结尾的文件:

    find . -name "*.txt"
  • 搜索当前目录及其子目录下以 file 开头的 .txt 文件:

    find . -name "file*.txt"
  • 搜索当前目录及其子目录下以 test 开头,后跟一个字符,然后以 .txt 结尾的文件:

    find . -name "test?.txt"
  • 搜索当前目录及其子目录下以 filedocument 开头的 .txt 文件:

    find . -name "file*.txt" -o -name "document*.txt"
  • [...]:匹配方括号中任意一个字符。
  • [^...]:匹配除方括号中字符以外的任意字符。
  • -:定义范围,在方括号内部使用。例如 [a-z] 匹配小写字母。

  • -empty:查找空目录或大小为0 的文件。
  • -uid :参数用于匹配指定的用户 ID 所属的文件或目录。可以指定一个特定的用户 ID,也可以使用 +- 表示大于或小于某个用户 ID。
  • -gid :参数用于匹配指定的组 ID 所属的文件或目录。可以使用 +- 表示大于或小于某个组 ID。
  • -type:按文件类型搜索,如 -type f 表示搜索普通文件,-type d 表示搜索目录。
  • -size:按文件大小搜索,可以使用 +- 表示大于或小于某个大小,单位可以是 kM 等。
  • -exec:对搜索到的文件执行指定的命令。
  • -delete:删除搜索到的文件。
  • -print:打印搜索到的文件名。
  • -maxdepth:指定搜索的最大深度。

1.2 示例

  1. 搜索当前目录及其子目录下所有文件名以 ".txt" 结尾的文件:

    find . -name "*.txt"
    
  2. /etc 目录中搜索所有类型为普通文件的文件,并打印它们的文件名:

    find /etc -type f -print
    
  3. 搜索当前目录及其子目录下所有大于 1MB 的文件,并删除它们:

    find . -size +1M -delete
    
  4. 搜索当前目录及其子目录下所有名为 example.txt 的文件,并在找到的每个文件上执行 ls -l 命令:

    find . -name "example.txt" -exec ls -l {} \;
    

 1.3 查找条件中的与或非

find 命令默认使用 AND 逻辑操作符,即指定的多个条件都必须同时满足才会匹配到文件。但是可以使用 -o 来表示 OR 逻辑操作符,以及使用 ! 来表示 NOT 逻辑操作符。

1.3.1 AND 操作符

默认情况下,find 命令会使用 AND 操作符。例如:

find /path -name "file1" -type f

上述命令会搜索路径 /path 下文件名为 file1 且类型为普通文件的文件。

1.3.2 OR 操作符

使用 -o 来表示 OR 操作符。例如:

find /path \( -name "file1" -o -name "file2" \) -type f

上述命令会搜索路径 /path 下文件名为 file1file2 且类型为普通文件的文件。

1.3.3 NOT 操作符

使用 ! 来表示 NOT 操作符。例如:

find /path ! -name "file1" -type f

上述命令会搜索路径 /path 下文件名不为 file1 且类型为普通文件的文件。

需要注意的是,逻辑操作符的优先级可以通过括号来调整。在使用 OR 操作符时,为了确保优先级的正确性,通常会使用括号将每个 OR 操作符的条件包裹起来。

举个例子,假设我们希望找到 /path 目录下文件名为 file1 且类型为普通文件,或者文件名为 file2 且类型为目录的文件。我们可以这样表达这个条件:

find /path \( -name "file1" -type f \) -o \( -name "file2" -type d \)

在这个命令中,使用了两次 OR 操作符 -o,每次都用括号将操作符包裹起来,这样就明确了它们的优先级。首先会匹配第一组括号中的条件,然后匹配第二组括号中的条件,最后将两组条件的结果进行 OR 操作,以得到最终的结果。

如果不使用括号,而是直接写成以下形式:

find /path -name "file1" -type f -o -name "file2" -type d

那么就会出现问题,因为默认情况下 AND 操作符的优先级高于 OR 操作符,所以上述命令会被解释为:

(find /path -name "file1" -type f) OR (-name "file2" AND -type d)

这并不是我们期望的条件,因此使用括号来明确操作符的优先级是非常重要的。

2.更改文件或目录的权限 - chmod 命令

2.1 基本语法

chmod [选项] 模式 文件/目录

2.2 常用选项

  • -R:递归地更改文件和目录的权限。
  • -v:显示操作的详细信息。
  • -c:仅在发生更改时显示信息。
  • -f:不显示错误信息。
  • -R:递归更改权限。

2.3 模式

模式可以用符号形式或数字形式表示。

符号形式
  • u:文件所有者(用户)权限。
  • g:文件所属组的权限。
  • o:其他用户的权限。
  • a:所有用户的权限。
  • +:添加权限。
  • -:移除权限。
  • =:设置权限。

例如:

  • chmod u+x file.txt:给文件所有者添加执行权限。
  • chmod go-rw file.txt:移除文件所属组和其他用户的读写权限。
数字形式

数字形式以三位数字表示权限,每位数字代表一个权限位(读、写、执行)。每位数字的含义分别是:

  • 第一位:所有者权限。
  • 第二位:所属组权限。
  • 第三位:其他用户权限。

每个权限位的值分别为:

  • 4:读权限。
  • 2:写权限。
  • 1:执行权限。

例如:

  • chmod 755 file.txt:给文件所有者添加读、写、执行权限,给所属组和其他用户添加读、执行权限。

2.4 示例

  1. 添加执行权限给所有用户:

    chmod a+x file.txt
  2. 移除其他用户的写权限:

    chmod o-w file.txt
  3. 递归地更改目录及其子目录的权限:

    chmod -R 755 directory
  4. 将文件所有者的权限设置为读写,所属组和其他用户的权限设置为只读:

    chmod 644 file.txt

3.创建空文件或更改文件的访问和修改时间戳 - touch 命令

3.1 基本语法

touch [选项] 文件名

3.2 常用选项

  • -a:仅更新文件的访问时间戳。
  • -c:仅在文件不存在时才创建文件。
  • -m:仅更新文件的修改时间戳。
  • -d:使用指定的日期时间戳而不是当前时间戳。

3.3 示例

  1. 创建一个名为 file.txt 的空文件:

    touch file.txt
  2. 更新文件的访问和修改时间戳:

    touch file.txt
  3. 仅更新文件的访问时间戳:

    touch -a file.txt
  4. 仅更新文件的修改时间戳:

    touch -m file.txt
  5. 使用指定的日期时间戳更新文件的时间戳:

    touch -d "2023-01-01 12:00:00" file.txt

 4.查看命令手册 - man 命令

5.echo 命令

5.1 基本语法

echo [选项] [字符串或变量]

5.2 常用选项

  • -e:允许在字符串中使用转义字符。
  • -n:不在末尾添加换行符。

5.3 示例

  1. 打印字符串到标准输出:

    echo "Hello, world!"
  2. 打印变量的值:

    name="Alice" echo "Hello, $name!"
  3. 使用转义字符:

    echo -e "This is a\ttab character."
  4. 不在末尾添加换行符:

    echo -n "This text will be followed by no newline."

 6.cat 命令

基本语法

cat [选项] [文件]

常用选项

  • -n:显示行号。
  • -b:仅对非空行显示行号。
  • -s:压缩连续的空行。
  • -E:在每行末尾显示 $ 符号。

示例

  1. 显示文件内容:

    cat file.txt
  2. 显示文件内容并显示行号:

    cat -n file.txt
  3. 合并多个文件并输出到标准输出:

    cat file1.txt file2.txt
  4. 创建新文件:

    cat > newfile.txt
  5. 将输入重定向到文件:

    cat > file.txt

7. 查看文件或目录的inode 号 -  ls -il 命令

inode(索引节点)是文件系统中的一个重要概念,用于存储关于文件或目录的元数据信息,如文件的权限、大小、所有者、时间戳等。每个文件或目录都有一个唯一的inode 条目,这个条目包含了该文件或目录的所有信息,而实际的文件数据则存储在数据块中。在 Unix 和类 Unix 系统中,例如 Linux,每个文件系统都有一个固定大小的inode 表,用于存储所有文件和目录的inode 条目。

inode 值是文件系统中的一个唯一标识符,它用于访问和定位文件或目录的元数据信息。每个inode 条目都有一个唯一的编号,称为inode 号。通过inode 号,文件系统可以快速定位和读取文件或目录的元数据信息。

在 Unix/Linux 系统中,可以使用命令 ls -il 来查看文件或目录的inode 号。

8.建立文件软链接

基本语法

ln -s [目标文件] [链接文件名]

示例

假设有一个名为 source.txt 的文件,我们希望创建一个指向它的软链接 link.txt

  1. 创建软链接:

    ln -s file1 file2
  2. 查看软链接:

    ls -l file2

删除原始文件会导致软链接失效

9.建立文件硬链接

ln [选项] 目标文件 链接文件名

目标文件 是要创建硬链接的原始文件,链接文件名 是要创建的硬链接的文件名。

示例

假设有一个文件 original.txt,我们想要创建一个硬链接 link.txt

ln original.txt link.txt

这将在当前目录下创建一个名为 link.txt 的硬链接,它指向 original.txt 文件。

示例2(创建硬链接到目录)

如果想要创建一个硬链接到目录的话,例如将 /home/user1/dir1 这个目录链接到 /home/user2/dir2,可以使用如下命令:

ln -d /home/user1/dir1 /home/user2/dir2

这会创建一个硬链接,使得 /home/user2/dir2 现在也指向 /home/user1/dir1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Web】NSSCTF Round#18 Basic个人wp(部分)

目录 ①门酱想玩什么呢? ②Becomeroot ①门酱想玩什么呢? 先试一下随便给个链接 不能访问远程链接,结合评论区功能,不难联想到xss,只要给个评论区链接让门酱访问就可 我们研究下评论区 从评论区知道,要…

建立知识体系,这份指南就够了

最近,许多读者私信我,问到这个问题。 恰好又要推送了,索性分享一些心得。 说实话,这是个很大的问题,要彻底讲透,大概得写一整本书。 所以,我尝试用尽量简洁的篇幅,将这个问题说清楚。…

Redis进阶(二):事务

redis事务特点 弱化的原子性 redis事务的原子性不像MySQL原子性一样,执行不成功的话,redis事务不会进行回滚操作 不具备一致性 redis没有约束,也没有回滚机制,因此事务执行的过程中如果某个修改操作出现失败,就可能引起…

研究多态恶意软件,探讨网络安全与AI

前言 近期ChatGPT火遍全球,AI技术被应用到了全球各行各业当中,国内外各大厂商也开始推出自己的ChatGPT,笔者所在公司在前段时间也推出了自研的安全GPT,AI技术在网络安全行业得到了很多的应用,不管是网络安全研究人员、…

ClickHouse--05--MergeTree 表引擎

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MergeTree 系列表引擎前言MergeTree 系列表引擎 --功能MergeTree 系列表引擎 --种类 1.MergeTree1.1MergeTree 建表语句:1.2 MergeTree 引擎表目录解析查…

vscode-python的debug 教学(最全)

vscode中的python-debugger的使用 Visual Studio Code 的主要功能之一是其强大的调试支持。VS Code 的内置调试器有助于加速编辑、编译和调试循环。 一、 安装python-debugger插件 在插件库内搜索python Debugger,安装插件 三、 进行debug(不带参数…

Linux查看日志的几种方法总结

摘要 Linux系统中查看日志的命令确实多种多样,每个命令都有其特定的用途和优势。常用的命令有:tail、cat、tac、head、echo,grep、less、awk、sed。 下面我会详细解释这些命令在查看日志时的用法和特点: tail命令: ta…

ELAdmin 部署

后端部署 按需修改 application-prod.yml 例如验证码方式、登录状态到期时间等等。 修改完成后打好 Jar 包 执行完成后会生成最终可执行的 jar。JPA版本是 2.6,MyBatis 版本是 1.1。 启动命令 nohup java -jar eladmin-system-2.6.jar --spring.profiles.active…

【AI视野·今日CV 计算机视觉论文速览 第292期】Thu, 18 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Thu, 18 Jan 2024 Totally 102 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers GARField: Group Anything with Radiance Fields Authors Chung Min Kim, Mingxuan Wu, Justin Kerr, Ken Goldberg, Matt…

CTFshow web(文件上传151-154)

web151 哈,都直接送嘴边了,前端检测领域的问题,那就改前端啊,作者都直接提示了! 第一种方法也是最好用的就是直接把前端内容的png改成php就好 这里教大家一个非常好用的技巧,可以极大节省你的时间&#xf…

C++,stl,函数对象,谓词,内建函数对象

目录 1.函数对象使用 2.谓词 1.一元谓词 2.二元谓词 3.内建函数对象 1.算术仿函数 2.关系仿函数 3.逻辑仿函数 1.函数对象使用 #include<bits/stdc.h> using namespace std;class add { public:int operator()(int v1,int v2){return v1 v2;} };class print { p…

每日五道java面试题之java基础篇(八)

第一题.CopyOnWriteArrayList的底层原理是怎样的 ⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的&#xff0c;在向CopyOnWriteArrayList添加元素时&#xff0c;会复制⼀个新的数组&#xff0c;写操作在新数组上进⾏&#xff0c;读操作在原数组上进⾏并且&#xff0c;写操作…

Java学习第十三节之数组的定义和数组声明创建

数组的定义 数组声明创建 package array;public class ArrayDemo01 {//变量的类型 变量的名字 变量的值//数组类型public static void main(String[] args) {int[] nums;//1.声明一个数组nums new int[10];//2.创建一个数组int[] nums2 new int[10];//声明和创建数组一块…

深度学习从入门到不想放弃-7

上一章的内容 深度学习从入门到不想放弃-6 (qq.com) 今天讲的也算基础(这个系列后来我一寻思,全是基础 ),但是可能要着重说下,今天讲前向计算和反向传播,在哪儿它都永远是核心,不管面对什么模型 前向计算: 有的叫也叫正向传播,正向计算的,有的直接把前向的方法梯度下…

js toFixed函数精度问题

在使用toFixed函数会出现精度缺失问题&#xff0c;如下图 在2.55与1.45保留1位小数时&#xff0c;正常情况下应该为2.6与1.5&#xff0c;而toFixed函数得出的是2.5与1.4。这和计算机中小数存储有关。 小数运算不精确其实与下面三方面有关&#xff1a; 1、存储 2、运算 3、显示…

控制台打印进度条

引言 进度条是用户界面中常见的组件&#xff0c;尤其是在执行长时间操作时。虽然在控制台应用程序中没有图形用户界面那样的视觉组件&#xff0c;但我们可以使用字符来模拟进度条&#xff0c;为用户提供任务执行的视觉反馈。 执行开始… 当前进度: 0% [ ] 当前进度: 1% [ ] 当…

电子元器件基础2---电容

两个相互靠近的导体&#xff0c;中间夹一层不导电的绝缘介质&#xff0c;这就构成了电容器。当电容器的两个极板之间加上电压时&#xff0c;电容器就会储存电荷。电容器的电容量在数值上等于一个导电极板上的电荷量与两个极板之间的电压之比。电容器的电容量的基本单位是法拉(F…

《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)

文章目录 5.1 跨链交易分析5.1.1 基础知识5.1.2 重点案例&#xff1a;分析以太坊到 BSC 的跨链交易理论步骤和工具准备Python 代码示例构思步骤1: 设置环境和获取合约信息步骤2: 分析以太坊上的锁定交易步骤3: 跟踪BSC上的铸币交易 结论 5.1.3 拓展案例 1&#xff1a;使用 Pyth…

QMainWindow

QMainWindow QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏&#xff08;menu bar&#xff09;、多个工具栏(tool bars)、多个停靠部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)&#xff0c;是许多应用程序的基础&#x…

力扣 第 384 场周赛 解题报告 | 珂学家 | 贪心构造 + KMP板子

前言 整体评价 因为是新春过年&#xff0c;所以题目出的相对简单一些&#xff0c;T4和上周一样&#xff0c;是字符串匹配模板题。 T1. 修改矩阵 思路: 模拟 按要求模拟即可 class Solution {public int[][] modifiedMatrix(int[][] matrix) {int h matrix.length;int w m…