完美应用Ubuntu(第4版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.2 令初学者头痛的命令行

对于工作站用户而言,命令行只不过是解决问题的一种方式而已,无论是图形界面环境还是命令行环境,哪个可以方便、快捷地解决问题就用哪种方式,不存在优劣之分。Linux命令行对于Linux系统管理员(SA)、运维(Ops)或DevOps从业人员来说非常重要,直接影响工作效率。所以,Linux初学者不要苛求自己,开发者也无须着急,只要坚持使用,掌握命令行是水到渠成的事情,下面先来了解一下Linux命令行的容器和通用格式。

Linux通用格式如下:

为了便于记忆,此处采用了一个比较奇特的翻译,以凑成COO(首席运营官)来表示Linux命令的格式,其中Command表示Linux命令,Options表示命令选项,Objects表示多操作的文件。需要注意的是,Options和Objects都是复数,表示一个命令可以具有多个参数和多个操作对象。

如下面的命令:

其中,Command是ls,Options有两个参数——l和F,分别表示长格式和根据文件类型显示不同颜色,Objects的操作对象是根目录“/”。

其中,Command是tar,Options有3个参数——J、x和f,分别表示解压xz格式tar包,x表示解压解包,f表示所操作的文件名称,后面只能接文件名,Objects操作对象是内核源代码linux-4.2.tar.xz。

使用命令行要特别注意当前用户的权限,安装系统后登录Ubuntu的用户都是普通用户,在自己的家目录,就是/home目录下和用户名同名的目录,具有完全的权限。其他地方主要是超级用户root的地盘,所以权限受限,上述命令在自己的家目录之外操作就需要sudo命令。sudo命令的基本功能就是临时把你变成超级用户,默认是5分钟,在此时具有修改系统文件的权限。在后面的章节中会有很多地方用到sudo命令,要临时变身成超级用户,只需要在执行的命令前添加sudo,执行后会提示输入当前用户密码,通过身份验证后就变成了5分钟超级用户,这样做是为了安全,因为sudo命令在赋予你临时超级用户身份的同时也会记录下你的身份,这样既方便了普通用户的操作,又减少了超级用户密码的使用。

直接复制报错,提示没有权限将src目录复制到根目录,添加sudo命令变身为5分钟超级用户,即可顺利完成上述操作:

将当前目录的src目录复制到根目录,由于当前用户对根目录没有权限,所以使用sudo命令。此外,在图形界面环境下,使用sudo需要在弹出的对话框中输入密码,功能和sudo完全一样。

掌握了Linux的通用格式后,就可以大胆地模仿使用了。要运行Linux命令行,可以先使用快捷键Ctrl+Alt+1~6切换到Linux的终端模式,或使用快捷键Ctrl+Alt+T启动虚拟终端。在终端模式下需要先用自己的用户名和密码登录后才可以运行命令,如果要返回图形界面,则使用快捷键Ctrl+Alt+7来切换,使用命令行表示安装及配置既简洁又准确,而虚拟终端则是Ubuntu的桌面环境通过软件模拟出来的,故称为虚拟终端,由于是在图形界面操作,故无须登录。本书后续章节的操作将以命令行为主,并辅以图形界面帮助大家使用命令行,通常是使用虚拟终端,边学边用方能扎扎实实地掌握。此外,多数命令行都会有相关注释以便于大家理解和操作。

掌握了Linux命令的通用格式,还要熟悉Linux文件系统的权限。Linux的权限沿用了UNIX的UGO权限,系统从文件出发,默认把用户分为文件属主、同组用户和其他用户3类,其中其他用户的权限最大,其实就是指非文件属主和同组用户之外的所有用户。系统中的任何一个文件,都默认被赋予了一定的访问权限,如读、写和执行的权限,这为系统提供了最为基本的安全机制。

1)读(r)权限

如果文件具有读权限,则对应用户可以读取文件,如获取文件内容及复制文件等,但不能修改。如果目录具有读权限,则表示允许用户进入某个目录,并可以列出目录下的文件,所以,目录至少应被赋予读权限,否则无法访问。

2)写(w)权限

如果文件具有写权限,则相应的用户可以读、写文件,并能获取文件内容,以及复制、修改、移动和删除文件等。对于目录而言,如果允许用户创建新文件和删除文件,则必须赋予用户写目录的访问权限。

3)执行(x)权限

如果文件具有执行许可,则相应的用户可以运行文件(如程序文件)。对于目录而言,如果允许用户访问其中的任何子目录,则必须赋予用户“执行”目录的访问权限。

4.2.1 身份权限管理及开关机

前面已经介绍了文件权限,因为用户身份和文件权限密切相关,故登录系统后第一件事就是获得必要的信息,包括用户身份、用户切换和临时提权等。

1)获取用户身份命令

Linux有两种用户身份,一种是root身份,这是系统管理员在系统中具有权限最高的身份;另一种是更为常见的普通用户,只对自己的家目录具有所有权限。所以,第一个任务就是要搞清自己的身份,可以运行如下命令:

whoami命令可以获得当前用户名称,如返回结果是henry,说明当期用户是henry用户,并对/home/henry目录具有所有权限,至于用户身份,看命令行提示符就知道了,提示符是$,则说明当前用户为普通用户。

2)su命令

su命令用来切换用户身份,如要从henry用户身份切换为root用户,即提升用户权限,只需要运行如下命令:

切换用户身份后,提示符将由普通用户的“$”变为超级用户的“#”,命令中的“-”表示套用所切换用户的Shell环境。不仅如此,还可以通过su命令将自己变身为系统中的任意用户。

3)sudo命令

如果只是想临时获得超级用户权限来完成某一操作,即临时提权,只需要运行sudo命令即可:

需要注意的是,命令行模式将会提示输入当前用户口令,如果是在图形界面中,需要超级用户权限时,将会弹出密码对话框,输入当前用户的密码后,即可临时获得超级用户权限。

4)重启系统命令

通过下述命令重启计算机:

5)关机命令

运行如下命令关闭计算机:

4.2.2 复制文件和目录

前面介绍过通过文件管理器Files管理文件,下面介绍在命令行管理文件的方法。

1)复制文件

在Files中从一个位置复制文件,可直接拖动或使用右键菜单选择复制,然后打开目标文件夹进行粘贴即可复制,在命令行中复制文件或目录可以使用cp命令:

2)复制目录

首先要确定源目录是自己的家目录,然后复制当前目录下的隐藏文件bashrc到src目录下。

将工作目录切换到etc目录,然后复制profile文件到自己的家目录下。

如果要复制整个目录,则需要添加一个r参数,这样就可以将目录及目录下的所有文件复制到目标位置,具体操作如下:

只需要掌握一个命令和一个参数就可以在命令行中自由复制文件或文件夹。

4.2.3 删除文件和目录

1)删除文件

在图形界面环境中删除一个文件极为简单,直接将欲删除的文件拖到回收站即可。在命令行中删除文件需要使用rm命令:

这样就完成了文件的删除。需要提醒大家的是,对于Ext文件系统来说,删除的文件极难恢复,所以,删除前一定要慎重。

2)删除目录

删除目录和复制命令cp类似,需要添加r参数,这样就可以将目录及该目录中的所有文件全部删除,命令如下:

还有一个比较鸡肋的命令就是rmdir,要使用该命令删除目录,首先需要将该目录下的所有文件删除才能成功。

4.2.4 创建文件和目录

在命令行中创建一个文件可以使用touch命令,不过所创建的只是一个空文件,命令如下:

如果要创建一个有内容的文本文件,可以使用如下命令:

创建目录可以使用mkdir命令:

使用上述命令将一次创建两个目录——src和dest。

4.2.5 移动文件和目录

使用mv命令可以移动文件和目录,相当于在Files中将一个文件或文件夹剪切到另一个目录下,命令如下:

将文本文件hello移动到src目录下,命令如下:

再将src目录移动到dest目录下。

4.2.6 浏览文本文件

要在命令行中浏览ASCII文件,如源代码、Shell脚本等,可以使用cat命令:

浏览隐藏文件README。