项目3命令行操作——使用Shell命令 教学目标 通过本项目的学习,掌握Linux的Shell命令,了解Linux的文件系统,能对文件和目录进行各种管理操作,了解进程和作业管理的基本内容。 教学要求 本项目的教学要求见表31。 表31项目3教学要求 知 识 要 点 能 力 要 求 关 联 知 识 Shell基本命令 (1) 掌握Shell命令格式 (2) 掌握基本的Shell命令 Shell命令格式 浏览文件系统 (1) 掌握Linux操作系统的目录结构 (2) 掌握Linux文件系统类型、结构及路径 (3) 掌握文件及文件夹的查看方法 (4) 掌握文本内容的显示和处理方法 (5) 掌握文件查找类命令的使用方法 pwd、cd、ls、cat、more、less、head、tail、file、grep、stat、who、whoami、hostname、dmesg、whereis、locate、find等命令的基本用法 管理普通文件 (1) 掌握使用通配符的方法 (2) 掌握文件及文件夹的创建与删除方法 (3) 掌握文件及文件夹的复制与移动方法 (4) 掌握文件及文件夹的归档、打包方法 *、?、[]、mkdir、rm、cp、rm tar、gzip等命令的基本用法 管理特殊文件—设备 (1) 掌握设备文件 (2) 掌握设备挂载与卸载的方法 标准文件、fstab文件 mount命令 文件管理进阶 (1) 掌握硬链接与软链接的用法 (2) 掌握文件重定向的用法 (3) 掌握管道和过滤 ln、>、>>、|、gerp等命令的基本用法 进程和作业管理 (1) 掌握进程管理的方法 (2) 掌握作业管理的方法 kill、killall、at、crontab等命令的基本用法 自主实训 自主完成实训所列任务 各种Shell命令及用法 重点与难点 (1) Ubuntu的文件系统。 (2) 文件和目录的创建、复制、移动、删除等操作。 (3) 文件和目录的归档、打包,以及管道和过滤等命令的用法。 (4) 设备文件、进程和作业的基本管理。 项目概述 Linux操作系统的一个重要特点是提供了丰富的命令。对用户来说,如何在文本模式下实现对Linux的各种管理,是衡量用户Linux应用水平的一个重要方面。 项目设计 掌握在终端中利用Shell命令查阅系统信息、了解Linux系统文件及结构,掌握对文件和目录进行诸如查看、复制、移动、删除、压缩备份、磁盘挂载、管道、重定向以及进程和作业控制等命令,可根据需要完成各种管理操作任务。 任务3.1认识Shell 在项目1中介绍了各种启动Shell程序的方法,本项目的内容都可以通过选择“应用程序”|“系统工具”|“终端”命令来打开虚拟终端,这时就启动了Shell。在终端下输入的命令就是靠Shell来解释执行完成的。一般的Linux系统不仅有图形界面,还有文本模式界面,在没有安装图形桌面的Linux系统中,开机就自动进入文本模式界面,这时就启动了Shell,在该界面下可以输入命令与系统进行交互。 3.1.1认识Shell命令 1. Shell命令的一般格式 在前面的项目中看到的Linux命令,其实就是Shell命令,其一般形式如下。 command[-options][parameter1 parameter2...] 说明: (1) command为命令的名称,例如,查看当前文件夹下文件或文件夹的命令是ls。 (2) [options]是可选项,是对命令的特别定义,以连字符()开始,多个选项可以用一个连字符()连起来,如ls l a与ls la相同。 (3) [parameter1 parameter2...]为跟在可选项后面的参数,或者是command的参数。参数可以是文件,也可以是目录,可以是0个也可以是多个,有些命令必须使用多个操作参数,如cp(copy的缩写)命令必须指定源操作对象和目标对象。 (4) command、options、parameter1等项目之间以空格隔开,不论几个空格,Shell都视为一个。 2. 输入命令时键盘操作的一般规律 (1) 命令、文件名、选项、参数等都要区分大小写,如cd与CD是不同的。 (2) 命令、选项、参数之间必须有一个空格或多个空格。 (3) 命令太长时,可以使用“\”符号来转义换行符,可以实现一条命令跨多行。 (4) 按Enter键后,该条命令才会被执行。 3.1.2显示系统信息的命令 1. who——查看用户登录 who命令主要用来查看当前有哪些用户登录到本台机器上。 格式: who [-a] 选项: a,显示所有用户的所有信息。 【例31】显示当前系统中登录的用户。 root@ubuntu:~$ who roottty72022-01-09 10:43 (:0) rootpts/02022-01-09 10:43 (:0.0) 提示: 在Ubuntu文本模式界面下,在命令前的root@ubuntu:~$中,root表示登录用户名; ubuntu表示计算机名; 而“:”后边表示的是用户当前目录,最后的字符为命令提示符。Ubuntu系统默认使用普通用户账户登录,默认的命令提示符为“$”。如果使用root(即超级用户)登录系统,则默认的命令提示符为“#”。 2. whoami——显示当前操作用户 例如,显示当前的操作用户的用户名的命令如下。 root@ubuntu:~$ whoami root 3. hostname——显示或设置系统的主机名 例如,显示当前系统的主机名的命令如下。 root@ubuntu:~$ hostname ubuntu-desktop 4. dmesg——显示开机信息 如果开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log目录中名为dmesg的文件里。 例如,查看本机的开机信息的命令如图31所示。 图31执行命令dmesg后显示的部分内容 5. clear——清除屏幕 该命令相当于DOS下的cls命令。 6. date——显示日期命令 如果想在文本界面下查看当前时间,那么可以执行date命令来查看时间。 root@ubuntu:~$date 2022年 01月 09日 星期一 14:13:32 CST 7. cal——显示日历命令 如果想要查看当前月份的日历,可以执行cal命令查看。 root@ubuntu:~$ cal 8. finger——显示主机系统中用户的信息 格式: finger [用户名@主机] 例如,显示用户当前登录的主机上的所有登录用户信息的命令如下。 root@ubuntu:~$ finger LoginNameTty IdleLoginTime OfficeOffice Phone root root tty1 Aug 4 10:21(:0) test pts/0Mar 4 11:05(:0.0) 注意: finger命令要求主机要提供finger服务,否则会连接失败。 3.1.3Shell使用技巧 1. 命令历史 若要查看最近使用过的命令,可以在终端中执行history命令。 更简单的方法是利用↑和↓键,可以把最近执行过的命令找回来,减少输入命令的次数,在需要使用重复执行的命令时非常方便。例如,每按一次↑键,就会把上一次执行的命令显示出来。 2. 命令自动补全 输入命令的前半部分,然后按Tab键,Shell将自动补齐该命令的剩余部分。如果输入的命令部分比较少,不足以被Shell识别为单一的命令,将会给出与输入部分相匹配的文件或路径名的列表。 3. 命令别名 格式: alias别名="命令" 例如,alias l="ls l"的含义是用字母l代替命令ls l。 取消别名用unalias命令,如unalias l。单独无参数的命令alias将显示所有已定义的别名。 4. 波浪线 “~”表示当前用户的主目录(home目录),例如用户是user01,那么“~”代表目录/home/user01。 5. 帮助命令 Linux中的命令很多,每个命令的参数也不止一个,不可能也没有必要全部记下来,可以充分利用Shell提供的命令man,或help选项来了解每条命令特别是其参数的详细用法。 例如,如果不知道怎么使用history命令,可以执行man命令。 root@ubuntu:~$ man history root@ubuntu:~$ history--help//help前边是两个连字符 执行命令后就可以查看history命令的使用说明及参数等选项,查阅完毕后按Q键可退出。充分利用互联网和社区www.ubuntu.com可获得更多的帮助。 任务3.2浏览文件系统 文件系统是Linux操作系统的重要组成部分。文件系统中的文件是数据的集合,文件系统不仅包含文件中的数据而且还有文件系统的结构,还包含所有Linux用户和程序用到的文件、目录、软链接及文件保护信息等内容。 3.2.1Linux文件及目录结构 1. Linux操作系统的目录结构 图32Linux系统的部分 主要目录结构 Linux在安装完成以后,会自动建立起一套完整的目录结构。虽然各个Linux发行版本之间有些差异,但是基本上都会遵循传统Linux操作系统建立目录的方法,即最底层的目录叫根目录,用“/”表示,在根目录下主要有如图32所示的目录。 Linux的文件系统结构不同于Windows系统,只有一个文件树,整个文件系统是以一个树根“/”为起点,所有的文件和外部设备都以文件的形式挂在这个文件树上,包括各种外设如硬盘、光驱、打印机等。Linux发行版本的根目录大都含有/bin、/etc、/lost+found、/sbin、/var、/boot、/root、/home、/mnt、/tmp、/dev、/lib、/proc、/usr等子目录。对于Ubuntu来说,在进入系统后,选择“位置”|“计算机”|“文件系统”命令,即可查看Ubuntu系统的默认的目录,其结构如图32所示。 主要目录说明如下。 /boot: boot目录存放启动Linux时用到的一些核心文件,包括一些链接文件以及镜像文件。 /bin: bin目录存放系统基本的用户命令,也是最小系统所需要的命令,如ls、cp、mkdir等。其功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用。 /home: home目录是普通用户的主目录。在Linux中,每个用户都有一个自己的目录,一般该目录名是用户的用户名。每建一个用户,就会在这里新建一个与用户账户同名的目录,为该用户分配一个空间。例如有个用户叫user01,则其主目录就是/home/user01,这个目录主要存放与个人用户有关的私人文件。 /etc: etc目录用来存放系统管理所需要的配置文件和子目录。该目录的内容一般只能由管理员进行修改,如密码文件、网卡配置文件、服务器配置文件等都在此目录中。 /dev: dev目录用来存放Linux的外部设备文件。 /var: var目录用来存放系统中经常要变化的文件,例如,/var/log用来存放系统日志,var/www目录用来存放Apache服务器站点。 /media: media目录主要用于挂载多媒体设备。通常有cdrom与floppy两个子目录。 /root: root目录是系统管理员(也叫超级用户)的主目录。 /mnt: mnt目录是空的,系统提供这个目录的目的是让用户临时挂载别的文件系统。 /tmp: tmp目录用来存放一些临时文件。 /lost+found: 这个目录平时是空的,当系统不正常关机再开机后进行系统修复时恢复的文件存放于此目录中。 /sbin: sbin目录用于存放系统基本的管理命令,拥有管理员用户权限才可以执行。 /usr: usr目录是系统存放程序的目录,用户要用到的应用程序和文件几乎都存放在这个目录下,如命令、帮助文件等。安装Linux发行版官方提供的软件包时,系统文件大多安装在这里。例如,该目录下包含的主要子目录有: /usr/X11R6,存放X Windows的目录; /usr/bin,存放应用程序; /usr/sbin,给超级用户使用的一些管理程序就放在这里; /usr/doc,Linux文档的存放目录; /usr/lib,存放一些常用的动态链接库和静态档案库; /usr/local,提供给一般用户的/usr目录,在这里安装软件最适合; /usr/man,这里就是帮助文档的存放目录; /usr/src,Linux开放的源代码就存在这个目录中。 2. 路径与目录 路径是目录或文件在系统中的存放位置。比如想要编辑host.conf文件,首先要知道它存放在哪里,即所在的位置,这时就需要用路径来表示。 路径是由目录或目录和文件名组合构成的。例如,/etc就是一个路径,而/etc/host.conf也是一个路径。 路径的分类如下。 (1) 绝对路径: 从“/”(根目录)开始的路径,例如,/usr/local/bin就是绝对路径,它指向系统中一个绝对的位置。 (2) 相对路径: 路径的写法不是由“/”开头,如果当前位于/usr目录,那么相对路径local/bin所指示的位置为/usr/local/bin,也就是说,相对路径所指示的位置,除了相对路径本身,还受到当前位置的影响。 例如,Linux系统中常见的目录/bin、/usr/bin、/usr/local/bin,如果只有一个相对路径bin,那么它指示的位置可能是上面3个目录中的任意一个,也可能是其他目录。一些特殊符号所表示的含义如表32所示。 表32特殊符号表示的目录 符号 表示的目录含义 . 表示用户所处的当前目录 .. 表示上级目录 ~ 表示当前用户的home目录 3.2.2Linux文件及目录查看类命令 在Linux中,有关文件和目录的查看命令有cat、more、less、pwd、ls、cd等。 1. pwd——显示工作目录 pwd是print working directory(显示工作目录)的缩写,就是显示当前所在的目录,以绝对路径的形式显示。 每次打开终端时,都会处在某个工作目录中,一般开启终端后默认的“当前工作目录”是用户的主目录。例如: root@ubuntu:~$ pwd /root root@ubuntu:~$ cd /etc/network//切换工作目录 root@ubuntu: /etc/network $ pwd /etc/network//当前工作目录已改变 2. cd——切换目录 cd是change directory(切换目录)的缩写,它用来切换当前工作目录。 格式: cd[相对路径或绝对路径] 如果只输入cd,未指定目标目录名,则返回当前用户的主目录,等同于cd ~。一般用户的主目录默认在/root下,如root用户默认的主目录为/root。为了能够进入指定的目录,用户必须拥有对指定目录的执行和读权限。 【例32】以root身份登录到系统中,进行以下目录切换等操作。 (1) 切换到user01的主目录,执行以下命令。 root@ubuntu:~$cd//或cd ~ root@ubuntu:~$pwd /root cd后的“~”符号表示登录用户的主目录。返回到用户主目录也可以直接执行cd命令。 (2) 切换到/etc/init.d目录,执行以下命令。 root@ubuntu:~$cd/etc/init.d root@ubuntu: /etc/init.d $pwd//注意提示符中的变化,已显示当前路径 /etc/init.d//用pwd命令再次查看当前工作目录 (3) 返回上层目录,执行以下命令。 root@ubuntu: /etc/init.d $cd ..//注意cd后边至少要有一个空格 root@ubuntu: /etc $pwd /etc “.”表示当前所在的目录;“..”表示当前目录的上层目录。另外,这是绝对路径的写法,即路径都要从“/”根目录开始。 (4) 使用相对路径访问目录,执行以下命令。 root@ubuntu: /etc $cdinit.d//从当前目录开始的相对路径 root@ubuntu: /etc/init.d $pwd /etc/init.d 这是相对路径的写法,实现由目录/etc切换到目录/etc/init.d。 3. ls——显示指定目录的清单 ls命令是list的缩写,不加选项时ls用来显示当前目录清单,是Linux下最常用的命令之一。通过ls命令不仅可以查看Linux文件夹包含的文件,还可以查看文件、目录的权限信息等。 格式: ls [选项] [目录或文件名] 选项: (1) a,显示所有文件,包含隐藏文件; 包括“.”和“..”。 (2) d,仅可查看目录的属性参数及信息。 (3) l,长格式输出,包含文件属性。 (4) h,显示文件或目录的大小。 (5) L,递归显示,即列出某个目录及其子目录下的所有文件和目录。 例如,列出当前目录下的文件及目录名: root@ubuntu:~$ ls 例如,输出目录/etc下的文件或目录的详细信息,用长格式输出: root@ubuntu:~$ls -l/etc 在输出的结果中有许多细节信息,共8栏,各栏之间用空格分开,如图33所示。 图33命令ls l 第1栏是文件的权限标志,将在本书项目4进行详细的介绍。这些标志通常表明了某个文件的类型以及其他用户是否能够对这个文件进行读、写(修改或者删除)或运行等操作。 提示: 在文本模式下,Linux的文件类型由第1栏第1列表示。其中,d表示目录; 表示文件; l表示链接文件,类似于Windows中的快捷方式; b表示块设备文件; c表示字符设备文件。 第2栏是这个文件的链接个数。 第3栏是文件所有者的用户名。 第4栏是这个用户所在的用户组组名。所有者和用户组的概念将在后面的项目中讨论。 第5栏给出文件的长度。 第6、第7栏两栏是这个文件或者子目录创建或者最后一次被修改时的日期和时间。 第8栏是这个文件的文件名。 Linux系统在文件模式下可用颜色来区分文件类别。默认情况下,蓝色代表目录,绿色代表可执行文件,红色代表压缩文件或档案文件,浅蓝色代表链接文件,灰色代表其他文件。 4. stat——显示文件或文件系统状态信息 stat命令用来显示文件或文件系统状态信息。 例如,显示/etc/passwd的文件系统信息: root@ubuntu:~$ stat/etc/passwd stat命令的执行结果如图34所示。 图34命令stat 通过该命令可以查看文件的大小、类型、结点、访问权限、访问和修改时间等相关信息。 3.2.3文本内容的显示和处理 如果要查看文件的具体内容,有许多命令可以做到,如cat、more、less、head、tail等。 1. cat——显示文件的内容 cat是concatenate(连续)的缩写,主要功能是将一个文件的内容连续地输出在屏幕上,或者是将多个文件合并成一个文件。 格式: cat [-n]文件名 选项: n,显示行号。 例如,查看/etc/passwd文件内容: root@ubuntu:~$cat/etc/passwd 运行结果如图35所示。 图35命令cat