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

Linux基础 文件与目录

1. 文件及目录管理

单用户操作系统和多用户操作系统(科普)

单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源

Windows XP 之前的版本都是单用户操作系统

多用户操作系统:指一台计算机在同一时间可以由 多个用户 使用,多个用户共同享用系统的全部硬件和软件资源

Unix 和 Linux 的设计初衷就是多用户操作系统

1.1 Win 和 Linux 区别

Windows 下的文件系统

在 Windows 下,打开 “计算机”,我们看到的是一个个的驱动器盘符:

  • 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:

 

 

Linux 下的文件系统

在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):

 Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面

 

1.11 用户目录

位于 /home/user,称之为用户工作目录或家目录,表示方式:

/home/user
~

1.2 Linux 主要目录速查表

  • /:根目录,

一般根目录下只存放目录

在 linux 下有且只有一个根目录,所有的东西都是从这里开始

  • 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录

  • /bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等

  • /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub

  • /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt

  • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有

  • /etc/inittab

  • /etc/fstab
  • /etc/init.d
  • /etc/X11
  • /etc/sysconfig
  • /etc/xinetd.d

  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下

  • ~ 表示当前用户的家目录

  • ~edu 表示用户 edu 的家目录

  • /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助

  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下

  • /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载

  • /opt:给主机额外安装软件所摆放的目录

  • /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等

  • /root:系统管理员root的家目录

  • /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用

  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内

  • /usr:应用程序存放目录

  • /usr/bin:存放应用程序

  • /usr/share:存放共享数据
  • /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
  • /usr/local:存放软件升级包
  • /usr/share/doc:系统说明文件存放目录
  • /usr/share/man:程序说明文件存放目录

  • /var:放置系统执行过程中经常变化的文件

  • /var/log:随时更改的日志文件

  • /var/spool/mail:邮件存放的目录
  • /var/run:程序或服务启动后,其 PID 存放在该目录下

2. 文件和目录常用命令

文件管理不外乎文件或目录的创建、删除、查询、移动,有mkdir/rm/mv

文件查询是重点,用find来进行查询;find的参数丰富,也非常强大;

查看文件内容是个大的话题,文本的处理有太多的工具供我们使用,在本章中只是点到即止,后面会有专门的一章来介绍文本的处理工具;

有时候,需要给文件创建一个别名,我们需要用到ln,使用这个别名和使用原文件是相同的效果;

在职场中,作为后端程序员,必须要或多或少的掌握一些 Linux 常用的终端命令

Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已

学习终端命令的技巧:

  • 不需要死记硬背,对于常用命令,用的多了,自然就记住了
  • 不要尝试一次学会所有的命令,有些命令是非常不常用的,临时遇到,临时百度就可以

常用 Linux 命令

序号命令对应英文作用
01lslist查看当前文件夹下的内容
02pwdprint wrok directory查看当前所在文件夹
03cd [目录名]change directory切换文件夹
04touch [文件名]touch如果文件不存在,新建文件
05mkdir [目录名]make directory创建目录
06rm [文件名]remove删除指定的文件名
07clearclear清屏

小技巧

  • ctrl + shift + = **放大**终端窗口的字体显示
  • ctrl + - **缩小**终端窗口的字体显示

2.1 查看目录内容

2.11 ls 命令说明
  • ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS 下的 dir 命令

Linux 下文件和目录的特点

  • Linux 文件 或者 目录 名称最长可以有 256 个字符
  • 以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示
  • . 代表当前目录
  • .. 代表上一级目录
2.12 ls 常用选项
参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合 -l 以人性化的方式显示文件大小

计算机中文件大小的表示方式(科普)

单位英文含义
字节B(Byte)在计算机中作为一个数字单元,一般为 8 位二进制数
K(Kibibyte)1 KB = 1024 B,千字节 (1024 = 2 ** 10)
M(Mebibyte)1 MB = 1024 KB,百万字节
千兆G(Gigabyte)1 GB = 1024 MB,十亿字节,千兆字节
T(Terabyte)1 TB = 1024 GB,万亿字节,太字节
P(Petabyte)1 PB = 1024 TB,千万亿字节,拍字节
E(Exabyte)1 EB = 1024 PB,百亿亿字节,艾字节
Z(Zettabyte)1 ZB = 1024 EB,十万亿亿字节,泽字节
Y(Yottabyte)1 YB = 1024 ZB,一亿亿亿字节,尧字节

2.2 目录切换

  • 找到文件/目录位置:cd
  • 切换到上一个工作目录: cd -
  • 切换到home目录: cd or cd ~
  • 显示当前路径: pwd
  • 更改当前工作路径为path: $cd path
2.21 cd

cd 是英文单词 change directory 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一

注意:Linux 所有的 目录 和 文件名 都是大小写敏感的

命令含义
cd切换到当前用户的主目录(/home/用户目录)
cd ~切换到当前用户的主目录(/home/用户目录)
cd .保持在当前目录不变
cd ..切换到上级目录
cd -可以在最近两次工作目录之间来回切换
2.22 相对路径和绝对路径

相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置

绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录/家目录 开始的具体目录位置

2.3 创建和删除操作

  • 创建:mkdir
  • 删除:rm
  • 删除非空目录:rm -rf file目录
  • 删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;)
  • 移动:mv
  • 复制:cp (复制目录:cp -r )

查看当前目录下文件个数:

$find ./ | wc -l

复制目录:

$cp -r source_dir  dest_dir
2.31 touch

创建文件或修改文件时间

  • 如果文件 不存在,可以创建一个空白文件
  • 如果文件 已经存在,可以修改文件的末次修改日期
2.32 mkdir

创建一个新的目录

选项含义
-p可以递归创建目录

新建目录的名称 不能与当前目录中 已有的目录或文件 同名

2.33  rm

删除文件或目录

使用 rm 命令要小心,因为文件删除后不能恢复

选项含义
-f强制删除,忽略不存在的文件,无需提示
-r递归地删除目录下的内容,删除文件夹 时必须加此参数

2.4 查看文件内容

查看文件:cat vi head tail more

序号命令对应英文作用
01cat 文件名concatenate查看文件内容、创建文件、文件合并、追加文件内容等功能
02more 文件名more分屏显示文件内容
03grep 搜索文本 文件名grep搜索文本文件内容
2.41  cat
  • cat 命令可以用来 查看文件内容创建文件文件合并追加文件内容 等功能
  • cat 会一次显示所有的内容,适合 查看内容较少 的文本文件
选项含义
-b对非空输出行编号
-n对输出的所有行编号

Linux 中还有一个 nl 的命令和 cat -b 的效果等价

显示时同时显示行号:

$cat -n

按页显示列表内容:

$ls -al | more

只看前10行:

$head - 10 **

显示文件第一行:

$head -1 filename

显示文件倒数第五行:

$tail -5 filename

查看两个文件间的差别:

$diff file1 file2

动态显示文本最新信息:

$tail -f crawler.log
2.42  more
  • more 命令可以用于分屏显示文件内容,每次只显示一页内容
  • 适合于 **查看内容较多**的文本文件

使用 more 的操作键:

操作键功能
空格键显示手册页的下一屏
Enter 键一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出
/word搜索 word 字符串
2.43  grep
  • Linux 系统中 grep 命令是一种强大的文本搜索工具
  • grep允许对文本文件进行 **模式**查找,所谓模式查找,又被称为正则表达式
选项含义
-n显示匹配行及行号
-v显示不包含匹配文本的所有行(相当于求反)
-i忽略大小写
  • 常用的两种模式查找
参数含义
^a行首,搜寻以 a 开头的行
ke$行尾,搜寻以 ke 结束的行

2.5  其他

  • 批处理命令连接执行,使用 |
  • 串联: 使用分号 ;
  • 前面成功,则执行后面一条,否则,不执行:&&
  • 前面失败,则后一条执行: ||
2.51 echo 文字内容
  • echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用
2.52 重定向 > 和 >>
  • Linux 允许将命令执行结果 重定向**到一个 **文件
  • 将本应显示在**终端上的内容** 输出/追加 到**指定文件中**

其中

  • > 表示输出,会覆盖文件原有的内容
  • >> 表示追加,会将内容追加到已有文件的末尾
2.53 管道 |
  • Linux 允许将 一个命令的输出 可以**通过管道** 做为 另一个命令的输入
  • 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为两端,左端塞东西(写),右端取东西(读)

常用的管道命令有:

  • more:分屏显示内容
  • grep:在命令执行结果的基础上查询指定的文本

2.6 拷贝和移动文件

序号命令对应英文作用
01tree [目录名]tree以树状图列出文件目录结构
02cp 源文件 目标文件copy复制文件或者目录
03mv 路径/源文件 路径/目标文件move移动文件或者目录/文件或者目录重命名
2.61  tree

tree 命令可以以树状图列出文件目录结构

选项含义
-d只显示目录
2.62  cp

cp 命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录 中,相当于 DOS 下的 copy 命令

选项含义
-i覆盖文件前提示
-r若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
2.63  mv

mv 命令可以用来 移动 文件 或 目录,也可以给 文件或目录重命名

选项含义
-i覆盖文件前提示

2.7 总结

  • 查看目录内容
  • ls
  • 切换目录
  • cd
  • 创建和删除操作
  • touch
  • rm
  • mkdir
  • 拷贝和移动文件
  • cp
  • mv
  • 查看文件内容
  • cat
  • more
  • grep
  • 其他
  • echo
  • 重定向 > 和 >>
  • 管道 |

http://www.mrgr.cn/news/64665.html

相关文章:

  • 【含开题报告+文档+源码】基于Web的面对面爱心众筹平台的设计与实现
  • 网付碰一下支付系统功能分享来了!
  • NRF52832学习笔记(41)——添加串口库libuarte
  • 解决CentOS 7环境下VNC出现乱码问题
  • 系统架构设计师(软考高级)一站式通关课程
  • GEMM优化(待更新)
  • int a[5]里面的 a表示a[0], a执行包含5个整数的数组的指针
  • OTFS的基本原理(通俗易懂)
  • 如何建购物网站提升用户体验
  • Goland2024 最新激活码
  • 大语言模型代码生成能力排行榜(2024年9月)
  • 海的记忆:海滨学院班级回忆录项目
  • 【综合算法学习】(第十五篇)
  • ComsolMatlab 基于准亥姆霍兹共振的可调谐水声超材料:从低频到超宽带
  • TOEIC 词汇专题:娱乐休闲篇
  • 【Python+Pycharm】2024-Python安装配置教程
  • 【Clickhouse 探秘】你知道 ClickHouse ReplacingMergeTree 引擎吗?
  • 新西兰电商市场:潜力无限,逆向代购正当时
  • CPU在进行指令执行时如何进行取指和执行
  • 使用 RabbitMQ 有什么好处?
  • 「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用
  • C++——unordered_map和unordered_set的封装
  • 解决使用netstat查看端口显示FIN_WAIT的问题
  • 51c自动驾驶~合集4
  • Vue 响应式原理(数据双向绑定) - 2024最新版前端秋招面试短期突击面试题【100道】
  • 【架构艺术】服务架构稳定性的基础保障