基础命令
Linux 系统目录结构
树状目录结构:
以下是对这些目录的解释:
/bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc: etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib: lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt: opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc: proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
shellecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root: 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux: 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv: 该目录存放一些服务启动之后需要提取的数据。
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin: 系统用户使用的应用程序。
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src: 内核源代码默认的放置目录。
/var: var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
文件和目录
列出文件和目录
要知道系统中都有哪些文件,可以使用列表命令
ls
。
ls
常用命令选项:
选项 | 描述 |
---|---|
-a | 显示隐藏文件。 |
-d | 只列出目录(不递归列出目录内的文件)。 |
-l | 显示长列表。 |
-F | 区分文件和目录。 |
-r | 倒序显示文件和目录。 |
-t | 将按照修改时间排序,最新的文件在最前面。 |
-lh | 以人类可读的方式显示当前目录中的文件和目录大小。 |
通配符 | ? 表示任意单个字符;* 表示零个或多个字符;! 表示将不要的内容排除在外。 |
创建文件
Linux的
touch
命令用于创建一个新文件,或者更新现有文件的时间戳。这个命令在Linux系统中非常常用,因为它可以用来修改文件的访问时间和修改时间,以便在需要的时候更新它们。
touch
常用命令选项:
选项 | 描述 |
---|---|
-a | 只修改文件的访问时间。 |
-m | 只修改文件的修改时间。 |
-c | 如果文件不存在,则不创建文件。 |
-d | 指定要设置的日期和时间。 |
-t | 指定要设置的秒数。 |
复制文件
将文件和目录从文件系统的一个位置复制到另一个位置可谓是系统管理员的日常操作,
cp
命令可以完成这项任务。
cp
常用命令选项:
选项 | 描述 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。 |
-d | 复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。 |
-f | 覆盖已经存在的目标文件而不给出提示。 |
-i | 与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。 |
-p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 |
-r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 |
-l | 复制文件,只是生成链接文件。 |
链接文件
系统中维护同一个文件或多个副本,可以使用单个物理副本加多个虚拟副本(链接)的方法代替创建多个物理副本。链接时目录中指向文件真实位置的占位符。Linux 中有两种类型的文件链接,分别是:符号链接,硬链接
ln
常用命令选项:
选项 | 描述 |
---|---|
-s | 软链接(符号链接)。 |
- 符号链接(也称为软链接):是一个实实在在的文件,该文件指向内存放在虚拟目录结构中某个地方的另一个文件。
[root@localhost tmp]# ll
total 0
-rw-r--r-- 1 root root 0 May 13 08:00 test.log
# 1.创建软链接。
[root@localhost tmp]# ln -s test.log softLink
[root@localhost tmp]# ll
total 0
lrwxrwxrwx 1 root root 8 May 13 08:01 softLink -> test.log
-rw-r--r-- 1 root root 0 May 13 08:00 test.log
- 硬链接:创建的是一个独立的虚拟文件,其中包含了原始文件的信息以及位置。(要想创建硬链接,原始文件也必须事先存在。)
# 1.创建硬链接。
[root@localhost tmp]# ln test.log hardLink
[root@localhost tmp]# ll
total 0
-rw-r--r-- 2 root root 0 May 13 08:00 hardLink
lrwxrwxrwx 1 root root 8 May 13 08:01 softLink -> test.log
-rw-r--r-- 2 root root 0 May 13 08:00 test.log
软链接与硬链接区别:
- 软链接以路径的形式存在,类似于Windows操作系统中的快捷方式;硬链接以文件副本的形式存在。但不占用实际空间。
- 软链接可以跨文件系统 ,硬链接只有在同一个文件系统中才能创建。
- 软链接可以对一个不存在的文件名进行链接。
- 软链接可以对目录进行链接,而硬链接不可以。
文件重命名
在 Linux 中,重命名文件称为移动( moving )。
mv
命令可以将文件和目录移动到另一个位置或是重新命名。
mv
常用命令选项:
选项 | 描述 |
---|---|
-f | 如果目标文件已经存在,则覆盖它。 |
-n | 如果目标文件已经存在,则不覆盖它,而是将源文件放置在目标文件的旁边,并添加一个.bak后缀。 |
-p | 保留源文件的权限、所有权和时间戳等元数据。 |
-r | 递归地移动源文件或目录下的所有文件和子目录。 |
-v | 显示详细的操作信息。 |
删除文件
在 Linux 中,删除(deleting)叫作移除(removing)。用于删除文件的命令是
rm
。
rm
常用命令选项:
选项 | 描述 |
---|---|
-i | 删除前逐一询问确认。 |
-f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 |
-r | 将目录及以下之档案亦逐一删除。 |
- 注意:
-i
选项会询问你是否真的要删除该文件。**shell 没有回收站或者垃圾箱这样的东西,文件一旦被删除,就再也找不回来了!**所以使用rm
命令时,要养成总是加入 -i 选项的好习惯。
创建目录
在 Linux 中创建目录很简单,使用
mkdir
命令即可。
mkdir
常用命令选项:
选项 | 描述 |
---|---|
-p | 确保目录名称存在,不存在的就建一个。 |
删除目录
当创建好目录后,必须知道怎样删除目录。对此,可以使用
rmdir
或者rm
命令对目录进行删除。
- 默认情况下,
rmdir
只删除空目录。 - 在整个非空目录中使用
rm
命令,-r
选项可以使rm
进行递归删除,先删除其中的文件,然后再删除目录本身。 - 当需要删除多个文件和子目录的时候,询问删除会显得非常琐碎,此时需要一口气删除目录树,可以使用
rm -rf
命令。该命令能不声不响,直接删除目录及其所有内容。当然,这也是一个非常危险的命令,所以务必谨慎使用!
查看文件类型
file
命令是一个方便的小工具,能够探测文件的内部并判断文件类型。
file
常用命令选项:
选项 | 描述 |
---|---|
-b | 列出辨识结果时,不显示文件名称。 |
-c | 详细显示指令执行过程,便于排错或分析程序执行的情形。 |
-v | 显示版本信息。 |
-z | 尝试去解读压缩文件的内容。 |
查看整个文件
如果手里有一个很大的文本文件,想要查看里面内容的时候,Linux 有3个不同的命令(
cat
、more
、less
)可以完成这个任务。
cat
命令是显示文本文件中所有数据的工具:cat
常用命令选项:
选项 | 描述 |
---|---|
-n | 由 1 开始对所有输出的行数编号。 |
-b | 和 -n 相似,只不过对于空白行不编号。 |
- 对于大文件,
cat
命令多少有些烦人。使用后,文件内容会在屏幕上一闪而过。 - 而
more
命令会显示文本文件的内容,但会在每页数据之后暂停下来,它是一个分页工具,支持文本文件基本的移动。 more
常用操作命令:
选项 | 描述 |
---|---|
Enter | 向下n行,需要定义,默认为1行。 |
Ctrl+F /空格键 | 向下滚动一屏。 |
Ctrl+B | 返回上一屏。 |
= | 输出当前行的行号。 |
:f | 输出文件名和当前行的行号。 |
V | 调用vi编辑器。 |
! | 命令调用 Shell,并执行命令。 |
q | 退出 more 。 |
less
命令为more
命令的升级版本,它能够实现在文本文件中前后翻动,还有一些高级搜索功能,还可以完成整个文件的读取之前显示文件的内容。less
命令操作和more
命令基本一样,它还包括了更多的操作:
选项 | 描述 |
---|---|
-x <数字> | 将"tab"键显示为规定的数字空格。 |
/ 字符串 | 向下搜索"字符串"的功能。 |
? 字符串 | 向上搜索"字符串"的功能。 |
n | 重复前一个搜索(与 / 或 ? 有关)。 |
N | 反向重复前一个搜索(与 / 或 ? 有关)。 |
b | 向上翻一页。 |
d | 向后翻半页。 |
h | 显示帮助界面。 |
Q | 退出 less 命令。 |
u | 向前滚动半页。 |
y | 向前滚动一行。 |
空格键 | 滚动一页。 |
回车键 | 滚动一行。 |
[pagedown] | 向下翻动一页。 |
[pageup] | 向上翻动一页。 |
查看部分文件
如果数据是在一个大型文件的开头,那就只能干等着
cat
或more
载入整个文件。如果数据是在文件末尾(比如日志文件),则需要翻过成千上万行才能看到最后那部分。好在 Linux 有tail
和head
命令可以解决这两个问题。
tail
命令会显示文件最后几行。默认情况下,它会显示文件的末尾10行。tail
常用命令选项:
选项 | 描述 |
---|---|
-f | 实时循环读取。 |
-n<行数> | 显示文件的尾部 n 行内容。 |
head
命令会显示文件开头若干行。默认情况下,它会显示文件的前10行。head
常用命令选项:
选项 | 描述 |
---|---|
-n<行数> | 显示的行数。 |
- 文件开头部分通常不会改变,因此
head
命令没有tail
命令那样 -f 的选项。