RH124|第二章 访问命令行

访问命令行

目标

完成本节内容后,你能够登录Linux系统,并使用shell运行简单的命令。

bash shell介绍

命令行是一种基于文本的界面,可以用来向计算机系统输入指令。Linux的命令行是由一个叫做shell的程序提供的。多年来,不同shell程序被开发出来,不同的用户可以配置使用不同的shell。不过,大多数用户还是坚持使用默认的shell。

Red Hat Enterprise Linux 中用户的默认 shell 是 GNU Bourne-Again Shell (bash)。Bash是类似UNIX系统中最成功的shell之一--Bourne Shell (sh)的改进版。

shell在等待用户的命令时,会显示一个字符串。这就是所谓的shell提示符。当普通用户启动shell时,默认提示符以$字符结束,如下图所示。

[user@host ~]$

如果shell是以超级用户(root)的身份运行,那么$字符会被##字符取代。这样可以更明显的表明是超级用户shell,这样可以避免出现意外和错误而影响到整个系统。超级用户shell提示如下图所示。

[root@host ~]#

bash具备强大的功能。bash shell提供了一种脚本语言,可以支持任务的自动化,bash shell可也以实现图形化工具难以高效完成的操作。

shell 基础

在shell提示符输入的命令有三个基本部分:

  • 命令
  • 选项
  • 参数

命令是要运行的程序的名称。它的后面可能有一个或多个选项,用来调整命令的行为。选项通常以一个或两个破折号开头(例如 -a--all)来区分它们与参数。命令后面还可以有一个或多个参数,通常表示命令要执行的目标。

例如,命令usermod -L user01有一个命令(usermod)、一个选项(-L)和一个参数(user01)。该命令的作用是锁定user01用户账户的密码。

登陆本地电脑

要运行shell,需要通过终端登录到计算机上。终端是一个基于文本的界面,用于在计算机系统中输入命令和打印输出。有以下几种方法。

计算机有键盘和显示器,用于输入和输出直接连接在一起。这就是Linux机器的物理控制台。物理控制台支持多个虚拟控制台,可以运行独立的终端。每个虚拟控制台支持一个独立的登录会话。你可以通过同时按Ctrl+Alt和一个功能键(F1F6)在它们之间切换。这些虚拟控制台大多运行一个提供文本登录提示的终端,你输入正确的用户名和密码,登录成功并得到一个shell提示。

计算机可能会提供一个图形化的登录提示。你可以用它来登录到图形环境中。图形环境也在虚拟控制台上运行。要获得shell提示符,你必须在图形环境中启动一个终端程序。shell提示符在图形化终端程序的应用窗口中提供。

在 Red Hat Enterprise Linux 8 中,如果图形环境可用,登录屏幕将在第一个虚拟控制台上运行,称为 tty1。在虚拟控制台二到六的虚拟控制台中,有五个额外的文本登录提示。

如果您使用图形化登录,图形化环境将在第一个虚拟控制台上启动,而这个虚拟控制台当前没有登录会话使用。通常情况下,你的图形化会话将取代第二个虚拟控制台(tty2)上的登录提示符。但是,如果该控制台被一个正在使用的文本登录会话(不只是一个登录提示符)所使用,那么下一个未被使用的虚拟控制台就会被使用。

图形化登录界面继续在第一个虚拟控制台(tty1)上运行。如果你已经登录了一个图形化会话,并在图形化登录画面中以另一个用户的身份登录,或者使用切换用户菜单项在图形化环境中切换用户而不注销,则在下一个空闲的虚拟控制台上为该用户启动另一个图形化环境。

当你从图形化环境中退出时,它将退出,物理控制台将自动切换回第一个虚拟控制台的图形化登录画面。

服务器固定连接的键盘和显示器。一个数据中心可能会有很多服务器的机架,不为每台服务器提供键盘和显示器可以节省空间和费用。为了让管理员登录,服务器可能会有一个由其串口控制台提供的登录提示,运行在一个串口上,该串口连接到网络控制台服务器上,用于远程访问串口控制台。

通常情况下,如果服务器自身的网卡配置错误,通过自身的网络连接无法登录,就会使用串口控制台进行修复。但大多数情况下,服务器都是通过网络访问。

网络登录

Linux用户和管理员经常需要通过网络连接到远程系统,获得shell访问权限。在现代计算环境中,很多服务器实际上是虚拟机,或者作为公共或私有云实例运行。这些系统不是物理的,也没有真正的硬件控制台。

在Linux中,在远程系统上获取shell提示符的最常用的方法是使用安全shell(Secure Shell)(SSH)。大多数Linux系统(包括Red Hat Enterprise Linux)和macOS都提供了OpenSSH命令行程序ssh

在下面例子中,用户使用ssh程序以用户remotionuser的身份登录到远程Linux系统remotionhost。

[user@host ~]$ ssh remoteuser@remotehost
remoteuser@remotehost's password: password
[remoteuser@remotehost ~]$

ssh命令对连接进行加密,以确保通信安全,防止窃听或劫持密码和内容。

某些系统(如新的云计算实例)不允许用户使用密码登录SSH,以提高安全性。另一种无需输入密码就能验证到远程机器的方法是通过公钥验证。

使用这种认证方法,用户有一个特殊的身份文件,其中包含一个私人密钥,相当于密码,用户对其进行保密。他们在服务器上的账户被配置了一个匹配的公钥,这个公钥不需要保密。在登录时,用户可以配置ssh提供私钥,如果他们在该远程服务器上的该账户中安装了与之匹配的公钥,则会在不要求密码的情况下登录。

在下一个例子中,主机上有shell提示符的用户使用公钥认证,以远程用户的身份使用ssh登录到远程主机。-i选项用于指定用户的私钥文件,也就是mylab.pem。匹配的公钥已经被设置为远程用户账户中的授权密钥。

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost
[remoteuser@remotehost ~]$

要做到这一点,私钥文件必须只有拥有该文件的用户才能读取。在前面的例子中,私钥在 mylab.pem 文件中,可以使用 chmod 600 mylab.pem 命令来修改权限。如何设置文件权限将在后面的章节中详细讨论。

用户也可能配置了自动尝试的私钥,但这个讨论不在本节的范围内。本节末尾的参考文献包含了关于这个主题的更多信息的链接。

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost 
The authenticity of host 'remotehost (192.0.2.42)' can't be established.
ECDSA key fingerprint is 47:bf:82:cd:fa:68:06:ee:d8:83:03:1a:bb:29:14:a3.
Are you sure you want to continue connecting (yes/no)? yes
[remoteuser@remotehost ~]$

退出登录

当你使用完shell并想退出时,你可以选择以下几种方式之一来结束会话。您可以输入 exit 命令来终止当前的 shell 会话。另外,也可以按Ctrl+D键结束会话。

下面是一个用户从SSH会话中注销的例子:

[remoteuser@remotehost ~]$ exit
logout
Connection to remotehost closed.
[user@host ~]$

使用桌面访问命令行

目标

完成本节内容后,您应该能够使用 GNOME 3 桌面环境登录到 Linux 系统,在终端程序的 shell 提示符中运行命令。

gnome桌面环境介绍

桌面环境是Linux系统中的图形用户界面。Red Hat Enterprise Linux 8中的默认桌面环境是由GNOME 3提供的。它为用户提供了一个集成的桌面,并在Wayland(默认情况下)或传统的X Window System提供的图形框架之上提供了一个统一的开发平台。

GNOME Shell 提供了 GNOME 桌面环境的核心用户界面功能。

GNOME Shell 应用程序是高度可定制的。Red Hat Enterprise Linux 8 默认为GNOME Shell 的外观与本节中使用的 "Standard "主题相似。Red Hat Enterprise Linux 7 默认使用了一个名为 "Classic "的替代主题,它更接近老版本 GNOME 的外观和感觉。在登录的时候,可以通过点击登录按钮旁边的齿轮图标来持续选择任何一个主题,这个按钮在选择了你的账户之后,输入密码前可用。


Figure 2.1: An empty GNOME 3 desktop

第一次作为新用户登录时,会运行一个初始设置程序来帮助配置基本的帐户设置。完成后,GNOME 帮助程序会在 GNOME 入门界面开始。这个屏幕包括视频和文档,帮助新用户了解 GNOME 3 环境。您可以通过点击顶部栏左侧的活动按钮快速启动 GNOME 帮助,并在屏幕左侧的破折号中,点击生命环浮标图标启动 GNOME 帮助。

GNOME Shell

GNOME Shell 的元素包括以下几个部分,如活动概览模式下的 GNOME Shell 截图所示:

  1. 顶部栏:沿着屏幕顶部运行的条形图。它显示在 "活动 "概览和工作区中。顶部栏提供了活动按钮,以及音量、网络、日历访问和键盘输入法之间的切换控制(如果配置了多个键盘输入法)。顶部栏右上角的系统菜单提供了调节屏幕亮度、网络连接的开启或关闭等控制。在用户名称的子菜单下,有调整账户设置和退出系统的选项。系统菜单中还提供了打开设置窗口、锁定屏幕或关闭系统的按钮。
  2. 活动概述:这是一种特殊的模式,可以帮助用户组织窗口和启动应用程序。可以通过点击顶部栏左上角的 "活Activities"按钮或按Super键进入 "活动总览"。Super键(有时也称为Windows键或Command键),位于IBM PC 104/105键或苹果键盘的左下角附近。Activities概览的三个主要区域是屏幕左侧的破折号、屏幕中央的窗口概览和屏幕右侧的工作区选择器。点击顶部栏中的 "Activities"按钮,或者按 Super或 **Esc **键,可以不做任何事情就可以退出 "Activities"总览。
  3. 仪表盘:这是一个可配置的列表,里面有用户最喜欢的应用程序的图标、当前正在运行的应用程序,在仪表盘底部有一个网格按钮,可以用来选择任意的应用程序。用户可以通过点击其中一个图标来启动应用程序,也可以通过网格按钮找到不常用的应用程序。破折号有时也被称为dock。
  4. 窗口概览:活动概览的中心区域,显示当前工作空间中所有活动窗口的缩略图。这样可以在杂乱无章的工作区中更容易地将窗口移到前台,或将其移到另一个工作区。
  5. 工作区选择器:活动概览右侧的区域,显示所有活动工作区的缩略图,并允许选择工作区和窗口从一个工作区移动到另一个工作区。
  6. 消息托盘:消息托盘提供了一种查看应用程序或系统组件向 GNOME 发送通知的方式。如果有通知发生,通常情况下,通知首先会以单行的形式短暂地出现在屏幕的顶部,而在顶部栏中间的时钟旁边会出现一个持续的指示器,告知用户最近已经收到了哪些通知。用户可以通过点击顶部栏上的时钟或按Super+M打开信息托盘来查看这些通知。点击顶部栏上的时钟,或再次按EscSuper+M,可以关闭消息托盘。
[Figure 2.2: Closeup of an open message tray]

您可以查看和编辑您的帐户使用的 GNOME 键盘快捷方式。打开顶部栏右侧的系统菜单。单击左侧菜单底部的设置按钮。在打开的应用程序窗口中,从左侧窗格中选择 "设备 → 键盘"。右侧窗格将显示您当前的快捷方式设置。

工作区

工作区是具有不同应用窗口的独立桌面屏幕。通过将打开的应用程序窗口按任务进行分组,可以用来组织工作环境。例如,用于执行特定系统维护活动的窗口(如设置新的远程服务器)可以在一个工作空间中分组,而电子邮件和其他通信应用窗口可以在另一个工作空间中分组。

有两种简单的方法可以在工作区之间进行切换。一种方法,也许是最快的方法,就是按Ctrl+Alt+UpArrowCtrl+Alt+DownArrow来依次切换工作区。第二种方法是切换到 "活动 "概览,然后点击所需的工作区。

使用 "活动 "概览的好处是,可以使用屏幕右侧的工作区选择器和屏幕中央的窗口概览在工作区之间点击和拖动窗口。

启动终端

要获得 GNOME 中的 shell 提示符,请启动一个图形化的终端应用程序,如 GNOME Terminal。有几种方法可以做到这一点。下面列出了两种最常用的方法:

  • 在 "活动 "总览中,从 "活动 "总览中选择 "终端"(从收藏夹区域或通过网格按钮(实用工具组内)或窗口总览顶部的搜索栏找到它)。
  • 按Alt+F2组合键打开,输入gnome-terminal命令。

当终端窗口被打开时,会显示一个shell提示符,用于启动图形化终端程序的用户。shell提示符和终端窗口的标题栏显示了当前的用户名、主机名和工作目录。

锁屏或注销

锁定屏幕或完全注销,可以从顶部栏最右边的系统菜单中完成。

要锁定屏幕,从右上角的系统菜单中,点击菜单下方的锁定按钮或按Super+L(可能更容易记住为Windows+L),即可锁定屏幕。如果图形会话闲置几分钟,屏幕也会被锁定。

出现一个锁屏窗口,显示系统时间和登录用户的姓名。要解锁屏幕,请按回车键或空格键将锁屏幕拉起,然后在锁屏上输入该用户的密码。

要注销并结束当前图形化登录会话,请选择顶部栏右上角的系统菜单,然后选择(用户)→注销。显示一个窗口,提供取消或确认注销操作的选项。

关机或重启系统

要关闭系统,可从右上角的系统菜单中,单击菜单下方的电源按钮或按Ctrl+Alt+Del。在显示的对话框中,您可以选择关闭电源或重新启动机器,或取消操作。如果您不做选择,系统会在60秒后自动关闭。

练习使用桌面访问命令行

在这个练习中,你将以普通用户的身份通过图形显示管理器登录,熟悉 GNOME 3 提供的 GNOME 标准桌面环境。

你应该能够使用 GNOME 3 桌面环境登录到 Linux 系统,并在终端程序中通过 shell 提示符运行命令。

确保工作站虚拟机正在运行。在工作站上执行以下任务:

  1. 以student身份登录工作站,密码为student。

    1. ​ 在工作站上,在 GNOME 登录界面,点击studetn用户账户。在提示密码时,输入student。
    2. 点击登陆
  2. 将student密码由student改成55TurnK3y。

    1. 最简单的方法是打开终端,在shell提示符下使用passwd命令。
    2. 在显示的终端窗口中,在shell提示下键入passwd。将student密码从student改成55TurnK3y。
    [student@workstation ~]$ passwd
    Changing password for user student.
    Current password: student
    New password: 55TurnK3y 
    Retype new password: 55TurnK3y 
    passwd: all authentication tokens updated successfully.
    
  3. 使用55TurnK3y作为密码,以student身份登出并重新登录,验证修改后的密码。

    1. 点击右上角的系统菜单。
    2. 选择 "student“用户→右上角注销。
    3. 在显示的确认对话框中单击 "注销"。
    4. 在 GNOME 登录界面,点击student用户账户。在提示密码时,输入55TurnK3y。
    5. 点击登陆
  4. 锁屏

    1. 在右上角的系统菜单中,按下菜单下方的锁屏按钮。
  5. 解锁屏幕

    1. 按回车键可解除锁屏窗口。
    2. 在密码栏中,输入55TurnK3y作为密码。
    3. 点击解锁
  6. 确定如何从图形界面关闭工作站,但在不关闭系统的情况下取消操作。

    1. 从右上角的系统菜单中,单击菜单底部的电源按钮。屏幕上会出现一个对话框,其中有重启或关闭机器的选项。
    2. 在显示的对话框中单击 "取消"。

使用bash shell执行命令

目标

完成本节内容后,你应该能够使用Bash快捷键从shell提示符中运行命令,节省时间。

基本命令语法

GNU Bourne-Again Shell(bash)是一个解释用户输入的命令的程序。每个输入到shell中的字符串最多可以有三个部分:命令、选项(通常以-或--开头)和参数。每个输入到shell中的字都用空格隔开。命令是安装在系统中的程序名称。每个命令都有自己的选项和参数。

当您准备好执行命令时,按回车键。在单独的一行中键入每一条命令。在下一个shell提示符出现之前,会显示命令输出。

[user@host]$ whoami 
user
[user@host]$ 

如果你想在一行中输入多个命令,请使用分号(;)作为命令分隔符。分号(;)作为命令的分隔符,分号是被称为metacharacters(元字符)的一个成员,它对bash有特殊的含义。在这种情况下,两个命令的输出都会在下一个shell提示符出现之前显示。

下面的例子显示了如何在命令行中组合两个命令(command1command2)。

[user@host]$ command1;command2

简单命令的例子

date命令显示当前的日期和时间。超级用户也可以用它来设置系统时钟。以加号(+)开头的参数指定了日期命令的格式字符串。

[user@host ~]$ date
Sat Jan  26 08:13:50 IST 2019
[user@host ~]$ date +%R
08:13
[user@host ~]$ date +%x
01/26/2019

passwd命令可以更改用户自己的密码。在更改之前,必须指定账户的原始密码。在默认情况下,passwd被配置为需要一个强密码,由小写字母、大写字母、数字和符号组成,并且不是基于字典词。超级用户可以使用passwd命令来更改其他用户的密码。

[user@host ~]$ passwd
Changing password for user user.
Current password: old_password
New password: new_password
Retype new password: new_password
passwd: all authentication tokens updated successfully.

Linux不需要用文件名扩展名对文件进行类型分类。file命令会扫描文件内容的开头,并显示它是什么类型。要分类的文件作为参数传递给该命令。

[user@host ~]$ file /etc/passwd
/etc/passwd: ASCII text
[user@host ~]$ file /bin/passwd
/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 
(SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
for GNU/Linux 3.2.0, BuildID[sha1]=a3637110e27e9a48dced9f38b4ae43388d32d0e4,stripped 
[user@host ~]$ file /home
/home: directory

查看文件内容

在Linux中,最简单、最常用的命令之一就是cat命令。通过cat命令,你可以创建单个或多个文件,查看文件的内容,将多个文件的内容串联起来,并将文件的内容重定向到终端或文件。

这个例子显示了如何查看/etc/passwd文件的内容。

[user@host ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin 
...output omitted...

使用下面的命令来显示多个文件的内容。

[user@host ~]$ cat file1 file2
Hello World!!
Introduction to Linux commands.

有些文件非常长,会比终端提供的显示空间更大。cat命令不以页面的形式显示文件的内容。less的命令一次显示一个文件的一页,可以让你随意滚动。

less命令可以让您在一个终端窗口中向前或向后翻页,而这些文件的长度超过了一个终端窗口所能容纳的长度。使用向上箭头键和向下箭头键上下滚动。按Q键退出该命令。

headtail命令分别显示文件的开始和结束。默认情况下,这些命令显示文件的10行,但它们都有一个-n选项,允许指定不同的行数。要显示的文件是作为参数传递给这些命令的。

[user@host ~]$ head /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
bin:x:1:1:bin:/bin:/sbin/nologin 
daemon:x:2:2:daemon:/sbin:/sbin/nologin 
adm:x:3:4:adm:/var/adm:/sbin/nologin 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 
sync:x:5:0:sync:/sbin:/bin/sync 
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
halt:x:7:0:halt:/sbin:/sbin/halt 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin 
[user@host ~]$ tail -n 3 /etc/passwd 
gdm:x:42:42::/var/lib/gdm:/sbin/nologin 
gnome-initial-setup:x:977:977::/run/gnome-initial-setup/:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

wc命令统计文件中的行数、字数和字符数。它需要-l、-w或-c选项来分别显示行数、字数或字符数。

[user@host ~]$ wc /etc/passwd
  45  102 2480 /etc/passwd
[user@host ~]$ wc -l /etc/passwd ; wc -l /etc/group
45 /etc/passwd
70 /etc/group
[user@host ~]$ wc -c /etc/group /etc/hosts
 966 /etc/group
 516 /etc/hosts
1482 total

TAB补全

Tab键允许用户在提示符处输入部分的命令或文件名后,自动补全命令或文件名。如果输入的字符不是唯一的,按两次Tab键会显示所有以已经输入的字符开头的命令

[user@host ~]$ pas 按两次tab
passwd       paste        pasuspender
[user@host ~]$ pass 按一次Tab
[user@host ~]$ passwd 
Changing password for user user.
Current password: 

Tab键允许用户在提示符处输入部分的命令或文件名后,自动补全命令或文件名。如果输入的字符不是唯一的,按两次Tab键会显示所有以已经输入的字符开头的命令。

[user@host ~]$ ls /etc/pas 按一次tab
[user@host ~]$ ls /etc/passwd 按一次Tab
passwd   passwd-

对于许多命令,参数和选项都可以用选项卡完成匹配。useradd命令是由超级用户(root)使用的,用于在系统中创建用户。它有许多选项,可以用来控制该命令的行为方式。输入部分选项之后的按Tab键可以补全该选项,减少大量的键入。

[root@host ~]# useradd -- 按两次tab
--base-dir        --groups          --no-log-init     --shell
--comment         --help            --non-unique      --skel
--create-home     --home-dir        --no-user-group   --system
--defaults        --inactive        --password        --uid
--expiredate      --key             --root            --user-group
--gid             --no-create-home  --selinux-user
[root@host ~]# useradd --

换行执行长命令

支持许多选项和参数的命令会变得相当长,并且会被Bash shell自动滚动。只要光标到达窗口的右侧边框,命令就会在下一行继续执行。为了使命令的可读性更强,你可以把它拆开,使其适合在多行中使用。

在该行的最后一个字符上添加一个反斜线字符(\)。这告诉 shell 忽略换行字符,并将下一行当作是当前行的一部分。Bash shell会以continuation提示开始下一行,通常是一个大于等于的字符(>),表示该行是前一行的延续。

[user@host]$ head -n 3 \
> /usr/share/dict/words \
> /usr/share/dict/linux.words
==> /usr/share/dict/words <==
1080
10-point
10th

==> /usr/share/dict/linux.words <==
1080
10-point
10th
[user@host ~]$ 

命令历史

history命令显示以前执行过的命令列表,前缀是命令编号。

感叹号字符(!)是一个元字符,用于扩展之前的命令而无需重新输入。!number命令扩展到与指定的数字相匹配的命令。!string 命令扩展到以指定的字符串开头的最近的命令。

[user@host ~]$ history    
...output omitted...
23  clear
24  who
25  pwd
26  ls /etc
27  uptime
28  ls -l
29  date
30  history
[user@host ~]$ !ls 
ls -l 
total 0 
drwxr-xr-x. 2 user user 6 Mar 29 21:16 Desktop 
...output omitted... 
[user@host ~]$ !26 
ls /etc 
abrt                     hosts                     pulse 
adjtime                  hosts.allow               purple 
aliases                  hosts.deny                qemu-ga 
...output omitted...

方向键可以用来浏览shell历史记录中的上一条命令。上箭头键可以编辑历史列表中的上一条命令。下箭头键编辑历史列表中的下一条命令。左箭头键右箭头键可以在历史列表中左右移动光标,这样可以在运行前编辑当前命令。

编辑命令行

在交互式使用时,bash有一个命令行编辑功能。这允许用户使用文本编辑器命令,在输入的命令中移动和修改当前正在输入的命令。使用方向键在当前命令中移动,并在本节课的前面已经介绍过使用方向键在当前命令中移动,并在命令历史记录中进行步进。更强大的编辑命令将在下面的表格中介绍。

命令行编辑快捷键

快捷键 描述
Ctrl+A 跳到命令行的开头。
Ctrl+E 跳到命令行的结尾。
Ctrl+U 清除开头到光标处的命令。
Ctrl+K 清除光标到结尾的命令。
Ctrl+LeftArrow 在命令行中跳到上一个词的开头。
Ctrl+RightArrow 跳到命令行的下一个词的末尾。
Ctrl+R 搜索历史上的命令列表。

实验:访问命令行

在这个实验中,你将使用Bash shell来执行命令。使用Bash shell命令行成功运行简单程序。执行识别文件类型和显示文本文件的部分内容的命令。练习使用一些Bash命令的历史记录 "快捷方式 "来更有效地重复命令或部分命令。

  1. 使用日期命令显示当前时间和日期。

    [student@workstation ~]$ date
    Thu Jan 22 10:13:04 PDT 2019
    
    
  2. 以12小时时钟时间显示当前时间(例如,11:42:11 AM)。提示:显示输出的格式字符串是%r。

    [student@workstation ~]$ date +%r
    10:14:07 AM
    
  3. /home/student/zcat是一个什么样的文件?是人类能读懂的吗?

    [student@workstation ~]$ file zcat 
    zcat: POSIX shell script, ASCII text executable
    
  4. 使用wc命令和Bash快捷键来显示zcat的大小。

    wc命令可以用来显示zcat脚本中的行数、字数和字节数。不需要重新输入文件名,而是使用Bash历史记录快捷键Esc+. 键Esc+.(同时按下Esc和.键)来重用上一条命令中的参数。

    [student@workstation ~]$ wc Esc+.
    [student@workstation ~]$ wc zcat
      51  299 1983 zcat
    
  5. 显示zcat的前10行。

    head命令显示文件的开头。再次尝试使用Esc+.快捷键。

    [student@workstation ~]$ head Esc+.
    [student@workstation ~]$ head zcat
    #!/bin/sh # Uncompress files to standard output.
    # Copyright (C) 2007, 2010-2018 Free Software Foundation, Inc.
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version.
    
  6. 显示zcat文件的最后10行。

    使用tail命令显示zcat文件的最后10行。

    [student@workstation ~]$ tail Esc+.
    [student@workstation ~]$ tail zcat 
    With no FILE, or when FILE is -, read standard input. 
    Report bugs to <bug-gzip@gnu.org>."
    
    case $1 in 
    --help)    printf '%s\n' "$usage"   || exit 1;; 
    --version) printf '%s\n' "$version" || exit 1;; 
    esac 
    exec gzip -cd "$@"
    
  7. 准确地重复前面的命令,用三个或更少的按键,重复前面的命令。

    准确地重复上一条命令。按一次UpArrow键回滚一次命令历史记录,然后按回车键,或者输入快捷键! (两种方法都可以尝试。)

    [student@workstation]$ !! 
    tail zcat 
    With no FILE, or when FILE is -, read standard input. 
    
    Report bugs to <bug-gzip@gnu.org>."
    
    case $1 in 
    --help)    printf '%s\n' "$usage"   || exit 1;;
    --version) printf '%s\n' "$version" || exit 1;; 
    esac
    exec gzip -cd "$@"
    
  8. 重复前面的命令,但使用-n 20选项来显示文件中的最后20行。使用命令行编辑,用最少的键程来完成这个操作。

    [student@workstation ~]$ tail -n 20 zcat
      -l, --list        list compressed file contents
      -q, --quiet       suppress all warnings
      -r, --recursive   operate recursively on directories
      -S, --suffix=SUF  use suffix SUF on compressed files
          --synchronous synchronous output (safer if system crashes, but slower)
      -t, --test        test compressed file integrity
      -v, --verbose     verbose mode
          --help        display this help and exit
          --version     display version information and exit 
    With no FILE, or when FILE is -, read standard input. 
    Report bugs to <bug-gzip@gnu.org>."
    
    case $1 in 
    --help)    printf '%s\n' "$usage"   || exit 1; exit;; 
    --version) printf '%s\n' "$version" || exit 1; exit;; 
    esac 
    exec gzip -cd "$@"
    
  9. 使用shell历史记录再次运行日期+%r命令。

    使用历史命令显示以前的命令列表,并确定要执行的具体日期命令。使用 !number 来运行命令,其中 number 是历史记录命令的输出中要使用的命令号。
    注意,你的shell历史记录可能与下面的例子不同。根据你的历史记录命令的输出来确定要使用的命令编号。

    [student@workstation ~]$ history
    1    date
    2    date +%r
    3    file zcat
    4    wc zcat
    5    head zcat
    6    tail zcat
    7    tail -n 20 zcat
    8    history[student@workstation ~]$ !2 date +%r
    10:49:56 AM
    

总结

  • Bash shell是一个命令解释器,它可以提示交互式用户指定Linux命令。
  • 许多命令都有一个 --help 选项,可以显示使用信息。
  • 使用工作空间可以更容易地组织多个应用程序窗口。
  • 位于顶部栏左上角的 "活动 "按钮提供了一个概览模式,帮助用户组织窗口和启动应用程序。
  • file命令扫描文件内容的开头,并显示是什么类型。
    head和tail命令分别显示文件的开始和结束。
  • 您可以使用Tab键补全,当您将文件名作为参数输入到命令.file时,可以分别使用Tab键完成来自动补全文件名。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 5,319评论 0 9
  • 1.描述计算机的组成及其功能 (一)计算机的组成 1.CPU 2.CPU风扇 3.BIOS 4.内存 5.硬盘 6...
    whamai阅读 1,431评论 0 1
  • (一)基本命令 命令格式: 命令 参数 1.ls 显示文件名,等同于dos下dir命令 命令格式:ls [opti...
    飞羽孟德阅读 1,868评论 0 3
  • 在即将到来的2017-18赛季,勇士仍会是总冠军的最有力竞争者。话虽这么说,但目前联盟仍会有可能冲击勇士统治地位的...
    zoneball阅读 197评论 1 0