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

news2024/11/26 20:25:30

接上篇 【从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

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

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

相关文章

第13章 网络 Page724 asio定时器

程序代码: 11行,声明一个ios对象 13行,使用ios对象作为参数声明一个定时器,此时,定时器和ios完成了关联,后面定时器如果有任务的话,就可以将任务交给ios 16行,为定时器设置一个定…

MySQL数据库基础(一):数据库概述

文章目录 数据库概述 一、数据库介绍 二、数据库分类 1、关系型数据库 2、非关系型数据库NoSQL 三、常见数据库介绍 1、关系型数据库 2、非关系型数据库 数据库概述 一、数据库介绍 数据库就是存储数据的仓库,其本质是一个文件系统,按照特定的…

【Pygame手册01/20】最简应用:窗口

目录 一、说明 二、pygame是什么? 2.1 为游戏开发设计 2.2 版本发展史 2.3 特点 三、pygame安装要点 四、入门知识 4.1 初始使用 4.2 要更改 pygame 窗口的外观 4.3 完整窗口程序 4.4 窗口对象接口示例 五、隐形窗口和显性窗口 六、结论 一、说明 为什…

EasyRecovery专业版2024最新版本数据恢复软件

EasyRecovery专业版2024是一款功能强大的数据恢复软件,专为满足专业用户的需求而设计。它支持恢复各种类型的数据,包括文档、图片、视频、音频等,且可以恢复的数据存储介质也非常多样化,如硬盘、U盘、移动硬盘、数码相机、手机等。…

如何流畅进入Github

前言 以下软件是免费的,放心用 一、进入右边的下载链接https://steampp.net/ 二、点击下载 三、点击接受并下载 四、随便选一个下载链接进行下载 五、软件安装好打开后,找到Github 六、点击全部启用 七、再点击左上角的一键加速 八、这个时候你再进Git…

java的面向对象编程(oop)——认识泛型

前言&#xff1a; 打好基础&#xff0c;daydayup! 泛型 1&#xff0c;认识泛型&#xff1a; 定义类&#xff0c;接口&#xff0c;方法时&#xff0c;同时声明了一个或多个类型变量&#xff08;例&#xff1a;<E>&#xff09;,称为泛型&#xff0c;泛型接口&#xff0c;泛…

error MSB8008: 指定的平台工具集(v143)未安装或无效。请确保选择受支持的 PlatformToolset 值解决办法

右击解决方案&#xff0c;选择属性 将工具集为143的修改为其他&#xff0c;如图 重新编译即可运行

应用进程跨越网络的通信

目录 1 系统调用和应用编程接口 应用编程接口 API 几种应用编程接口 API 套接字的作用 几种常用的系统调用 1. 连接建立阶段 2. 传送阶段 3. 连接释放阶段 1 系统调用和应用编程接口 大多数操作系统使用系统调用 (system call ) 的机制在应用程序和操作系统之间传递控制…

AI:127-基于卷积神经网络的交通拥堵预测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

Java并发基础:PriorityBlockingQueue全面解析!

内容概要 PriorityBlockingQueue类能高效处理优先级任务&#xff0c;确保高优先级任务优先执行&#xff0c;它内部基于优先级堆实现&#xff0c;保证了元素的有序性&#xff0c;同时&#xff0c;作为BlockingQueue接口的实现&#xff0c;它提供了线程安全的队列操作&#xff0…

本地部署Stable Diffusion WebUI

官网 Stable Diffusion在线 Github上的Stable Diffusion WebUI 提醒一下&#xff1a;下面实例讲解是在Mac系统演示的&#xff1b; 一、 环境所需资源 PythonPycharmAnacondastable-diffusion-webui项目代码 注意事项 python版本一定要3.10&#xff0c;最好是3.10.6版本的。…

【使用IDEA总结】01——新增作者信息、方法参数返回值

[TOC](目录) 1.类新增作者信息 打开IDEA的Settings&#xff0c;Editor->Code Style->File and Code Templates->Includes->File Header&#xff0c;输入以下作者信息&#xff0c;作者名更换为自己的即可&#xff0c;操作如下图所示 /*** Author Linhaipeng* Date…

【Spring 校验】

校验 &#x1f347; 概述&#x1f349; 使用场景&#x1f349; 依赖引入 &#x1f34d; 校验示例&#x1f348;&#xff08;1&#xff09;在实体上标记校验注解&#x1f352;&#xff08;2&#xff09;在方法参数上声明校验注解&#x1f34f;&#xff08;3&#xff09;抛异常 &…

Unity(单元测试)在STM32上的移植与应用

概述 Unity Test是一个为C构建的单元测试框架。本文基于STM32F407为基础&#xff0c;完全使用STM32CubeIDE进行开发&#xff0c;移植和简单使用Unity。 单片机型号&#xff1a;STM32F407VET6 软件&#xff1a;STM32CubeIDE Version: 1.14.1 Unity Version&#xff1a;2.…

【报错解决】-bash: export: `-8‘: not a valid identifier 不是有效的标识符

现象 一登陆就提示-bash: export: -8’: not a valid identifier 不是有效的标识符 问题出现的原因 设置字符集时多写了空格 [rootdb1 ~]# cat >>/etc/profile<<EOF export LANGen_US.UTF -8(-8前不应有空格) EOF 解决方法 cd /etc vi profile 把export带有-8的…

第17讲我参与的投票列表实现

我参与的投票列表实现 sql: SELECT * FROM t_vote WHERE id IN (SELECT vote_id FROM t_vote_detail WHERE openido30ur5JpAsAUyGBkR0uW4IxvahR8)/*** 获取指定用户参与的投票* param token* return*/ RequestMapping("/listOfJoinUser") public R listOfJoinUser(R…

Hive的相关概念——分区表、分桶表

目录 一、Hive分区表 1.1 分区表的概念 1.2 分区表的创建 1.3 分区表数据加载及查询 1.3.1 静态分区 1.3.2 动态分区 1.4 分区表的本质及使用 1.5 分区表的注意事项 1.6 多重分区表 二、Hive分桶表 2.1 分桶表的概念 2.2 分桶表的创建 2.3 分桶表的数据加载 2.4 …

电脑上用什么软件恢复数据?2024年受欢迎的恢复软件推荐

在当今数字化的时代&#xff0c;电脑已经成为我们生活中不可或缺的工具。然而&#xff0c;由于各种原因&#xff0c;我们的电脑可能会出现数据丢失的情况。这时&#xff0c;一款好的数据恢复软件就显得尤为重要。本文将为大家介绍一款在2024年备受推崇的数据恢复软件&#xff0…

react渲染流程是怎样的

整体流程&#xff1a; react的核心可以用uifn(state)来表示&#xff0c;更详细可以用&#xff1a; const state reconcile(update); const UI commit(state);上面的fn可以分为如下一个部分&#xff1a; Scheduler&#xff08;调度器&#xff09;&#xff1a; 调度任务&…

Android adb使用超级大全

Android adb使用超级大全 ADB&#xff0c;即Android Debug Bridge&#xff0c;是一款强大的工具&#xff0c;对于Android开发/测试人员来说是不可或缺的&#xff0c;同时也是Android设备玩家的好玩具。本文将详细介绍ADB的使用方法。 ADB的基本用法如下&#xff1a; 命令语法…