Skip to content

Linux 目录与 Windows 目录

  • Windows 一直是以存储介质为主的,主要以盘符及分区来实现文件管理,然后之下才是目录。文件可以放置在任何目录中
  • Linux 是以目录为主的,是以树形目录结构的形式来构建整个系统的。从逻辑上来说 Linux 的磁盘是挂载在目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统【虽然本质上目录结构还是存储在磁盘上的】【例如可以将一个磁盘分区挂载到 /home 目录上,用于存储用户的个人文件;将另一个磁盘分区挂载到 /var 目录上,用于存储系统日志和变量数据;还可以通过挂载网络文件系统,将远程服务器的文件挂载到本地目录中,方便共享和访问】

当文件名中有 空格/特殊字符 时,Linux 会给文件名加 `''` ,所以在操作这个文件时,也要加上引号才能操作

cat '文件名 1.txt'

FHS

FHS 是文件系统层次结构标准,定义了系统中每个区域的用途,所需要的最小构成的文件和目录,还给出了例外处理与矛盾处理


FHS 的两层规范

  • 第一层是 / 下面的各个目录应该要放什么文件数据【例如 /etc 应该放置设置文件,/bin 与 /sbin 应该放置可执行文件……】
  • 第二层是针对 /usr , /var 的子目录来定义【 /var/log 放置系统日志文件,/usr/share 放置共享数据……】

FHS 依据文件系统使用的频繁程度是否允许用户随意改动,将目录分为四种交互作用的形态: 此处输入图片的描述

基础操作

获取当前目录

  • pwdprint working directory】 获取当前的绝对路径

切换目录

  • cd 路径
    • . 表示当前目录【ls . 表示列出当前目录的文件】
    • .. 表示上一级目录【cd .. 表示进入上一级目录】
    • - 表示上一次所在目录【cd - 表示进入上一次所在的目录】
    •  表示当前用户的 home 目录下的 用户目录cd ~ 将进入用户目录】
bash
 绝对路径
cd /usr/local/bin
 相对路径,现在在/home/shiyanlou
cd ../../usr/local/bin
 相对路径,现在在/usr下,要进入到/bin下
cd ./local/bin

创建目录

  • mkdir 目录名make directory
    • -p 创建目录时,同时创建父目录【parent
bash
mkdir -p ./father/son/grandson

如果当前目录有 `test` 文件,则无法创建 `test` 目录

如果当前目录存在 `test` 目录,则创建 `test` 文件时,会更改 `test` 目录的时间戳,而不是创建文件

创建文件

  • touch 文件名
bash
touch /opt/forloutest

复制文件,目录

  • cpcopy
    • -r 递归复制,也就是复制目录
bash
 将之前创建的 `test` 文件复制到 `/home/shiyanlou/father/son/grandson` 目录中
cp test father/son/grandson

 将father里的son目录,复制到family目录里
cp -r father/son family

删除文件,目录

  • rmremove
    • -f 当删除只读文件遇到阻碍时,强制删除【force
    • -r 递归删除,也就是删除目录recursive
bash
 删除文件
rm test

 删除目录
rm -r test

移动,重命名文件

  • mv 源文件 目的目录move

  • 移动文件
bash
 将文件 file1 移动到 documents 目录里
mv file1 documents
  • 重命名文件
bash
 file1 重命名为 file11
mv file1 file11

批量重命名文件

  • rename

`rename` 命令不是内置命令,若提示无该命令,可以使用 `sudo apt-get install rename` 命令安装

rename 命令要用 perl 正则表达式来作为参数

bash
cd /home/shiyanlou/

 使用通配符批量创建 5 个文件
touch file{1..5}.txt

 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
rename 's/\.txt/\.c/' *.txt

 批量将这 5 个文件,文件名和后缀改为大写:
rename 'y/a-z/A-Z/' *.c

查看文件

  • cat 命令【concatenate】:正序打印文件内容到终端
    • -n number,会显示行号
    • -A 显示所有特殊字符
bash
cat file
cat -n file

  • tac 命令【cat 的倒序】:倒序【从最后一行向上打印】打印文件到终端

  • nl 命令【number lines
    • -b:指定添加行号的方式
      • -b a:表示无论是否为空行,同样列出行号【cat -n 的方式】
      • -b t:只列出非空行的编号并列出【默认】
    • -n:设置行号的样式
      • -n ln:在行号字段最左端显示
      • -n rn:在行号字段最右边显示,且不加 0
      • -n rz:在行号字段最右边显示,且加 0
    • -w:行号字段占用的位数【默认为 6 位】
bash
nl -b a -n rz -w 3 file

[!quote] 标准输入输出 当我们执行一个 shell 命令行时通常会自动打开三个标准文件【标准输入文件标准输出文件标准错误输出文件

进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中

分页查看文件

  • more 文件名 只能向一个方向滚动
    • Enter 向下滚动一行
    • Space 向下滚动一屏
    • q 退出

条件查看文件

  • head 文件名 只查看文件的前 10 行
  • tail 文件名 只查看文件的后 10 行
    • -n 参数 指定只看后几行
    • -f 不停地读取某个文件的内容并显示,动态查看日志,达到实时监视
bash
tail -n 1 /etc/passwd

查看文件类型

在 Windows 中,如果新建了一个 shiyanlou.txt 文件,Windows 会自动把它识别为文本文件。而在 Linux 中文件的类型不是根据文件后缀来判断的,只有在文件里输入内容后才会显示文件类型

  • file 文件名