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. 打包JAR,MANIFEST.MF格式

    MANIFEST.MF文件格式详解 1. 基本格式 属性名称+:+空格+属性值 2. 没行最多72个字符,换行继续必须以空格开头 3. 文件最后必须要有一个回车换行 4. Class-Path 当前路 ...

  2. MapReduce-WordCount

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  3. 4.Zuul-限流

    令牌桶 限流流程图: RateLimitFilter : package com.wangfajun.filter; import com.alibaba.fastjson.JSON; import ...

  4. 阿里云MongoDB存储数据

    近期上了个活动,考虑后期的运维及人力成本,还是选择了阿里云的MongoDB,不过阿里云这玩意本地测试官方没有给本地测试链接地址,只能做映射上去了测了... 选了个2核4G的,更多详细信息,可以去阿里上 ...

  5. VirtualBox安装Ubuntu14.04

    创建虚拟机 点击 新建(N) 设置虚拟机的名称,类型与版本,如下图所示: 分配虚拟机的内存大小,受PC实际内存影响,暂时设置为2G,如下图所示: 分配虚拟机的硬盘大小,默认即可,如下图所示: 分配虚拟 ...

  6. Web前端框架与移动应用开发第七章

    1.练习1:焦点图切换 html: <!doctype html><html><head> <meta charset="utf-8" / ...

  7. Contrast Ratio(Enhanced) (Level AAA)

    Contrast ratio between your text and background is at least 7:1 All of your users will benefit from ...

  8. Java方向如何准备技术面试答案(汇总版)

    本文转载自:"Java团长"公众号 1.面向对象和面向过程的区别 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linu ...

  9. Java高并发秒杀API之web层

    第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我 ...

  10. Mac 建PHP 环境 及 配置 apache 默认目录

    网上找的帮助,试一下,记录在此: 在Mac下配置php开发环境:Apache+php+MySql  https://www.imooc.com/article/15705?block_id=tuiji ...