【Linux】(三)—— 文件管理和软件安装

news2024/12/26 11:54:35

文件管理

Linux的文件管理是系统管理中的核心部分,它涉及到如何组织、访问、修改和保护文件及目录结构。

目录

    • 文件管理
      • 基本概念
      • 常用命令
        • 查看和切换目录
        • 创建文件和目录
        • 删除文件和目录
        • 文件拷贝
        • 移动和重命名文件
        • 文件查看cat
        • 文件查看more
        • 查找文件
        • 查找文本
      • 数据流和管道
        • 数据流重定向
        • 管道 (`|`)
        • 特殊文件
    • 文件类型
    • 文件链接
    • 归档和压缩文件
    • 软件的安装与卸载
        • 更新软件

基本概念

  1. 文件系统: Linux使用树状结构的文件系统,一切皆文件,包括硬件设备也被视为特殊文件。常见的文件系统类型有ext4、XFS、Btrfs等。
  2. 目录与路径: 每个文件和目录都有一个唯一的路径,分为绝对路径(从根目录"/"开始)和相对路径(相对于当前目录)。
  3. 文件类型: 包括普通文件(-)、目录(d)、符号链接(l)、块设备(b)、字符设备(c)、管道(p)、套接字(s)等。
  4. inode与dentry: 每个文件有两个重要数据结构,inode(索引节点)存储文件的元数据(如权限、所有者、大小、修改时间等),dentry(目录项)记录文件名和inode的映射。

常用命令

查看和切换目录
ls [options] [directory] # 显示当前目录下的目录和文件

ls命令常用的[options]选项如下:
-a 或 --all:显示包括以.开头的隐藏文件在内的所有文件和目录。
-l(小写的L):以长格式显示,提供文件或目录的详细信息,包括权限、所有者、文件大小、修改日期和时间等。
-h:与-l一起使用时,使文件大小以易于阅读的格式(如KB、MB)显示。
-t:按修改时间排序,最新的文件或目录排在前面。
-r:逆序排序,默认是按字母升序,使用-r后变为降序。
-R:递归列出目录内容,显示所有子目录下的内容。
-S:按文件大小排序。
-A:与-a相似,但不显示.(当前目录)和..(父目录)。
-d:仅列出目录本身的信息,而不列出其内容。
-i:显示文件的inode号。
tree # 以树的形式显示目录结构(ubuntu系统需要先安装命令sudo apt install tree)

pwd # 查看当前目录位置

cd # change directory,用来切换当前的目录

cd # change directory,用来切换当前的目录,一些常见的系统目录用法如下:

cd ~ # 切换到当前用户的家目录。

cd - # 返回上一个工作目录。

cd … # 进入上级目录。

cd / # 进入根目录。

创建文件和目录

目录类似于Windows操作系统下的文件夹;文件为没有子文件的文件,包括txt,png等格式都是文件

mkdir 目录名 # 在当前工作目录下创建目录
touch 文件名 # 创建文件,多个参数用空格隔开,可以一次创建多个文件
-p  # 递归创建目录,例如mkdir -p ./a/b/c会在当前目录下递归创建文件夹a,b和c
gedit 文件名 # 编辑文件,可以同时修改多个文件(需要使用sudo apt install treegedit先安装命令,此命令使用并不多,我更加建议你使用后面的vim文件编辑器)
删除文件和目录
rm 文件/目录名 # rm为remove缩写,使用rm删除文件或目录删除后不可恢复,可以一次删除多个文件
rm -r 目录名 # 递归删除目录,如果目录不为空不能直接删除,需要递归删除
rm -i 文件/目录名 # 增加删除提示,ubuntu下删除默认没有提示
rm -f 文件/目录名 # 去掉提示强制删除,在腾讯/阿里云服务器中删除默认有提示
文件拷贝
cp 源文件路径 目标文件路径 # cp为单词copy的缩写,将文件从源路径拷贝到目标路径(源路径下依然存在)

cp指令的相关[options]-i  # 在目标文件路径下有同名文件时进行询问
-v  # 显示拷贝过程
-r  # 递归拷贝
-a  # 将文件权限属性等信息都进行拷贝
移动和重命名文件
mv 源文件路径 目标文件路径 # mv为单词move的缩写,将文件从源路径移动到目标路径(源路径下不存在),在写目标文件路径时使用新的名字即可以完成重命名

mv文件指令的相关[options]选项:
-i # 在目标文件路径下有同名文件时进行询问
-v # 显示移动过程
-f # 覆盖不提示,强制移动
mv # 移动目录时不需要递归操作
文件查看cat
cat 文件名 # 查看文件

cat命令相关[options]选项:
-n # 查看文件的时候,对每一行进行编号
-b # 非空行进行编号
-s # 连续2行以上的空行,只显示1行
cat 文件名1 文件名2 # 连接文件,把两个文件合并到一起显示
文件查看more
more 文件名 # 分屏(分页)查看文件内容

more指令相关选项:
+num # 从第num行开始查看文件
-p # 先清屏,再显示文件内容
-s # 连续2行以上的空行,只显示一行

分页查看时的快捷键:
回车 # 查看一行
空格 # 查看下一屏
F/ctrl + f # 下一屏
B/ctrl + B # 上一屏
q # 退出
查找文件

常用的查找文件分为按照名称和按照文件大小查找,两者具体命令如下:

  • 按照名称搜索 -name

    find /mydir -name myfile.txt:查找/mydir路径下的myfile.txt文件

    find /mydir -name ‘*.txt’ :可以使用正则进行匹配,此条语句以为查找/mydir目录下的所有的文本文件

  • 按照大小搜索 -size

    find /mydir -size +30M :查询/mydir下大于30M的文件

    Find /mydir -size -20M :查询/mydir下小于20M的文件

    find /mydir -size +15M -size -30M:查询/mydir下大于15M小于30M的文件

查找文本

使用grep命令可以在文件中查找指定内容的位置,其基本命令如下:

grep '搜索内容串' 文件名  # 在指定文件中返回搜索内容所在行

grep命令相关[options]选项如下:
    -i 忽略大小写
    -n 查看搜索结果的行号
    -v 取反,不包含'搜索内容串' 的结果
# 可以使用正则表达式进行匹配

数据流和管道

在Linux系统中,数据流(data stream)指的是程序或进程在执行过程中产生的输入(input)、输出(output)以及错误信息(error)的流动。Linux系统主要定义了三种标准的数据流,分别是:

  1. 标准输入(Standard Input)

    • 通常默认来自键盘,但也可以通过重定向或管道从其他来源接收数据。
    • 用于向程序提供数据,例如在使用cat命令从管道读取内容时。
  2. 标准输出(Standard Output)

    • 默认输出到终端屏幕,展示程序的正常输出结果。
    • 可以通过重定向(>>>)发送到文件,或通过管道(|)传递给另一个命令。
  3. 标准错误(Standard Error)

    • 默认也是输出到终端屏幕,但用于显示程序运行时的错误信息或警告,与正常的程序输出分开管理,便于区分。
    • 可以独立于标准输出重定向到文件或合并到标准输出中。
数据流重定向
  • 重定向 (>>>)
    • > 会覆盖目标文件的内容。
    • >> 会在目标文件的末尾追加内容。
    • 这些操作可以改变标准输出或标准错误的流向,例如 ls > files.txtls命令的输出保存到files.txt文件中。
管道 (|)

管道允许将一个命令的输出直接作为另一个命令的输入,例如 ls | grep txtls命令列出的包含“txt”的行筛选出来。

特殊文件
  • /dev/null:可以将任何不需要的输出重定向至此,相当于丢弃数据。

文件类型

在查看文件时,使用``ls -l` 命令可以查看到文件/目录的类型,在每行文件的第一列数据表示文件的类型:
请添加图片描述

Linux系统中的文件类型主要包括以下几种:

  1. 普通文件(Regular File):
    • 包含文本文件、二进制文件(如程序、库文件)、数据文件等。
    • 无特殊标识,在ls -l命令输出中以-表示。
  2. 目录文件(Directory):
    • 用于组织和存储其他文件和目录的容器。
    • ls -l命令输出中以d表示。
  3. 符号链接(Symbolic Link):
    • 指向另一个文件或目录的特殊文件,类似于Windows的快捷方式。
    • ls -l命令输出中以l表示。
  4. 设备文件:
    • 分为块设备文件(如硬盘、光驱)和字符设备文件(如键盘、打印机)。
    • 块设备文件以b表示,字符设备文件以c表示。
  5. 管道文件(Pipe/FIFO):
    • 用于进程间通信的特殊文件类型,遵循先进先出原则。
    • ls -l命令输出中以p表示。
  6. 套接字文件(Socket):
    • 另一种进程间通信方式,常用于网络通信或进程间非文件描述符的通信。
    • ls -l命令输出中以s表示。

这些文件类型可以通过ls -l命令查看文件详细信息时的第一个字符来区分。此外,Linux系统还使用inode和文件权限系统来进一步管理这些文件,允许对文件的访问、修改和执行权限进行精细控制。文件的实际类型和用途不仅取决于上述分类,也与其内容和系统如何使用它们有关。例如,文本文件和二进制文件在Linux系统层面没有本质区别,都是存储数字的文件,区别在于打开和解释这些数字的方式。

文件链接

链接文件分为软链接(符号链接)和硬链接

软链接(相当于Windows系统中的快捷方式):软链接不占用磁盘空间,源文件删除则软连接失效

ln -s 源文件 链接文件

硬链接:给一个文件起了多个名字,把所有名字都删掉才能删除这个文件,每一个名字对文件的修改都会同步生效

ln 源文件 链接文件

软链接 vs. 硬链接

软链接硬连接
跨文件系统×
不存在的目录/文件建立链接×
为目录建立链接×

归档和压缩文件

归档:把多个文件归档为一个大文件,类似于Windows下的打包压缩操作

tar -cvf 打包文件名.tar 文件1 文件2 # 多文件归档 
tar -cvf 打包文件名.tar 目录 # 目录归档 
tar -xvf 档案文件 # 解档

归档解档的相关[options]解释:
    -c 生成档案文件,创建打包文件
    -v 列出归档解档的过程
    -f 指定档案文件名称,后缀为.tar,必须放选项的最后
    -x 解档文件

压缩:在归档时多加一个选项-z(tar -zcvf),同时完成归档和压缩,压缩文件的后缀为.gzta,如果同时配合使用gzip,压缩后的文件后缀为.tar.gz(最常用的类型):

tar -zcvf 压缩文件名.tar.gz 目录/多个文件

解压缩:在解档时多加一个选项-z(tar -zxvf),同时完成解档和解压缩

软件的安装与卸载

ubuntu中的安装软件有三种方式:

  1. make install:源代码安装包(tarball),软件根据极其硬件进行配置和编译,性能最好,但是需要使用源代码编译、安装,比较麻烦

  2. dpkg安装deb包:安装包直接运行安装,比第一种简单。但存在包依赖问题,安装时需要受用下载很多包

    sudo dpkg -i 包名(以.deb结尾)
    
  3. apt-get方式:系统自动下载安装依赖的包,但必须要有软件源(推荐使用)

    sudo apt-get install xxxx
    

下面我们主要介绍apt-get方式:

首先需要把国外的软件源换成国内的,下载软件时更快。在 Ubuntu 24.04 之前,Ubuntu 的软件源配置文件使用传统的 One-Line-Style,路径为 /etc/apt/sources.list;从 Ubuntu 24.04 开始,Ubuntu 的软件源配置文件变更为 DEB822 格式,路径为 /etc/apt/sources.list.d/ubuntu.sources

建议先把这里提到的文件进行备份,比如我使用的使用24.04之前版本的ubuntu系统,先把 /etc/apt/sources.list 文件使用上面介绍的cp(拷贝)命令进行拷贝了,以防万一需要改回来初始状态,然后再更改该文件,使用gedit将/etc/apt/sources.list 内容修改为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse

修改之后记得保存

请添加图片描述

如果是24.04之后版本的ubuntu系统,则需要把/etc/apt/sources.list.d/ubuntu.sources中的内容修改为:

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# Suites: noble noble-updates noble-backports
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# Types: deb-src
# URIs: http://security.ubuntu.com/ubuntu/
# Suites: noble-security
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 预发布软件源,不建议启用

# Types: deb
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# Suites: noble-proposed
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# # Types: deb-src
# # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# # Suites: noble-proposed
# # Components: main restricted universe multiverse
# # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

如果还有其他关于清华镜像的问题,可以参考文档:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

更改清华大学开源软件镜像站后更新一下

sudo apt-get update

更新后,显示下图内容则为成功

请添加图片描述

测试安装vim编辑器,更新成功之后下载速度要快很多,你也可以在更新之前先测试一遍,和更新之后的下载速度进行对比。vim编辑器的具体用法我将会在本系列后面的文章中为您详细讲解。

sudo apt-get install vim
sudo apt-get remove vim  # 卸载vim
更新软件
sudo apt-get update

这个命令会从配置的软件仓库中下载最新的软件包列表。

一旦软件包列表更新了,你可以使用以下命令来更新所有已安装的软件包到它们的最新版本:

sudo apt-get upgrade

更新单个软件包

虽然apt-get upgrade不能直接接受单个软件包的名字作为参数来更新,但你可以通过首先更新软件包列表,然后单独安装特定版本的方式来间接实现。比如,如果你想更新nginx到最新版,先执行sudo apt-get update,然后:

sudo apt-get install nginx

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

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

相关文章

保姆级讲解 Mybatis的配置与管理

Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“intern…

大厂真实面试题(一)

滴滴大数据sql 取出累计值与1000差值最小的记录 1.题目 已知有表t_cost_detail包含id和money两列,id为自增,请累加计算money值,并求出累加值与1000差值最小的记录。 2.分析 本题主要是想找到累加值域1000差距最小的记录,也就是我们要对上述按照id进行排序并且累加,并…

华为如何造车?

引言 近年来,华为在智能汽车领域的布局备受关注,虽然华为创始人任正非曾多次表示华为不造车,但事实证明,华为在汽车产业链的深度参与已让人产生了“华为造车”的错觉。本文将探讨华为在汽车领域的发展历程,分析华为不…

F5G城市光网,助力“一网通城”筑基数字中国

《淮南子》中说,“临河而羡鱼,不如归家织网”。 这句话在后世比喻为做任何事情都需要提前做好准备,有了合适的工具,牢固的基础,各种难题也会迎刃而解。 如今,数字中国发展建设如火如荼,各项任务…

AI绘画软件深度测评:精选四款高效自动生成工具

随着人工智能技术的飞速发展,AI绘画软件已经成为艺术创作和设计领域的新宠。它们不仅能够提供无限的创意灵感,还能大幅提升工作效率。在经过对几十种AI绘画软件的测试后,我们特别推荐以下四款高效自动生成工具——Midjourney、Stable Diffusi…

Android Studio 下载 | 安装 | 下载 SDK | 中文插件 | 卸载

文章目录 下载安装包安装下载 SDK中文插件卸载 下载安装包 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 点击下载 Android Studio。 在协议最下方勾选同意(第一次用最好还是看一眼),再点击 Dowload Android Stu…

人工智能时代,Martech未来的3种场景

多年来,人们一直在预测Martech Landscape的崩溃。成千上万个不同的Martech应用程序将被筛选出少数几个赢家。在过去的12年里,这些预测一直被证明是错误的,年复一年。 但也许,只是也许,人工智能时代将成为拐点&#xf…

九.网络层协议——IP协议

TCP和IP之间的关系 引言 IP协议全称为“网际互连协议(Internet Protocol)”,是TCP/IP体系中的网络层协议. 我们在上篇文章中曾经提到过,TCP的全称是传输控制协议(Transmission Control Protocol"),它和我们的IP…

用户管理的小demo--修改、删除

目录 1、删除 同理 异常往下抛出 2、修改 2.1 在修改页面 实现数据回显 同理 往下抛异常 2.2 更新数据 3、结果: 1、删除 同理 异常往下抛出 2、修改 2.1 在修改页面 实现数据回显 同理 往下抛异常 2.2 更新数据 3、结果:

SEACells:元细胞分析

元细胞是从单细胞测序数据中衍生的细胞分组,代表高度精细的不同细胞状态。在这里,作者介绍了单细胞细胞状态聚集 (SEACells),这是一种用于识别元细胞的算法,它克服了单细胞数据的稀疏性,同时保留了传统细胞聚类所掩盖的…

安防综合管理系统EasyCVR视频汇聚平台GA/T 1400协议中的关键消息交互示例

在当今的信息化时代,公共安全防范日益成为保障社会和谐稳定的关键。视频监控系统作为现代安全防范的重要手段,正不断在公安、交通、城市管理等领域发挥着越来越重要的作用。而GA/T 1400协议视图库,作为公安视频图像信息应用系统的标准&#x…

【前端面试3+1】18 vue2和vue3父传子通信的差别、props传递的数据在子组件是否可以修改、如何往window上添加自定义属性、【多数元素】

一、vue2和vue3父传子通信的差别 1、Vue2 父组件向子组件传递数据通常通过props属性来实现。父组件可以在子组件的标签中使用v-bind指令将数据传递给子组件的props属性。在子组件中,可以通过props属性来接收这些数据。这种方式是一种单向数据流的方式,父…

SpringBoot配置Mysql+达梦双数据源

背景&#xff1a; 因项目需求&#xff0c;需使用Mysql达梦双数据源 涉及技术栈&#xff1a; SpringBoot、Druid、Mybatis、Mysql、达梦 一、引入pom依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://mave…

视频汇聚EasyCVR安防监控系统GA/T 1400协议视图库对接:技术实现与应用

随着信息技术的不断发展&#xff0c;各类协议标准在各个领域得到了广泛应用。GA/T1400协议作为公安视频监控系统中的一种重要标准&#xff0c;对于提升公安工作的信息化水平、加强社会治安防控具有重要意义。本文将重点探讨GA/T1400协议视图库对接的技术实现及应用价值。 一、…

语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(三)音频去噪算法大全+Python源码应用

前言 深度学习技术在当今技术市场上面尚有余力和开发空间的&#xff0c;主流落地领域主要有&#xff1a;视觉&#xff0c;听觉&#xff0c;AIGC这三大板块。 目前视觉板块的框架和主流技术在我上一篇基于Yolov7-LPRNet的动态车牌目标识别算法模型已有较为详细的解说。与AIGC相…

1104 天长地久(测试点1,2,3)

solution 测试点3超时&#xff1a;直接暴力搜超时。m和m1的最大公约数一定是1&#xff0c;则A的个位一定是9才有可能gcd(m, m1)大于1&#xff0c;步长变为10。测试点1&#xff0c;3&#xff1a;m和n的最大公约数是大于2的素数测试点2&#xff1a;按照n从小到大排序&#xff0c…

【spring】第一篇 IOC和DI入门案例

Spring到底是如何来实现IOC和DI的&#xff0c;那接下来就通过一些简单的入门案例&#xff0c;来演示下具体实现过程。 目录 前期准备 一、IOC入门案例 思路分析 代码实现 二、DI入门案例 思路分析 代码实现 总结 前期准备 使用IDEA创建Maven项目&#xff0c;首先需要配…

STM32 SPI驱动读取LSM6DSRTR

提示&#xff1a;通过SPI驱动读取传感器数据 文章目录 前言一、LSM6DSRTR二、配置步骤1.配置SPI2.引入 LSM驱动库3.结果 总结 前言 制作一个倾角传感器&#xff0c;通过SPI读取LSM6DSRTR的加速度数据转换为角度&#xff0c;不用IIC的原因是考虑IIC通讯的协议过于繁琐&#xff…

软件测试报告实际案例模板(项目测试文档doc原件)

软件测试报告在软件开发过程中起着至关重要的作用&#xff0c;主要有以下几个主要原因&#xff1a; 1、确保软件质量 2、提供决策支持 3、记录测试过程和结果 4、促进沟通和协作 5、符合标准和法规要求 6、改进测试流程和策略 7、降低风险 软件开发全套资料获取进主页或者本文末…

vue3使用vue3-print-nb打印

打印效果 1.下载插件 Vue2.0版本安装方法 npm install vue-print-nb --saveVue3.0版本安装方法&#xff1a; npm install vue3-print-nb --save2.main.js引入 vue2引入 import Print from vue-print-nb Vue.use(Print)vue3引入 import print from vue3-print-nb // 打印…