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

文章目录

  • 1 文件系统树
  • 2 几个特殊的目录
  • 3 绝对路径与相对路径
  • 4 文件系统中跳转与浏览
    • 4.1 文件系统中跳转
    • 4.2 查看目录内容
      • 4.2.1 ls命令详解
      • 4.2.2 确定文件类型示例
  • 5 操作目录与文件
    • 5.1 强大的通配符
    • 5.2 复制目录/文件
    • 5.3 移动/重命名目录/文件
    • 5.4 删除目录/文件
    • 5.5 创建目录
    • 5.6 创建文件

1 文件系统树

与Windows类似,Linux以分层目录结构来组织所有文件。所有的文件组成了一颗树形目录,这个目录树可能包含文件和其他目录。
文件系统的第一级目录称为根目录,根目录包含文件和子目录,子目录包含更多的文件和子目录,以此类推。

与Windows不同的是,Linux总是只有一个单一的文件系统树,不管有多少个磁盘或者存储设备连接到计算机上。存储设备挂载到目录树的各个节点上。

文件系统树示例

2 几个特殊的目录

这里介绍一下几个特殊的目录:

  • 根目录/:文件系统的最顶层是由根目录开始的。
  • 当前目录.:用户当前所在的工作目录,比如./xxx.txt表示当前目录下的xxx.txt文件。
  • 父目录..:当前目录的父目录,比如../xxx.txt,表示与当前目录同级的xxx.txt文件。
  • 家目录~:每个用户都有他自己的家目录,当我们首次登录系统(或者启动终端仿真器会话)后,当前工作目录是我们的家目录。
  • 先前的工作目录-:上次跳转前的工作目录。

3 绝对路径与相对路径

假设我有一个文件: /home/chinehe/project/linux/linux.md

  • 绝对路径: 从根目录开始,紧跟着目录树的一个个分支,一直到达所期望的目录或文件。上述文件的绝对路径为:/home/chinehe/project/linux/linux.md
  • 相对路径: 相对路径指的是目标目录或文件,相对于某个目录的路径。
    假设当前工作目录为/home/chine/project/,先前工作目录为/home/chine/project/linux/,家目录为/home/chine/,则相对路径可以表示为:
    • ./linux/linux.md 相对于当前目录
    • linux/linux.md 相对与当前目录
    • ../project/linux/linux.md 相对与父目录
    • ~/project/linux/linux.md 相对于家目录
    • -/linux.md 相对于先前工作目录

4 文件系统中跳转与浏览

4.1 文件系统中跳转

常用跳转相关的命令:

  • pwd:打印当前目录
  • cd:跳转到指定目录(更改当前工作目录)
    • cd ~ 跳转到家目录
    • cd - 跳转到上个工作目录
    • cd ~username 跳转到指定用户(username)的家目录。
    • cd ..跳转到父目录

示例

4.2 查看目录内容

查看目录内容相关命令:

  • ls列出指定目录/文件(默认为当前目录)的信息,默认使用字母顺序排序。
  • file 打印文件内容的简单描述。

4.2.1 ls命令详解

使用ls命令可以

使用方法:ls [OPTION]... [FILE]...
示例

常用参数:

  • -a, --all 显示所有,不忽略以.开头的隐藏文件。
  • -A, --almost-all 显示几乎所有,比-a少显示...
  • -d, --directory 列出目录本身,而不是其内容。
  • -F, --classify 在列出内容后面追加一个指示符。例如目录后面会追加一个/
  • -h, --human-readable 以长格式-l输出时,以易于人们阅读分方式打印大小 (例如, 1K 234M 2G)
  • -l 以长格式输出
  • -R, --recursive 递归列出子目录的内容
  • -S 以文件大小排序
  • -t 按文件最后修改时间排序。

4.2.2 确定文件类型示例

示例

5 操作目录与文件

5.1 强大的通配符

因为shell频繁地使用文件名,shell提供了以下特殊字符来帮助我们快速指定一组文件名。这些特殊字符叫做通配符,使用通配符可以语句字符组合模式来选择文件名。

接受文件名作为参数的任何命令,都可以使用通配符

通配符:

通配符含义
*匹配任意多个字符(含0、1)
?匹配任意一个字符
[chars]匹配任意一个包含在字符集中的字符
[!chars]匹配任意一个不包含在字符集中的字符
[[:class:]]匹配任意一个属于指定字符类中的字符

常用的字符类:

字符类意义
[:alnum:]匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:]匹配任意一个数字
[:lower:]匹配任意一个小写字母
[:upper:]匹配任意一个大写字母

示例:

模式匹配对象
*所有文件
g*文件名以“g”开头的文件
b*.txt以”b” 开头,中间有零个或任意多个字符,并以”.txt” 结尾的文件
Data???以“Data”开头,其后紧接着 3 个字符的文件
[abc]*文件名以”a”,”b”, 或”c” 开头的文件
BACKUP.[0-9][0-9][0-9]以”BACKUP.” 开头,并紧接着 3 个数字的文件
[[:upper:]]*以大写字母开头的文件
[![:digit:]]* 不以数字开头的文件
*[[:lower:]123]文件名以小写字母结尾,或以“1”,“2”,或“3”结尾的文件

5.2 复制目录/文件

使用cp命令可以复制目录/文件

用法:

cp [OPTION]... [-T] SOURCE DEST
# 复制SOURCE到DESTcp [OPTION]... SOURCE... DIRECTORY
# 复制多个SOURCE到DIRECTORYcp [OPTION]... -t DIRECTORY SOURCE...
# 将后续的所有SOURCE复制到DIRECTORY

常用选项:

选项意义
-a,--archive 复制文件和目录,以及它们的属性,包括所有权和权限。通常,副本具有用户所操作文件的默认属性。
-i, --interactive在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。
-r, --recursive递归地复制目录及目录中的内容。当复制目录时,需要这个选项(或者-a 选项)。
-u, --update当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
-v, --verbose显示详细的命令操作信息

示例:

示例命令运行结果
cp file1 file2复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2的内容会被 file1 的内容重写。如果 file2 不存在,则会创建file2。
cp -i file1 file2这条命令和上面的命令一样,除了如果文件 file2 存在的话,在文件 file2 被重写之前,会提示用户确认信息。
cp file1 file2 dir1复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。
cp dir1/* dir2使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。dir2 必须已经存在。
cp -r dir1 dir2复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在,创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。如果目录 dir2 存在,则目录 dir1 (和目录中的内容) 将会被复制到 dir2 中。

5.3 移动/重命名目录/文件

使用mv命令可以执行目录/文件移动和目录/文件重命名任务。

用法:

mv [OPTION]... [-T] SOURCE DEST
# 移动SOURCE到DESTmv [OPTION]... SOURCE... DIRECTORY
# 移动多个SOURCE到DIRECTORYmv [OPTION]... -t DIRECTORY SOURCE...
# 将后续的所有SOURCE移动到DIRECTORY

当源目录/文件路径和名称,都与目标目录/文件相同时,则执行重命名操作。

常用选项:

选项意义
-i --interactive在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv 命令会默认重写文件内容。
-u --update当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。
-v --verbose当操作 mv 命令时,显示翔实的操作信息。

示例:

命令作用
mv file1 file2 移动 file1 到 file2。如果 file2 存在,它的内容会被 file1 的内容重写。如果 file2 不存在,则创建 file2。这两种情况下,file1 都不再存在。
mv -i file1 file2除了如果 file2 存在的话,在 file2 被重写之前,用户会得到提示信息外,这个和上面的选项一样。
mv file1 file2 dir1移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。
mv dir1 dir2如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1的内容到目录 dir2 中,同时删除目录 dir1。如果目录 dir2存在,移动目录 dir1(及它的内容)到目录 dir2。

5.4 删除目录/文件

使用rm命令可以删除目录或文件

使用删除命令时,一定要非常小心!!!!

用法:

rm [OPTION]... FILE...
# 删除目录/文件(可以一次删除多个)

常用选项:

选项 ——————————含义
-i, --interactive在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm 会默默地删除文件
-r, --recursive递归地删除文件,这意味着,如果要删除一个目录,而此目录又包含子目录,那么子目录也会被删除。要删除一个目录,必须指定这个选项。
-f, --force忽视不存在的文件,不显示提示信息。这选项覆盖了“–interactive”选项。
-v, --verbose在执行 rm 命令时,显示翔实的操作信息。

示例:

命令运行结果
rm file1默默地删除文件
rm -i file1 除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。
rm -r file1 dir1 删除文件 file1, 目录 dir1,及 dir1 中的内容。
rm -rf file1 dir1同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。

5.5 创建目录

使用mkdir命令,可以创建目录。

用法:

mkdir [OPTION]... DIRECTORY...
# 创建一个或多个目录

如果要创建的目录以及存在,则会打印错误信息并跳过。

5.6 创建文件

并没有专门的命令用于创建文件,但是有很多其他的方式可以实现文件的创建:

  • 使用touch命令创建空文件
    touch命令通常用于更新文件的时间戳,但如果指定的文件不存在,则会创建一个空文件。
  • 使用>操作符
    >操作符用于将命令的标准输出重定向到文件,并且会覆盖文件中的所有内容。如果指定的文件不存在,则会创建一个新文件。
  • 使用>>操作符
    >> 操作符也用于将命令的标准输出重定向到文件中,但是它会将输出追加到文件的末尾而不是覆盖原有内容。如果指定的文件不存在,则会创建一个新文件。
  • 使用文本编辑器
    还可以使用文本编辑器(如vim、nano、gedit等)来创建和编辑文件。

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

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

相关文章

基于STM32的自动化植物浇灌系统教学

引言 随着城市化进程的加快,越来越多的人开始关注家庭园艺与植物养护。基于STM32的自动化植物浇灌系统可以帮助用户在忙碌的生活中顺利管理植物的水分需求。本教学文章将指导您如何利用STM32构建一个简单实用的植物浇灌系统,实现自动浇水功能。 环境准备…

美格智能5G车规级通信模组: 5G+C-V2X连接汽车通信未来十年

自2019年5G牌照发放开始,经过五年发展,我国5G在基础设施建设、用户规模、创新应用等方面均取得了显著成绩,5G网络建设也即将从基础的大范围覆盖向各产业融合的全场景应用转变。工业和信息化部数据显示,5G行业应用已融入76个国民经…

【CRM系统选型指南:国内八大主流工具比较】

本文将对十大主流CRM系统进行比较:纷享销客、Zoho CRM、Pipedrive、简信CRM、HubSpot CRM、八百客CRM、金蝶CRM、浪潮CRM、销售易CRM 本文将深入评比2024年主流的CRM系统,帮助你了解各系统之间的主要区别、优缺点以及当前的发展趋势。通过详细的比较和分…

node.js的exports使用误区解释

exports和module.exports指向同一个对象,最终共享的结果,以module.exports指向的对象为准。 exports 和 module.exports 使用误区 使用require()导入的模块,使用的永远是module.exports指向的对象 实例1 exports.age 23 module.exports {n…

Maven项目的基础配置:利用IDEA将SpringBoot的项目打包成war文件

文章目录 引言Maven项目的聚合与继承(依赖管理)把项目打包成war包其他打包配置引言 利用IDEA将SpringBoot的项目打包成war文件Maven项目的聚合与继承(依赖管理)Maven项目的聚合与继承(依赖管理) 把项目打包成war包 利用IDEA将SpringBoot的项目打包成war文件:要配置启动…

Nuxt.js 应用中的 nitro:config 事件钩子详解

title: Nuxt.js 应用中的 nitro:config 事件钩子详解 date: 2024/11/2 updated: 2024/11/2 author: cmdragon excerpt: nitro:config 是 Nuxt 3 中的一个生命周期钩子,允许开发者在初始化 Nitro 之前自定义 Nitro 的配置。Nitro 是 Nuxt 3 的服务器引擎,负责处理请求、渲…

51c大模型~合集14

我自己的原文哦~ https://blog.51cto.com/whaosoft/11603879 # LLM 结构化数据生成原理 如何结合人工规则让 LLM 输出符合 JSON 格式的数据。 目前 LLM(Large Language Model)从文本补全到内容创作,都展示出了强大的生成能力。然而通过 L…

CSRA的LINUX操作系统24年11月2日下午上课笔记

压缩和解压缩:zip 、gzip、bz、xz # zip 压缩 # 压缩文件夹 # 解压缩 # unzip -v 查看压缩包中的内容 # bzip2 dir1/* :将dir1中的所有文件压缩 # gzip # 压缩文件夹 # 解压缩 tar 归档命令: # 创建tar包 tar -c*f # 释放tar包 tar -xf[c] # c …

MyBatis 返回 Map 或 List<Map>时,时间类型数据,默认为LocalDateTime,响应给前端默认含有‘T‘字符

一、问题 MyBatis 返回 Map 或 List时,时间类型数据,默认为LocalDateTime Springboot 响应给前端的LocalDateTime,默认含有’T’字符,如何统一配置去掉 二、解决方案 1、创建配置类,对ObjectMapper对象进行定制&am…

数据结构算法篇--递归(c语言版)

目录 1.递归 1.1求阶乘: 1.2.斐波那契数 1.3. 求幂 1.递归 在C语言中,递归是一种函数调用自身的方法,用来解决一些具有重复性质的问题。例如,计算阶乘、斐波那契数列等问题都可以通过递归实现。 递归在书写的时候&#xff0…

在vue3的vite网络请求报错 [vite] http proxy error:

在开发的过程中 代理proxy报错: [vite] http proxy error: /ranking/hostRank?dateType1 Error: connect ETIMEDOUT 43.xxx.xxx.xxx:443 网络请求是http的: // vite.config.ts import { Agent } from node:http;server: {host: 0.0.0.0,port: port,open: true,https: false,…

西南科技大学C++作业1——组合依赖关系实验代码

目录 一、实现效果预览 二、实验要求 三、实现代码 book.h book.cpp borrow.h borrow.cpp library.h library.cpp student.h student.cpp main.cpp 一、实现效果预览 二、实验要求 作业1:类与类关系设计(组合或依赖) 目 的: 1) 巩固类的定义,成员变量、成员方…

GPIO子系统中Controller驱动源码分析

往期内容 本专栏往期内容: Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体Pinctrl子系统中c…

【系统架构设计师】六、UML建模与架构文档化

在20世纪70年代,陆续出现了面向对象的建模方法,UML(统一建模语言)的出现,以融合了多种面向对象建模方法,简介的图形和符号,直观的表示和强大的表示能力,得到了工业界与学术界认可。它…

【实用技能】在 SQL Server 中使用 LIMIT 子句的替代方案

在数据库管理中,有效限制查询结果对于优化性能和确保检索相关数据至关重要。许多 SQL 数据库系统(例如 MySQL 和 PostgreSQL)都使用LIMIT子句来指定查询返回的记录数。但是,SQL Server 不支持该LIMIT子句,而是选择诸如…

Apache-Hive数据库使用学习

前期准备 Hadoop-分布式部署(服务全部在线) Mysql-node1节点部署(确认安装正常) apache-hive -node1节点部署(需要与MySQL元数据联动存储) 参考博客: Hadoop Hadoop集群搭建-完全分布式_hadoop完…

Webserver(3.2)锁

目录 互斥量死锁未解锁重复加锁多个锁 读写锁案例 互斥量 接上一章&#xff0c;卖票存在线程安全问题。 #include<stdio.h> #include<pthread.h> #include<unistd.h> int tickets1000;//局部变量就是每个人卖100张&#xff0c;全局变量就是一起卖100张&…

105. UE5 GAS RPG 搭建主菜单

在这一篇&#xff0c;我们将实现对打开游戏显示的主菜单进行搭建&#xff0c;主菜单将显示游戏主角&#xff0c;游戏名称和进入游戏和退出游戏两个按钮。 搭建菜单场景 我们将主菜单设置为一个单独的场景&#xff0c;前面可以显示对应的UI控件&#xff0c;用于玩家操作&#…

语义分割——U-Net

U-Net是继FCN之后又一个经典的语义分割网络模型&#xff0c;并且也是很多后续语义分割模型的“祖宗”。这个网络模型是2015年提出来的&#xff0c;它具有一个非常对称的结构&#xff0c;很像字母“U”&#xff0c;所以被称作U-Net。U-Net被广泛应用于医学影像领域&#xff0c;如…

AI之硬件对比:据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D

AI之硬件对比&#xff1a;据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D 目录 Nvidia的显卡 Nvidia的5090/5080/4090/4080&#xff1a;据传传英伟达Nvidia RTX 5090后续推出32GB版且RTX 5080后续或推出24GB版 RTX 5090相较于RTX 4090&…