文章目录
  1. 1. Linux文件系统以及基本操作
    1. 1.1. Linux目录结构
    2. 1.2. Linux文件的基本操作
    3. 1.3. 额外娱乐命令

1924年9月8日,吴佩孚

最早登上《时代周刊》封面人物的中国人,底部文字:Biggest man in China

Linux文件系统以及基本操作

2016-4-18 周一

雨转晴
在线学习:实验楼

Linux目录结构

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

  • FHS 标准

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

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

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

目录结构

可以执行tree /体验一下linux目录结构;如果提示”command not found”就先安装 apt-get   update、apt-get    install    tree

FHS 是根据以往无数 Linux 用户和开发者的经验总结出来的,并且会维持更新,FHS 依据文件系统使用的频繁与否以及是否允许用户随意改动(注意,不是不能,学习过程中,不要怕这些),将目录定义为四种交互作用的形态,如下表所示:

四种交互作用

  • 目录路径

如果你想进入某个具体的目录或者想获得某个目录的文件(目录本身也是文件)那就得用路径来找到了。

在 Linux 里面使用.表示当前目录,.. 表示上一级目录(注意,还记得我们上一节介绍过的,以 .开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls   -a 命令查看隐藏文件), - 表示上一次所在目录, 通常表示当前用户的”home”目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。

  1. 绝对路径

关于绝对路径,简单地说就是以根"/"目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。

  1. 相对路径

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


Linux文件的基本操作

  • 新建
  1. touch创建空白文件

  2. mkdir创建一个空目录

    使用-p参数,同时创建父母

1
$ mkdir -p    father/son/grandson
  • 删除
  1. rm test

    删除目录需要添加参数-r-R

  1. 强制删除 rm   -f   test
  1. 批量重命名:rename

    perl 正则表达式来作为参数.

实例:

1
2
3
4
5
6
7
8
9
10
11
12
# 使用通配符批量建5个文件
root@ubuntu:~/test# touch file{a..d}.txt
root@ubuntu:~/test# ls
filea.txt fileb.txt filec.txt filed.txt
# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件
root@ubuntu:~/test# rename 's/\.txt/\.c/' *.txt
root@ubuntu:~/test# ls
filea.c fileb.c filec.c filed.c
# 批量将这 5 个文件,文件名改为大写
root@ubuntu:~/test# rename 'y/a-z/A-Z/' *.c
root@ubuntu:~/test# ls
FILEA.C FILEB.C FILEC.C FILED.C
  1. 查看文件

使用cat,tacnl命令查看文件


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

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

例如:cat   -n 参数显示行号:

1
2
3
4
5
6
7
root@ubuntu:~/test# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin

nl命令:添加行号并打印

实例:

1
2
3
4
5
6
7
8
root@ubuntu:~/test# nl /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

nl常用参数

1
2
3
4
5
6
7
8
9
-b  :  指定添加行号的方式,主要有两种:
-b a :表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t :只列出非空行的编号并列出(默认这种方式)

-n : 设置行号样式,主要有3:
-n ln :在行号字端最左端显示
-n rn :在行号字端最右边显示,且不加 0
-n rz :在行号字段最右边显示,且不加 0
-w : 行号字段占用的位数(默认为6位)

各个参数区别:

实验文档nl.txt

1
2
3
4
root@ubuntu:~/test# cat nl.txt 
11111111111111

222222222222222

nl -b a file列出所有行号(包括空行)

1
2
3
4
root@ubuntu:~/test# nl -b a nl.txt 
1 11111111111111
2
3 222222222222222

nl只列出非空行的编号

1
2
3
4
root@ubuntu:~/test# nl nl.txt      
1 11111111111111

2 222222222222222

nl -n ln file行号在左端显示

1
2
3
4
root@ubuntu:~/test# nl -n ln nl.txt 
1 11111111111111

2 222222222222222

nl -n rn file行号右边输出(开头带0)

1
2
3
4
root@ubuntu:~/test# nl -n rn nl.txt
1 11111111111111

2 222222222222222

nl -n rz file行号右边输出(开头带0)

1
2
3
4
root@ubuntu:~/test# nl -n rz nl.txt      
000001 11111111111111

000002 222222222222222

nl -w 2 -n rz file设置行号位数

1
2
3
4
5
root@ubuntu:~/test# nl -w 2 -n rz nl.txt 
01 11111111111111

02 222222222222222
root@ubuntu:~/test#


  1. 分页查看文件
  • 使用moreless命令分页查看文件

more和less就是天生用来”阅读”一个文件的内容的。

1
root@ubuntu:~/test# more  /etc/passwd

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

  • 使用headtail命令查看文件

  • tail 显示文件末尾内容

    1
    tail  -n  5  file

将会输出文件末尾5行内容

  • tail -f循环读取文件

    动态查看日志起到实时监视的作用

1
2
3
4
5
6
7
8
root@ubuntu:~/test# ping 192.168.138.100 > test.txt &
[1] 2816
root@ubuntu:~/test# tail -f test.txt
PING 192.168.138.100 (192.168.138.100) 56(84) bytes of data.
64 bytes from 192.168.138.100: icmp_seq=1 ttl=64 time=0.065 ms
64 bytes from 192.168.138.100: icmp_seq=2 ttl=64 time=0.048 ms
64 bytes from 192.168.138.100: icmp_seq=3 ttl=64 time=0.052 ms
`
  1. file命令查看文件类型
1
2
root@ubuntu:~/test# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=bd39c07194a778ccc066fc963ca152bdfaa3f971, stripped

这表示这是一个可执行文件,运行在 64 位平台,并使用了动态链接文件(共享库)。

  1. 编辑文件
1
$  vimtutor

进行学习vi


额外娱乐命令

1
$ xeyes

你可以使用如下命令将它放到后台运行

$ nohup xeyes &

文章目录
  1. 1. Linux文件系统以及基本操作
    1. 1.1. Linux目录结构
    2. 1.2. Linux文件的基本操作
    3. 1.3. 额外娱乐命令