本文按按顺序介绍以下命令,基于官方给的help,可放心食用:
命令 | 英文全称 | 作用 |
---|---|---|
cd | change directory | 切换工作路径 |
ls | list files | 列出目录及文件名 |
pwd | print work directory | 显示目前的目录 |
mkdir | make directory | 创建一个新的目录 |
wc | word count | 计算字数、字节数、行数等 |
stat | status | 显示文件或文件系统的状态 |
一、写在前面
在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
二、预备知识
2.1 Linux文件类型介绍
上图总结了以下知识点:
- Linux系统下文件的分类
- 各类文件的属性表示符
- 各类文件名称的颜色表示
举例:可以用以下命令查找目录下某种类型的文件,参数就是以上给出的缩写
find -type d
2.1.1 普通文件 -regular file
最常见的文件类型,包括:
- 纯文本文件(ASCII)
- 二进制文件(binary)
- 数据格式的文件(data)
- 各种压缩文件
2.1.2 目录文件 -directory
就是常见的目录,这个没什么好说的
2.1.3 字符设备文件 -character
即串行端口的接口设备,例如键盘、鼠标等等外设相关的文件。
2.1.4 数据接口(套接字)文件 -sockets
这类文件通常用在网络数据连接。我们可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。
通常在/var/run目录中看到这种文件类型。
2.1.5 符号链接文件 -link
类似windows中的快捷方式
2.1.6 块设备文件 -block
存储数据以供系统访问的接口设备,简单而言就是硬盘相关的文件
2.1.7 命名管道文件 -pipe,fifo
管道分为无名管道(pipe)和有名管道(fifo)两种管道,管道文件是建立在内存之上可以同时被两个进程访问的文件。
有名管道可以在任意两个进程之间通讯,而无名管道只能在父子进程之间通迅。
2.2 从根目录开始的文件结构
了解Linux的文件目录,首先需要明白FHS(Filesystem Hierarchy Standard)标准,也就是文件系统层次结构标准。
FHS:多数Linux版本采用这种文件组织形式,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。 FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。 第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。
在Linux中一切文件都是从根目录/开始存储
下表是常见的文件目录以及存储的内容:
目录名称 | 应放置的文件内容 | 备注 |
---|---|---|
/boot | 开机所需文件(内核,开机菜单及所需配置文件等) | Binaries (二进制文件) 的缩写 |
/dev | Linux的外部设备与接口文件 | Device(设备) 的缩写,访问该目录下某个文件,相当于访问某个设备 |
/etc | 系统特有的可编辑配置文件 | Etcetera(等等) 的缩写 |
/bin | 最基本的命令(可执行文件),也就是文件系统还未挂载时也能使用的命令 | Binaries (二进制文件) |
/lib | 系统最基本的动态连接共享库,也就是系统使用的函数库的目录 | Library(库) 的缩写 |
/usr | 用户的很多应用程序和文件 | unix shared resources(共享资源) 的缩写 |
/var | 内容不断变化的文件 | variable(变量) 的缩写,如日志、电子邮件 |
2.3 文件的时间属性
对于Linux的文件有三种时间
- 更改时间(mtime):内容修改时间
- 更改权限时间(ctime):修改权限与属性时间
- 读取时间:访问文件的时间
三、命令介绍
1cd [目录]
1.1语法与参数选择
常用命令:
命令 | 作用 |
---|---|
cd - | 返回上一次目录 |
cd ~ | 切换到家目录或 |
cd … | 切换到上一级目录 |
1.2操作实例
eg1:进入当前目录下的子目录
znj@znj-virtual-machine:~/桌面$ cd desktop
znj@znj-virtual-machine:~/桌面/desktop$
eg2:从/bin目录切换至桌面上的my文件夹
znj@znj-virtual-machine:/bin$ cd ~/桌面/desktop/my
注意:少了~目录是无效的!
2.ls [选项]… [文件]…
2.1语法与参数选择
常用命令:
命令 | 作用 |
---|---|
-a | 不隐藏任何以 . 开始的项目(隐藏文件) |
-d | 当遇到目录时列出目录本身而非目录内的文件 |
-h | 以易于阅读的格式输出文件大小(例如 1K 234M 2G等) |
-l | 使用较长格式列出信息 |
注意:不带任何参数运行 ls 命令将列出当前工作目录的内容
2.2操作实例
eg1:列出桌面下的所有文件
注意:.是指当前目录;…是上一级目录即父目录
eg2:列出/etc目录下以t开头的文件(不包括目录)
eg3:查看/etc目录的权限与属性,并以k/m/g为单位显示容量
3.pwd [-LP]
3.1语法与参数选择
格式:
pwd 【选项】
参数选择:
参数 | 英文全称 | 作用 |
---|---|---|
-P | physical | 打印 $PWD 变量的值,如果它包含了当前的工作目录 |
-L | logical | 设定权限 |
因为此命令过于简单,这里对操作实例不再赘述,下面给出使用时需要注意的点
3.2注意点
- 默认参数缺省时,打印的是逻辑目录
- pwd始终以绝对路径的方式打印工作目录,即从根目录(/)开始到当前目录的完整路径。
- 一般来说物理目录和逻辑目录是一样的,只有特殊情况如符号链接时会有所不同。
以下引用一段对物理和逻辑目录进行解释:
那么什么又是逻辑工作目录和物理工作目录呢?这其实也很简单,只要你知道Linux的符号链接(Symbolic link)的概念。简单地说,符号链接等同于Windows操作系统上的快捷方式。
假设我有两个目录B和C,B符号链接到C且C是常规目录。那么当我对目录B进行操作时,实际是对目录C进行操作。比如,我在B中创建一个新文件,实际上是在C中创建了这个文件。当我处于目录B中时,那么B就是逻辑工作目录而C就是物理工作目录。
现在假设我又有另一个目录A,它也是一个符号链接且链接到B。那么当我处于A中时,逻辑工作目录就是A而物理工作目录还是C。注意此时物理工作目录是C而不是B,因为B也是一个符号链接。即当我对A进行操作时,实际是对B进行操作;而对B的操作,实际又是对C的操作。
4.mkdir [选项]… 目录…
4.1语法与参数选择
参数选择:
参数 | 英文全称 | 作用 |
---|---|---|
-p | parents | 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理 |
-m | mode | 设置权限模式(类似chmod) |
4.2操作实例
eg1:在desktop目录下递归创建目录my/dir
eg2:在my目录下创建目录dir,其权限为可读写不可执行
5. wc [选项]… [文件]…
5.1语法与参数选择
参数 | 英文全称 | 作用 |
---|---|---|
-c | bytes | 输出字节数统计 |
-m | chars | 输出字符数统计 |
-l | lines | 输出行数统计 |
-L | max-line-length | 显示最长行的长度 |
-w | words | 显示单词计数 |
5.2操作实例
6.stat [选项]… 文件…
6.1语法与参数选择
参数 | 英文全称 | 作用 |
---|---|---|
-L | dereference | 跟随链接 |
-f | file-system | 显示文件系统状态而非文件状态 |