Linux 命令行完全指南:从入门到精通

1. Linux命令行的作用与意义

众所周知,Linux是一个主要通过命令行来进行管理的操作系统,即通过键盘输入指令来管理系统的相关操作,包括但不限于编辑文件、启动停止服务等。这与初学者曾经熟悉的Windows系统使用鼠标点击这类可视化管理大不相同。

使用鼠标进行可视化管理的优势是简单、容易上手,缺点是不能方便快速、批量、自动化地管理系统,而且感觉系统也很臃肿,这个时候Linux系统的命令行管理优势就凸显出来了。使用Linux命令行进行管理,不但可以批量、自动化管理,还可以实现智能化、可视化管理,当然,后者需要开发人员配合开发管理界面来完成,但无论如何,Linux系统的优势基因还是快速、批量、自动化、智能化管理系统及处理业务。

2. Linux命令行介绍

安装Linux系统时,无论是使用文本模式(命令行)安装,还是使用图形模式安装,最终管理系统的任务都会落到命令行上。

大多数互联网企业在安装系统时甚至不会安装图形管理软件包,而是直接使用文本模式安装,因此登录后直接面对的就是命令行的界面。

3. Linux命令行的开启及退出

在开启主机时,Linux系统会经过一系列的引导和程序加载,最终将会出现登录前的提示界面(如图4-1所示)。

图1-1 CentOS Linux系统登录界面

在图1-1中,将光标定位到login: 字符串后面,输入超级用户管理员root后,按回车键,弹出密码提示框后再输入密码,注意密码是不显示的。输入正确密码之后,再按回车键就可以登录到Linux系统中了。

4. Linux命令行提示符介绍

Linux命令行结尾的提示符有#和$两种不同的符号,示例代码如下所示:

复制
[root@localhost ~]# #这是超级管理员root用户对应的命令行 [opsbugs@localhost ~]$ #这是普通用户opsbugs对应的命令行1.2.3.4.

下面列出Linux系统的命令提示符的详细说明,如下表所示:

提示符

说明

[]

这是提示符的分隔符号,没有特殊含义;

root

显示的是当前的登录用户,现在使用的是 root 用户登录;

@

分隔符号,没有特殊含义;

localhost

当前系统的简写主机名(完整主机名是 localhost.localdomain);

~

该符号所在位置显示用户当前所在的目录,此例中用户当前所在的目录是家目录;

#

命令提示符,Linux用这个符号标识登录的用户权限等级,超级用户是#,普通用户是$;

家目录是什么?

Linux系统是纯字符界面,用户登录后,要有一个初始登录位置。这初始登录位置就称为用户的家。

超级用户的家目录: /root/普通用户的家目录(默认): /home/用户名/用户在自己的家目录中拥有完整权限。

在命令行执行exit或logout命令可退出命令行,当然也可以使用快捷键Ctrl+d退出命令行,退出命令行之后,如果需要再次登录,则还是需要输入用户名和密码(除非使用SSH客户端已将用户名和密码保存起来)。

Linux命令提示符由PS1环境变量控制,可使用命令echo $变量名输出变量的值,如下所示:

复制
[root@localhost ~]# echo $PS1 #注意PSl是大写的 [\u@\h \W]\$1.2.3.

环境变量PS1中的值[\u@\h \W]\$,可以通过全局配置文件/etc/bashrc或/etc/profile进行按需配置和调整。

(1) 临时修改,可修改PSl变量对应的值,来让命令行显示全路径:

复制
[root@localhost ~]# PSl=[\u@\h \w]\$ #将默认的\W改为\w (小写w),此命令仅临时生效。1.2.

(2) 上面的方法只是临时性的,若要让PSl变量永久生效,则可修改配置文件。编辑/etc/bashrc文件,找到符合下面内容的一行(大约在第36行),将内容中的大写W改为小写W, 即可让变量永久生效。也就是将:

复制
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " #改为下面内容,保存并退出/etc/bashrc文件。 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ " #最后,注销并重新登录系统或直接执行 source /etc/bashrc 使得修改的信息生效,source也可以使用“.”代替。 [root@localhost ~]# source /etc/bashrc1.2.3.4.5.

下面解释下PS1环境变中的值所代表的含义,如下表所示:

PS1变量

含义

\d

代表日期,格式为 weekday month date,例如:"Mon Aug 1";

\H

完整的主机名称;

\h

仅取主机的第一个名字;

\t

显示时间为24小时格式,如: HH:MM:SS;

\T

显示时间为12小时格式;

\A

显示时间为24小时格式: HH:MM;

\u

当前用户的账号名称;

\v

BASH的版本信息;

\w

显示完整的路径,其中家目录会以〜代替,这是本例的主角;

\W

利用basename取得工作目录名称,所以只会列出最后一个目录;

\#

执行的第几个命令;

\$

提示字符,如果是root,则提示符为#,如果是普通用户,则为$;

5. Linux命令行常用快捷方式

快捷键

功能说明

最有用快捷键

tab

命令或路径等的补全键,Linux最有用的快捷键;

移动光标快捷键

Ctrl+a

光标回到命令行首;

Ctrl+e

光标回到命令行尾;

Ctrl+f

光标向右移动一个字符(相当于方向键右键);

Ctrl+b

光标向左移动一个字符(相当于方向键左键);

剪切、粘贴、清除快捷键

Ctrl+Insert

复制命令行内容;

Shift+Insert

粘贴命令行内容;

Ctrl+k

剪切(删除)光标处到行尾的字符;

Ctrl+u

剪切(删除)光标处到行首的字符;

Ctrl+w

剪切(删除)光标前的一个单词;

Ctrl+y

粘贴Ctrl+u/Ctrl+k/Ctrl+w删除的文本;

Ctrl+c

中断终端正在执行的任务或者删除整行;

Ctrl+h

删除光标所在处的前一个字符(相当于退格键);

Ctrl+d

删除光标后的一个字符(delete);

重复执行命令快捷键

Ctrl+d

退出当前Shell命令行(命令行无字符),退出Shell命令之后,若在执行则关闭连接窗口;

Ctrl+r

搜索命令行使用过的历史命令记录;

Ctrl+g

从执行Ctrl+r的搜索历史命令模式中退出;

控制快捷键

Ctrl+l

清除屏幕的所有内容,并在屏幕的最上面开始一个新行,等同于clear命令;

Ctrl+s

锁定终端,使之无法输入内容;

Ctrl+q

解锁执行Ctrl+s的锁定状态;

Ctrl+z

暂停执行在终端运行的任务;

!号开头的快捷命令

!!

执行上一条命令;

!pw

执行最近以pw(或其他)开头的命令;

!pw:p

仅打印最近以pw(或其他)开头的命令,但不执行;

!num

执行历史命令列表的第num(数字)条命令;

!$

上一条命令的最后一个参数;

ESC相关

Esc+.(点)

获取上一条命令最后的部分(空格分隔);

Esc+b

移动到当前单词的开头;

Esc+f

移动到当前单词的结尾;

Esc+t

颠倒光标所在处及其相邻单词的位置;

6. 命令的基本格式

在操作Linux命令之前,先看下命令操作语法格式。在Linux系统运维工作中,常用的操作大多都是在命令行下实现的,Linux系统命令操作语法的格式具体如下:

复制
[root@localhost ~]# 命令 [选项] [参数]1.

选项

说明

选项

是用于调整命令功能的,[]代表可选项,也就是有些命令可以不写选项或参数,也能执行;

参数

是命令的操作对象,如果省略参数,是因为有默认参数

注意: 命令、参数选项、文件或路径两两之间至少要有一个空格。

THE END