当前位置: 首页 > news >正文

Linux 基础命令-文件与目录操作

在 Linux 操作系统中,文件和目录是组织和管理数据的核心单元。作为一个命令行驱动的操作系统,Linux 提供了一系列强大且灵活的命令来操作文件和目录。掌握这些命令不仅是管理 Linux 系统的基础,也是高效使用 Linux 环境的关键。

一、文件与目录的基本操作

1.1 pwd —— 显示当前工作目录

pwd(print working directory)命令用于显示用户当前所在的目录路径。Linux 是一个多层次的文件系统,用户在执行操作时常常需要知道自己当前所在的目录。

$ pwd
/home/user
1.2 ls —— 列出目录内容

ls(list)命令用于列出指定目录中的文件和子目录。它有许多选项来控制输出结果的格式和内容。

$ ls
file1.txt  file2.txt  dir1$ ls -l  # 显示详细信息,包括权限、所有者、大小等
total 8
-rw-r--r-- 1 user user  4096 Sep  8 09:00 file1.txt
-rw-r--r-- 1 user user  2048 Sep  8 09:10 file2.txt
drwxr-xr-x 2 user user  4096 Sep  8 09:15 dir1$ ls -a  # 显示所有文件,包括隐藏文件
.  ..  .hidden_file  file1.txt  file2.txt  dir1

常见的选项有:

  • -l:显示详细信息(如权限、大小、所有者等)。
  • -a:显示包括隐藏文件在内的所有文件。
  • -h:以人类可读的形式显示文件大小(例如 KB、MB 等)。
1.3 cd —— 切换目录

cd(change directory)命令用于在不同的目录之间切换。通过指定目标目录的路径,用户可以快速移动到该目录。

$ cd /home/user/Documents  # 切换到绝对路径 /home/user/Documents
$ cd ..  # 返回上一级目录
$ cd ~  # 切换到用户的主目录
  • . 表示当前目录,.. 表示上一级目录,~ 表示用户的主目录。
1.4 mkdir —— 创建目录

mkdir(make directory)命令用于创建新的空目录。

$ mkdir new_directory  # 创建一个名为 new_directory 的目录$ mkdir -p parent_directory/child_directory  # 递归创建目录,父目录不存在时一并创建

选项 -p 用于创建不存在的父目录,这对于创建嵌套目录结构非常有用。

1.5 rmdirrm -r —— 删除目录

rmdir(remove directory)命令用于删除空目录。如果目录非空,需要使用 rm -r 命令。

$ rmdir empty_directory  # 删除空目录$ rm -r non_empty_directory  # 删除非空目录及其内部所有文件和子目录
  • rm -r-r(recursive)选项表示递归删除目录中的所有内容,因此操作时需格外小心,避免误删重要文件。
1.6 touch —— 创建空文件或更新文件时间戳

touch 命令用于创建空文件或更新已存在文件的时间戳。如果指定的文件不存在,touch 会自动创建一个新的空文件。

$ touch newfile.txt  # 创建一个空文件 newfile.txt

如果文件已存在,touch 不会改变其内容,但会更新文件的修改时间。

1.7 cp —— 复制文件或目录

cp(copy)命令用于复制文件或目录。它支持将单个文件或整个目录复制到指定的位置。

$ cp file1.txt file2.txt  # 复制 file1.txt 到 file2.txt
$ cp -r dir1/ dir2/  # 递归复制目录 dir1 到 dir2

常见选项:

  • -r:递归复制目录及其内容。
  • -i:提示用户确认是否覆盖已有文件。
  • -p:保留源文件的权限、所有者和时间戳信息。
1.8 mv —— 移动或重命名文件/目录

mv(move)命令既可以用于移动文件或目录,也可以用于重命名文件或目录。

$ mv file1.txt file2.txt  # 重命名 file1.txt 为 file2.txt
$ mv file1.txt /path/to/destination/  # 移动文件到指定目录

如果目标文件或目录已经存在,mv 会覆盖它。可以通过 -i 选项来提示用户确认操作。

1.9 rm —— 删除文件或目录

rm(remove)命令用于删除文件或目录。与 cpmv 类似,rm 也支持递归操作。

$ rm file.txt  # 删除文件 file.txt
$ rm -r directory/  # 递归删除目录及其内容

常见选项:

  • -i:删除文件前提示用户确认。
  • -r:递归删除目录及其内容。

二、文件权限与管理

Linux 是一个多用户操作系统,文件和目录的权限管理非常重要。每个文件或目录都有对应的所有者、所属组以及对应的权限。

2.1 chmod —— 修改文件权限

chmod(change mode)命令用于修改文件或目录的权限。权限分为三类:读(r)、写(w)和执行(x)。每个文件的权限可以分别设置为用户、组和其他人。

权限表示的格式如下:

  • rwx:分别表示读(read)、写(write)和执行(execute)。
  • 例如,rwxr-xr-- 表示用户有读、写和执行权限,组有读和执行权限,其他人只有读权限。
$ chmod 755 file.txt  # 设置文件权限为 rwxr-xr-x

755 是一种八进制表示法:

  • 7 = rwx(用户权限)
  • 5 = r-x(组权限)
  • 5 = r-x(其他人权限)
2.2 chownchgrp —— 修改文件所有者和组

chown(change owner)用于修改文件的所有者,chgrp(change group)用于修改文件的所属组。

$ sudo chown new_owner file.txt  # 修改文件的所有者为 new_owner
$ sudo chgrp new_group file.txt  # 修改文件的所属组为 new_group

三、文件内容查看与编辑

3.1 cat —— 查看文件内容

cat(concatenate)命令用于查看文件内容,尤其是较小的文件。它会直接将文件的内容输出到终端。

$ cat file.txt  # 查看文件内容
3.2 moreless —— 分页查看文件内容

当文件内容较长时,moreless 命令可以帮助用户分页查看文件内容。它们不会一次性输出所有内容,而是按页展示,用户可以通过翻页查看。

$ more file.txt  # 分页查看文件内容
$ less file.txt  # 更加灵活的分页查看方式

less 命令比 more 更加灵活,支持上下滚动。

3.3 headtail —— 查看文件开头和结尾

headtail 命令分别用于查看文件的前几行和后几行内容。

$ head -n 10 file.txt  # 查看文件的前 10 行
$ tail -n 10 file.txt  # 查看文件的最后 10 行

tail 常常与 -f 选项结合使用,用于实时监控文件内容的变化,例如查看日志文件。

$ tail -f /var/log/syslog  # 实时查看日志文件内容

四、查找文件和目录

4.1 find —— 搜索文件和目录

find 命令用于在指定目录下递归搜索文件或目录。它支持根据名称、大小、时间等条件进行搜索。

$ find /path/to/search -name "file.txt"  # 按名称搜索文件
$ find /path/to/search -size +10M  # 搜索大于 10MB 的文件
4.2 `locate

` —— 快速查找文件

locate 命令基于预构建的数据库来快速查找文件,它比 find 更快,但查找结果可能不是最新的。

$ locate file.txt  # 快速查找文件
4.3 grep —— 搜索文件内容

grep(global regular expression print)命令用于在文件中搜索指定的文本模式。它支持正则表达式,可以用于高效的文本匹配。

$ grep "search_text" file.txt  # 搜索文件中包含 search_text 的行
$ grep -r "search_text" /path/to/search  # 递归搜索目录中的文件内容

五、总结

Linux 文件与目录操作是系统管理和开发的基础技能。通过熟练掌握这些命令,用户可以高效地管理文件系统,执行文件创建、复制、移动、删除等操作。Linux 提供了丰富的选项和工具来处理各种文件管理任务,理解并应用这些命令可以极大地提升在 Linux 环境下的工作效率。

相关文章:

Linux 基础命令-文件与目录操作

在 Linux 操作系统中,文件和目录是组织和管理数据的核心单元。作为一个命令行驱动的操作系统,Linux 提供了一系列强大且灵活的命令来操作文件和目录。掌握这些命令不仅是管理 Linux 系统的基础,也是高效使用 Linux 环境的关键。 一、文件与目…...

Delphi 12.1安卓APP开发中获取硬件信息及手机号

Demo与代码已上传到CSDN下载。 这里简单说一下代码内容,完整代码请自行下载,不清楚的欢迎留言交流。 前言 演示Demo使用了我自己开发的一个控件,TLayoutPro 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》请查看并下载控…...

STM32 - 笔记4

1 STM32 示波器 基于STM32的简易示波器项目(含代码)——HAL库_stm32简易示波器 基于STM32的简易示波器项目(含代码)——HAL库_stm32简易示波器_stm32示波器-CSDN博客 【强烈推荐】基于stm32的OLED各种显示实现(含动态图)_stm32oled以十六进制显示-CSDN博客 STM32示波器…...

【H2O2|全栈】更多关于HTML(1)HTML进阶(一)

目录 HTML进阶知识 前言 准备工作 标签的扩展(一) 本文中的标签在什么位置使用? title标签 meta标签 name viewport referrer http-equiv charset content link标签 实际案例 可视部分 代码分析 其他标签 base标签 styl…...

新160个crackme - 053-devilz KeyGen me#3

运行分析 解压出来4个文件运行程序发现要破解Name和Serial PE分析 32位,petite壳 手动脱壳 使用windows XP虚拟机OD打开程序按2下F8,发现ESP变红,根据ESP定律,在该地址右键 -> HW break下断点 继续按2下F9,来到灰色…...

ORA-12514

第一步,去这个地址,查查你的服务名是否存在 第二步,没查到就是你服务名写错了,查到了就退出我的解答...

MyBatis-PlusDruid数据源

MyBatis-Plus简介 MyBatis-Plus(简称MP)是一个MyBatis的增强工具,它在MyBatis的基础上进行了增强而不改变其原有的功能,旨在简化开发、提高效率。以下是对MyBatis-Plus的详细简介: 一、基本概述 定义:MyBat…...

C#中chart绘制曲线

官网资料:Chart 类 (System.Windows.Forms.DataVisualization.Charting) | Microsoft Learn 类的 Chart 两个重要属性是 Series 和 ChartAreas 属性,这两个属性都是集合属性。 Series集合属性存储Series对象,这些对象用于存储要显示的数据以…...

c++数据结构算法题讲解

那么从本期文章开始&#xff0c;会尽量带大家一起刷题 第一题 题目 关键词 思路 源代码 class MinStack { public: void push(int val) { _st.push(val); if(_minst.empty() || val < _minst.top()) { _minst.push(val); } } void pop() { if(_st.top() _minst.top()) {…...

间隙锁在其他数据库管理系统中的类似实现

间隙锁在其他数据库管理系统中的类似实现 一、引言 在 MySQL 中,间隙锁在可重复读事务隔离级别下起到了防止幻读的重要作用。那么在其他数据库管理系统中,是否也有类似的机制来实现类似的功能呢?了解其他数据库管理系统中与间隙锁类似的实现,可以帮助我们更好地理解不同数…...

OpenCV 与 YoloV3的结合使用:目标实时跟踪

目录 代码分析 1. YOLO 模型加载 2. 视频加载与初始化 3. 视频帧处理 4. 物体检测 5. 处理检测结果 6. 边界框和类别显示 7. 帧率&#xff08;FPS&#xff09;计算 8. 结果显示与退出 9. 资源释放 整体代码 效果展示 总结 代码分析 这段代码使用 YOLO&#xff08…...

Worse is Better

Worse is Better是UNIX的设计哲学&#xff0c;通俗来说&#xff0c;就是&#xff1a;保持接口与实现的简单性&#xff0c;比系统的任何其他属性&#xff0c;包括准确性、一致性和完整性&#xff0c;都来得更加重要 设计系统时&#xff0c;接口和实现的简单性是至关重要的。这种…...

Python Web 框架篇:Flask、Django、FastAPI介绍及其核心技术

Python Web 框架篇&#xff1a;Flask、Django、FastAPI介绍及其核心技术 目录 &#x1f40d; Flask Flask 核心概念&#xff08;路由、视图函数、模板渲染&#xff09;Flask Blueprint 模块化应用Flask 扩展&#xff08;Flask-SQLAlchemy、Flask-WTF、Flask-Migrate 等&#…...

【Qt网络编程基础】Tcp服务器和客户端(只支持一对一)

目录 一、编写思路 1、服务器 总体思路 详细思路 1. 构造函数 (Widget::Widget) 2. 启动监听 (Widget::on_btn_start_clicked) 3. 停止监听 (Widget::on_btn_cease_clicked) 4. 发送消息 (Widget::on_btn_info_clicked) 5. 接收消息 (Widget::receive_message) 6. 处…...

平台开发到落地详解:从食堂采购系统源码到可视化供应链管理数据大屏

随着数字化转型的加速&#xff0c;越来越多的企业和组织开始重视供应链的智能化与可视化管理。在食堂采购领域&#xff0c;供应链管理的复杂性与日俱增&#xff0c;而传统的手工操作往往效率低下、容易出错。因此&#xff0c;开发食堂采购系统并结合可视化数据大屏的解决方案&a…...

静态内部类

目录 一、什么是静态内部类二、静态内部类的意义 一、什么是静态内部类 在 Java 中&#xff0c;静态内部类&#xff08;也称为静态嵌套类&#xff09;是定义在一个类内部的类&#xff0c;但它与外部类没有关联&#xff0c;即它不持有外部类的引用。静态内部类可以访问外部类的…...

Vue+SpringBoot+数据库整体开发流程 1

本篇文章通过springboot整合mybatis-plus去实现后端对数据库的增删改查&#xff0c;以及响应给前端的url&#xff0c;让前端获得数据。 目录 一、简单搭建一个Vue项目 检查node.js版本 使用vue-cli创建空项目 Vue-cli工程中每个文件夹和文件的用处 二、Mysql数据库 创建数…...

百度Apollo打通与ROS的通信,扩展自动驾驶系统生态

技术文档&#xff5c;打通与ROS的通信&#xff0c;扩展自动驾驶系统生态_Apollo开发者社区 (baidu.com)...

Web3 项目安全手册

现如今针对 Web3 项目的攻击手法层出不穷&#xff0c;且项目之间的交互也越发复杂&#xff0c;在各个项目之间的交互经常会引入新的安全问题&#xff0c;而大部分 Web3 项目研发团队普遍缺少的一线的安全攻防经验&#xff0c;并且在进行 Web3 项目研发的时候&#xff0c;重点关…...

AI边缘计算在安防领域的智能化革新:赋能安防系统的智能化升级

随着人工智能&#xff08;AI&#xff09;和边缘计算技术的快速发展&#xff0c;两者在安防视频领域的应用日益广泛&#xff0c;为传统安防系统带来了革命性的变革。AI边缘计算技术通过将AI算法和模型部署在边缘设备上&#xff0c;实现了数据处理和智能决策的即时响应&#xff0…...

vscode配置C/C++环境(保姆级详细教程)

一. 引言 VSCode&#xff0c;全称为Visual Studio Code&#xff0c;是一款由微软开发的免费、开源的轻量级代码编辑器&#xff0c;它支持多种编程语言和平台&#xff0c;并提供丰富的扩展功能&#xff0c;让开发者能够更高效地编写代码。 大家能来搜用如何在VSCode配置C/C环境…...

MDK keil STM32 局部变量不能查看值,显示为not in scope

用MDK调试程序&#xff0c;查看变量时watch窗口总是和 一、方法1&#xff1a;优化级别改为Level 0 1 编译器把这个局部变量给优化掉了&#xff0c;并没有在内存中生成&#xff0c;把优化级别改为Level 0&#xff0c;重新编译。 Keil默认优化是等级3&#xff0c;最高优化&…...

表连接查询之两个left join与递归SQL

一、如下SQL1 SELECT i.*,su1.name as createName,su2.name as updateNameFROM information ileft join sys_user su1 on su1.idi.create_idleft join sys_user su2 on su2.idi.update_id 二、分析 1、SELECT i.*,su.name as createName,sua.name as updateName FROM informati…...

2024.9.10

打的模拟赛难度很大,T1就2200分? 其中转化成差分数组上的问题很巧妙 还用了将数分成2的多次方的形式,这种套路在最近的几场比赛和题中都见到过,值得归纳一下 T3是长链剖分和对顶堆维护,太难写了还没写出来 T4仍然是概率题,但是并没有见过类似的出题方式,其中关键是:最大独…...

22_图论中的高级数据结构

菜鸟&#xff1a;老鸟&#xff0c;我最近在处理一个网络节点数据的问题&#xff0c;发现代码运行得特别慢。你能帮我看看有什么优化的方法吗&#xff1f; 老鸟&#xff1a;当然可以。你处理的是图结构对吗&#xff1f;你是如何存储和操作这些节点的&#xff1f; 菜鸟&#xf…...

axure判断

在auxre中我们也可以实现判断的功能&#xff0c;当目标等于什么内容时则执行下方的功能。 一、判断输入框中是否有值 画布添加一个输入框、一个文本标签删除其中内容&#xff0c;添加一个按钮&#xff0c;输入框命名为【文本显示】文本标签命名为【提示】 给按钮新增一个交互…...

【开源大模型生态7】华为的盘古大模型

鹏程盘古模型是全球首个全开源2000亿参数的自回归中文预训练语言大模型&#xff0c;在知识问答、知识检索、知识推理、阅读理解等文本生成领域表现突出。 2070亿参数&#xff0c;64层。 这里注意几个概念。 参数&#xff08;Parameters&#xff09;&#xff1a; 参数是指构成模…...

SprinBoot+Vue远程教育网站的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…...

docker的基本操作

目录 一&#xff0c;应用部署 创建容器 进入容器 创建有端口的容器 通过ssh进入容器 二、镜像操作 搜索镜像 拉取镜像 查看本地镜像 删除镜像 导入镜像 三、容器操作 创建并启动容器 使用 docker run 命令创建并启动一个容器 创建一个有端口号的容器 查看正在运…...

理解 RabbitMQ:生产者、连接、通道、交换机、队列与消费者的消息流

在分布式消息系统中&#xff0c;RabbitMQ 是一个非常流行的消息代理。它的核心理念是解耦应用程序的生产者和消费者&#xff0c;使得消息能够可靠地从一方传递到另一方。本文将带你深入了解 RabbitMQ 中 生产者、连接、通道、交换机、队列 和 消费者 之间的消息流&#xff0c;并…...