Linux系统(二)
总阅读次
最早登上《时代周刊》封面人物的中国人,底部文字:Biggest man in China
Linux文件系统以及基本操作
2016-4-18 周一
雨转晴
在线学习:实验楼
Linux目录结构
UNIX 是以目录为主的,Linux 也继承了这一优良特性。 Linux 是以树形目录结构
的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。
- FHS 标准
FHS(英文:Filesystem Hierarchy Standard 中文:
文件系统层次结构标准
),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理
FHS 定义了两层规范,第一层是,
/
下面的各个目录应该要放什么文件数据,例如/etc
应该要放置设置文件,/bin
与/sbin
则应该要放置可执行文件等等。第二层则是针对
/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 命令可以获取当前所在路径(绝对路径)。
- 绝对路径
关于绝对路径,简单地说就是以根"/"
目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
- 相对路径
相对路径,也就是相对于你当前的目录的路径
,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如: usr/local/bin (这里假设你当前目录为根目录)。你可能注意到,我们表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);如果是当前目录的上一级目录,则需要使用 .. ,比如你当前目录为“home”目录,根目录就应该表示为 ../../ ,表示上一级目录(”home”目录)的上一级目录(”/“目录)。
Linux文件的基本操作
- 新建
touch创建空白文件
mkdir创建一个空目录
使用
-p
参数,同时创建父母
1 | $ mkdir -p father/son/grandson |
- 删除
- rm test
删除目录需要添加参数
-r
或-R
- 强制删除 rm -f test
- 批量重命名:
rename
perl 正则表达式来作为参数.
实例:
1 | # 使用通配符批量建5个文件 |
- 查看文件
使用cat
,tac
和nl
命令查看文件
这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac
倒序显示。
标准输入输出:当我们执行一个
shell
命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
例如:cat -n 参数显示行号:
1 | root@ubuntu:~/test# cat -n /etc/passwd |
**nl
**命令:添加行号并打印
实例:
1 | root@ubuntu:~/test# nl /etc/passwd |
nl常用参数
1 | -b : 指定添加行号的方式,主要有两种: |
各个参数区别:
实验文档nl.txt
1 | root@ubuntu:~/test# cat nl.txt |
**nl -b a file
**列出所有行号(包括空行)
1 | root@ubuntu:~/test# nl -b a nl.txt |
**nl
**只列出非空行的编号
1 | root@ubuntu:~/test# nl nl.txt |
nl -n ln file
行号在左端显示
1 | root@ubuntu:~/test# nl -n ln nl.txt |
nl -n rn file
行号右边输出(开头带0)
1 | root@ubuntu:~/test# nl -n rn nl.txt |
nl -n rz file
行号右边输出(开头带0)
1 | root@ubuntu:~/test# nl -n rz nl.txt |
nl -w 2 -n rz file
设置行号位数
1 | root@ubuntu:~/test# nl -w 2 -n rz nl.txt |
- 分页查看文件
- 使用
more
和less
命令分页查看文件
more和less就是天生用来”阅读”一个文件的内容的。
1 | root@ubuntu:~/test# more /etc/passwd |
打开后默认只显示一屏内容,终端底部显示当前阅读的进度(百分比)。可以使用Enter
键向下滚动一行,使用Space
键向下滚动一屏,按下h
显示帮助,q
退出。
使用
head
和tail
命令查看文件tail 显示文件末尾内容
1
tail -n 5 file
将会输出文件
末尾5行
内容
-
tail -f
循环读取文件动态查看日志起到实时监视的作用
1 | root@ubuntu:~/test# ping 192.168.138.100 > test.txt & |
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
1 | > 这表示这是一个可执行文件,运行在 64 位平台,并使用了动态链接文件(共享库)。 |
$ vimtutor
1 | > 进行学习`vi` |
$ xeyes
你可以使用如下命令将它放到后台运行
$ nohup xeyes &