Linux目录结构

UNIX 是以目录为主的,Linux 也继承了这一优良特性。 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。

FHS标准

Linux 的目录结构说复杂很复杂,说简单也很简单。

复杂在于,因为系统的正常运行是以目录结构为基础的,对于初学者来说里面大部分目录都不知道其作用,重要与否

说它简单是因为,其中大部分目录结构是规定好了的(FHS 标准),是死的,当你掌握后,你在里面的一切操作都会变得井然有序。

FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这
种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。

FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。

第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件,/usr/share 放置共享数据等等。

FHS 依据文件系统使用的频繁与否以及是否允许用户随意改动(注意,不是不能,学习过程中,不要怕这些),将目录定义为四种交互作用的形态,如下表所示:

  可分享的 不可分享的
不可变的

/usr(软件放置处)

/opt(第三方软件)

/etc(配置文件)

/boot(开机及内核文件)

可变动的

/var/mail(用户邮件信箱)

/var/news(新闻组)

/var/run(程序相关)

/var/lock(文件锁相关)

目录路径

路径

基础命令

# 切换目录
cd path # 切换到path路径下
# ..表示上一级目录
# - 表示上一次所在的目录
# ~表示当前用户的home目录 # 获取当前绝对路径
pwd # 获取当前目录下的文件
ls
# 获取当前目录下的文件的详细信息
ls -l

  

绝对路径与相对路径

关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点

相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点

相对路径

usr/local/bin (这里假设你当前目录为根目录)。你可能注意到,我们表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);如果是当前目录的上一级目录,则需要使用 .. ,比如你当前目录为 home 目录,根目录就应该表示为 ../../ ,表示上一级目录( home 目录)的上一级目录( / 目录)。

Linux文件的基本操作

文件查找

find 路径 -type f -name "文件名"
type: f文件 d文件夹
name: 文件名,可以使用通配符号*

新建

新建空白文件

#使用 touch 命令创建空白文件,关于 touch 命令,其主要作用是来更改已有文件的时间戳的(比如,最近访问
#时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白
#文件(不会覆盖已有同名文件),当然你也可以同时指定该文件的时间戳 创建名为 test 的空白文件,因为在其它目录没有权限,所以需要先 cd ~ 切换回用户的 家 目录:
$ cd ~
$ touch test

新建目录

# 使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
创建名为“ mydir ”的空目录:
$ mkdir mydir # 使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):
$ mkdir -p father/son/grandson
后面的目录路径,以绝对路径的方式表示也是可以的。

复制

复制文件

# 使用 cp(copy)命令复制一个文件到指定目录。
# 将之前创建的“ test ”文件复制到 家 目录中:
$ cp test ~

当目标目录存在同名文件时,linux会进行提示,如果想要取消提示

$ \cp test ~

实际上cp执行的是cp -i ,cp时候为 vcp -i取的别名,通过alias命令可以查看所有的别名

而\就是取消了别名,

复制目录

# 要成功复制目录需要加上 -r 或者 -R 参数,表示递归复制
$ cp -r father ~

删除

删除文件

# 使用 rm(remove files or directories)命令删除一个文件:
$ rm test # 想要删除一些为只读权限的文件,直接使用 rm 删除会显示一个提示
# 如果想忽略这提示,直接删除文件,可以使用 -f 参数强制删除:
$ rm -f test

删除目录

# 跟复制目录一样,要删除一个目录,也需要加上 -r 或 -R 参数:
$ rm -r family

移动文件与文件重命名

移动文件

# 使用 mv(move or rename files)命令移动文件(剪切)。将文件“ file1 ”移动到 Documents 目录:
$ mkdir Documents
$ mv file1 Documents

重命名

# 将文件“ file1 ”重命名为“ myfile ”
$ mv file1 myfile

批量重命名

# rename + perl 正则表达式
# 使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt # 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename 's/\.txt/\.c/' *.txt # 批量将这 5 个文件,文件名改为大写:
$ rename 'y/a-z/A-Z/' *.c

查看文件

使用 cat,tac 和 nl 命令查看文件

前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。

标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认
对应终端的键盘、标准输出文件(stdout)和标准错误输出文件(stderr),后两个文件都对应被重定向到终端
的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出
文件,而将错误信息送到标准错误文件中。

查看文件

$ cat 文件名

可以加上 -n 参数显示行号:

$ cat -n 文件名

nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令。

这里简单列举它的常用的几个参数:

-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)

使用 more 和 less 命令分页查看文件

使用 more 命令打开 passwd 文件:

$ more passwd

打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出。

less 为基于 more 和 vi (一个强大的编辑器,我们有单独的课程来让你学习)开发,功能更强大。less 的使用基本和 more 一致,

使用 head 和 tail 命令查看文件

它们一个是只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。

$ tail /etc/passwd

# 甚至更直接的只看一行, 加上 -n 参数,后面紧跟行数:
$ tail -n 1 /etc/passwd
# 关于 tail 命令,不得不提的还有它一个很牛的参数 -f,这个参数可以实现不停地读取某个文件的内容并显示。
这可以让我们动态查看日志,达到实时监视的目的。

查看文件类型

在 Linux 中文件的类型不是根据文件后缀来判断的,我们通常使用 file 命令查看文件的类型:

$ file /bin/ls

编辑文件

vi编辑器

vi 文件名 # 进入编辑页

Vi工作有三种模式:命令模式、文本输入模式和末行模式。

用Vi打开一个文件后,处于命令模式。

1)光标移动
  a、字符级
    左(h)  下(j)  上(k)  右(l)
  b、单词级
    w word移动到下个单词首字母
    b before上个单词首字母
    e end下个单词结尾
  c、行级
    0 行首
    $ 行尾
  d、段落级{ 上 } 下(没必要记忆)
  e、屏幕级 H屏首  L屏尾(没必要记忆)
  f、文档级
    G 文档尾部
    nG 文档第n行
    gg 文档第一行
    crtl+f <--> pagedown向下翻页
    crtl+b <--> pageup向上翻页
    n+enter 向下移动n行
2)内容删除
    dd  //删除当前行
    ndd  //自当前行向下删除n行
    x  //删除当前字符
    cw  //删除光标所在字母后面的字符
3)内容复制
    yy  //复制光标当前行
    nyy  //自当前行复制n行
    p  //对(删除)复制的内容进行粘贴
4)相关快捷操作
    u  //撤销
    .  //重复上次操作

插入模式

由命令模式按i进入插入模式,按esc退出.

画面的左下方出现【--INSERT--或--插入--】的字样,可以做文字数据输入。

末行模式

由命令模式按:进入末行模式,两次esc或删除全部内容退出

:q    //quit退出vi编辑器
:w   //write保存修改的内容
:wq  //保存并退出
:q!  //强制退出,当对文本内容作了修改而不想要保存时
:w!  //强制保存,当没有文本的写权限时
:set number  或  :set nu  //显示行号
:set nonumber  或  :set nonu  //取消显示行号 :/内容/  或  /内容  //查找指定内容  //n将光标移动到下一个目标  //N上一个
:n  //跳转到第n行
:s/targetContent/newContent  //替换当前行第一个targetContent为newContent
:s/targetContent/newContent/g  //整行相应内容替换
:%s/targetContent/newContent <==> :1,$s/word1/word2/g //整个文本相应内容替换
:n1,n2s/word1/word2/gc      //:100,200s/word1/word2/g 把100行到200行之间的word1替换为word2,并提示是否替换 c->confirm

可视化模式(VISUAL BLOCK)

ctrl+v进入可视化模式

上下左右选中,d删除

压缩文件

创建一个压缩包

tar  zcf  /tmp/etc.tar.gz  /etc
# tar zcf 文件路径及文件名 打包文件 tar.gz表示使用tar命令,gzip进行压缩 z=== 通过gzip软件进行压缩
c=== create 创建
f=== file 指定压缩包

查看压缩包内容

tar tf  压缩包路径及名字
t === list 显示压缩包内容

解压

tar xf 压缩文件路径及名字
# 解压到指定位置
tar xf 压缩文件路径及名字 -C 目标路径

三剑客

老三grep

擅长筛选

grep -e内容 文件
# 列出有指定内容的行内容
grep -v内容 文件
# 列出没有指定内容的行内容

老二sed

擅长取行

sed '行数p' 文件
# 输出指定行数,但是他默认输出文件全部内容,指定行数会输出两次
# 可以设施参数-n来取消默认输出 sed '行数,行数p' 文件
# 输出多行 sed -i '表达式' 文件
# 替换文件中的内容,表达式格式's#旧内容#新内容#g'

特殊符号

*    # 通配符
.. # 上级目录
. # 当前目录,一般移动文件用的多
| # 管道符号把 .前一个命令的结果,通过管道传递给后面的命令,传递的是文件名
|xargs # 管道符号,把前一个命令的结果,通过管道传递给后面的命令,传递的是普通的文本,文字,字符串
> # 重定向符号,将内容写进文件
>> # 重定向符号,将内容追加进文件

  

Linux目录结构以及文件操作的更多相关文章

  1. Linux - 目录结构及文件操作

    根目录 “/”:Linux 系统中最高层的目录 这个就是根目录 用 / 表示根目录 bin 目录:存放可执行文件 bin 目录下的文件都是平常使用的命令 在 Linux 系统中,一切都是文件 sbin ...

  2. Linux目录结构及文件操作

    Linux文件目录遵循FHS标准 绝对路径:从根目录开始的路径:相对目录:从当前路径开始的路径 .表示当前目录,..表示上级目录,~表示当前用户的home目录,pwd获得当前绝对路径 新建文件 tou ...

  3. Linux 目录结构及文件基本操作

    Linux 目录结构及文件基本操作 实验介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux ...

  4. Linux 目录结构及详细操作

    目录 Linux 目录结构及详细操作 目录结构 目录结构的特点 目录结构挂载 目录结构发展 关闭selinux(了解) 重要目录说明(etc目录说明) 1.网卡配置文件 2.解析配置文件 3.主机名称 ...

  5. 实验楼学习linux第一章第四节linux目录结构及文件基本操作

    linux目录结构及文件基本操作 常用命令 切换目录 cd 当前目录 . 上一级目录 .. (.和..开头的都是隐藏文件) 查看隐藏文件 ls -a 上一级所在目录 - 当前用户home目录 ~ 获取 ...

  6. Linux目录结构及文件基础操作

    一.Linux目录结构 windows系统中主要以存储介质为主(磁盘). UNIX和Linux系统中主要是以目录为主(以树形目录结构的形式构建整个系统). 1. FHS(Filesystem Hier ...

  7. Linux目录结构与文件权限——(五)

    1.目录结构

  8. linux 目录分类与文件操作

    / 虚拟根目录 一般不会在这里存储文件 /bin 二进制目录,存放需要GNU用户级的工具 /boot 启动目录,存放启动文件 /dev 设备目录,linux在这里创建设备节点 /etc 系统配置文件目 ...

  9. linux目录结构及文件权限

    安装banner用到的指令: 第一步: sudo apt-get update 第二步: sudo apt-get install sysvbanner 成功了 创建新用户指令: sudo addus ...

随机推荐

  1. JAVA-集合类型List(ArrayList、LinkedList)常用操作例子(基础必备)

    package com.net.xinfang.reflect; import java.util.ArrayList; import java.util.Arrays; import java.ut ...

  2. 【自适应波束形成】MVDR(Minimum Variance Distortionless Response )笔记

    参考: https://blog.csdn.net/qq_40981790/article/details/80143524 1. MVDR简介(Minimum Variance Distortion ...

  3. 在 CentOS6 上安装 Zabbix3.0 Agent 并开启客户端自动注册

    #!/bin/bash # # .配置yum源 # cat /etc/redhat-release |grep -i centos |grep '6.[[:digit:]]' &>/de ...

  4. 使用wget命令下载JDK失败(文件特别小)

    问题RT: 我们在网页上下载的时候要点一下 “Accept License Agreement ” ,使用wget下载的时候也需要提交这个 accept,方法如下: wget --no-check-c ...

  5. [Android] Android Butterknife 8.8.1 在 Activity 和 Fragment 、 Adapter 中的使用

    ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeW ...

  6. [Android] Android RecycleView和ListView 自定义Adapter封装类

    在网上查看了很多对应 Android RecycleView和ListView 自定义Adapter封装类 的文章,主要存在几个问题: 一).网上代码一大抄,复制来复制去,大部分都运行不起来,或者 格 ...

  7. 最好用的js前端框架、组件、文档在线预览插件

    这里收集的都是个人认为比较好的js框架.组件 js前端ui框架 此处列举出个人认为最好的几个框架(排序即排名),现在好点的框架商用都需要付费,以下几个也不例外,但是由于组件丰富,都可以作为企业应用的完 ...

  8. 【D3D】Directx12运行报错&win10无法添加【图形工具】

    “我欢欣雀跃地打开<3D programming with Directx12>,准备接受D3D的洗礼,然后就卡在了 chapter 0 .”——Liez 100%纯小白的chapter ...

  9. 利用PHP连接数据库——实现用户登录注册功能以及管理员对用户注册的审核功能

    1.用户注册页面 页面效果: 代码如下: <!DOCTYPE html><html>    <head>        <meta charset=" ...

  10. Docker 查看容器 IP 地址

    查看Docker的底层信息. docker inspect 会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息 docker inspect NAMES # 查看容器所有状态信息: ...