鸟哥的Linux私房菜快速阅读笔记(一) 指令使用、常见指令、寻求帮助

0 阅读7分钟

第四章、首次登陆与线上求助

4.2 文字模式下指令的下达

4.2.1 开始下达指令

指令格式
command [-options] parameter1 parameter2 ...
  • command (指令) :必须是第一个输入,可以是系统指令(如 cd)或可执行文件(如脚本)。

  • options (选项)

    • 用于调整指令功能。
    • 短选项前加 - (例如 -h)。
    • 长选项前加 -- (例如 --help)。
    • 注:中括号 [] 表示可选,实际输入时不需要打出来。
  • parameter (参数) :依附在选项后面,或者直接作为指令的对象。

核心规则

  • 空格分隔:指令、选项、参数之间必须用空格区分。不论中间有几个空格,Shell 都视为一个分隔符。空格本身是重要的特殊字符。

    长指令换行:若指令太长,可使用反斜线 接 [Enter] 换行。**注意**: 后面必须立刻接回车键,不能有空格。

  • 大小写敏感:Linux 严格区分英文大小写(例如 cdCD 是不同的指令)。

语系支持 locale

查看当前语系设置

使用 locale 指令可以查看系统当前的所有语系配置。

[dmtsai@study ~]$ locale
LANG=zh_TW.utf8           # 语言语系的输出 决定了整体的语言环境
LC_CTYPE="zh_TW.utf8"     # 下面为许多信息的输出使用的特别语系
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8       # 时间方面的语系数据
LC_COLLATE="zh_TW.utf8"
....中间省略....
LC_ALL=                   # 全部的数据同步更新的设置值 设置了这个变量,它会覆盖上面所有的 LC_ 和 LANG 设置。

乱码现象 如果终端不支持当前语系(例如在不支持中文的环境下),执行 date 会显示乱码

[dmtsai@study ~]$ date
? 5??? 14:24:36 CST 2015  # 纯命令行下,无法显示中文字,所以前面是乱码

修改语系

可以通过直接给变量赋值来临时修改语系,常用于解决乱码问题。

# 设置变量
[dmtsai@study ~]$ LANG=en_US.utf8
[dmtsai@study ~]$ export LC_ALL=en_US.utf8
# 注意:LANG 只与输出讯息有关,若需要更改其他不同的讯息,要同步更新 LC_ALL 才行!

在设置变量时,等号 = 两边绝对不能有空格。正确:LANG=en_US.utf8 (连续输入),错误:LANG = en_US.utf8。上述修改方法仅对当前会话有效。永久修改语系通常需要修改配置文件。

以下是针对 4.2.2 基础指令操作的整理笔记,保留了所有关键代码案例与技术细节。

4.2.2 基础指令的操作

显示日期与时间:date
  • 基本用法:直接输入 date 显示当前系统时间。

    [dmtsai@study ~]$ date
    Fri May 29 14:32:01 CST 2015
    
  • 格式化输出:使用 + 号后接格式代码。

    [dmtsai@study ~]$ date +%Y/%m/%d
    2015/05/29
    [dmtsai@study ~]$ date +%H:%M
    14:33
    

    注意:选项或参数前除了常见的减号 -,特定情况下(如格式化)也会使用正号 +

显示日历:cal

在较新版本的 Ubuntu(如 22.04+)中,cal 命令默认不再预装。它属于 bsdmainutilsncal 软件包,需要手动安装。

  • 基本语法cal [month] [year]

  • 常用案例

    • 显示本月(自动反白显示今日):

      [dmtsai@study ~]$ cal
           May 2015
      Su Mo Tu We Th Fr Sa
                         1  2
       3  4  5  6  7  8  9
      10 11 12 13 14 15 16
      17 18 19 20 21 22 23
      24 25 26 27 28 29 30
      31
      
    • 显示整年

      [dmtsai@study ~]$ cal 2015
          2015
      ... (显示全年12个月) ...
      
    • 显示指定年月

      [dmtsai@study ~]$ cal 10 2015
         October 2015
      Su Mo Tu We Th Fr Sa
                   1  2  3
       4  5  6  7  8  9 10
      11 12 13 14 15 16 17
      18 19 20 21 22 23 24
      25 26 27 28 29 30 31
      
  • 错误处理:输入非法参数(如月份 13)会提示错误信息。

    [dmtsai@study ~]$ cal 13 2015
    cal: illegal month value: use 1-12
    

简单计算器:bc

bc 是一个高精度的计算器程序,输入 bc 后会进入软件工作环境。

  • 进入环境与基本运算

    [dmtsai@study ~]$ bc
    bc 1.06.95
    ... (版权信息) ...
    1+2+3+4
    10
    7-8+3
    2
    10*52
    520
    10%3
    1
    10/2
    5
    
  • 整数除法陷阱与 scale 设置: 默认情况下,bc 仅输出整数。若需小数,必须设置 scale 变量。

    [dmtsai@study ~]$ bc
    ...
    10/100
    0              # 默认为整数,结果为0
    
    [dmtsai@study ~]$ bc
    ...
    scale=3        # 设置小数位数为3
    1/3
    .333
    240/2349
    .102
    
指令下达的两种环境模式

根据指令执行后的反馈,分为两种情况:

  1. 直接显示结果

    指令执行 -> 输出信息 -> 立刻回到命令提示符(如 date, cal)。

  2. 进入软件功能环境

    指令执行 -> 进入软件环境(如 bc) -> 需输入特定结束指令(如 quit) -> 回到命令提示符。

以下是根据图片内容整理的 Linux 重要热键笔记,保留了所有关键代码案例:

4.2.3 重要的几个热键

[Tab] 键:命令与文件补全
  • 命令补全 (Command Completion)

    • 规则:接在指令的第一个字后面。

    • 操作:按一次补全唯一命令;按两次列出所有可能。

    • 案例

      [dmtsai@study ~]$ ca[tab][tab]
      # 系统列出所有以 ca 开头的指令
      cacertdir_rehash  cairo-sphinx   cancel      case
      cache_check       cal            cancel.cups cat
      ... (省略) ...
      caller            catman
      
  • 文件补全 (File Completion)

    • 规则:接在指令的第二个字(或之后)后面。

    • 案例

      [dmtsai@study ~]$ ls -al ~/.bash[tab][tab]
      # 系统列出 ~/.bash 开头的所有文件
      .bash_history  .bash_logout  .bash_profile  .bashrc
      
  • 选项/参数补全 (Option/Argument Completion)

    • 规则:接在特定指令的选项位置(通常需安装 bash-completion)。

    • 案例

      [dmtsai@study ~]$ date --[tab][tab]
      # 系统列出 date 指令可用的选项
      --date       --help       --reference  --rfc-3339=  --universal
      --date=      --iso-8601   --rfc-2822   --set        --version
      

[Ctrl]-c 键:中断程序
  • 功能:强制中断(Interrupt)当前正在运行的程序。

  • 场景:指令输入错误导致程序“跑不停”,或者输出过多不想看了。

  • 案例

    [dmtsai@study ~]$ find /
    ... (一堆东西都省略) ...
    # 此时屏幕很乱,看不到命令提示字符!直接按下 [Ctrl]-c 即可!
    [dmtsai@study ~]$
    # 此时提示字符回来了,find 程序被中断
    
[Ctrl]-d 键:键盘输入结束 (EOF)
  • 含义:End Of File 或 End Of Input。

  • 功能

    1. 表示输入结束。
    2. 替代 exit:在命令行直接按下 [Ctrl]-d 即可离开终端(相当于输入 exit)。

[Shift] + [Page Up] / [Page Down] 键:屏幕翻页
  • 功能:在终端屏幕缓冲区上下翻页。

  • 场景:当指令输出信息太长(如 cal 2015 或大量 find 结果),导致前面的内容被挤出屏幕时,可用此组合键往回查看。

    • [Shift] + [Page Up]:往上翻页。
    • [Shift] + [Page Down]:往下翻页。

以下是根据图片内容整理的 Linux 线上求助笔记,重点关注 --help 的使用:

4.3 Linux 系统的线上求助 man page 与 info page

4.3.1 指令的 --help 求助说明

绝大多数 Linux 指令在开发时都内置了帮助信息,使用 --help 选项即可快速查看用法。

command --help
[dmtsai@study ~]# date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

# 下面是主要的选项说明
-d, --date=STRING          display time described by STRING, not 'now'
-f, --file=DATEFILE        like -d once for each line of DATEFILE
... (中间省略) ...
-u, --utc, --universal     print or set Coordinated Universal Time (UTC)
--help                     display this help and exit
--version                  output version information and exit

# 下面是重要的格式 (FORMAT) 的主要项目
FORMAT controls the output.  Interpreted sequences are:
%%                         a literal %
%a                         locale's abbreviated weekday name (e.g., Sun)
%A                         locale's full weekday name (e.g., Sunday)
... (中间省略) ...

输出内容分析:

  • Usage (语法)

    • 显示了两种主要用法:

      1. date [OPTION]... [+FORMAT]:显示当前时间(配合格式化输出)。
      2. date [MMDDhhmm[[CC]YY][.ss]]:设置系统日期时间。
  • Options (选项) :列出了主要参数(如 -d, -u)的含义。

  • Format (格式) :解释了 +FORMAT 中可用的占位符(如 %a, %A),对应之前学过的 date +%Y/%m/%d

--help 的优缺点评价

  • 优点

    • 快速便捷:无需离开命令行即可查询。
    • 覆盖常用指令:对于 cal, date 等指令,信息足够清晰。
  • 局限性

    • 信息简略:对于复杂指令(如 bc),可能缺少详细用法说明(例如 bc --help 不会解释 scale 用法或 + - * / % 等运算符号)。
    • 适用范围:主要用于查询“指令”本身,不适合查询“文件格式”或更深层的配置说明。

剩余部分略

以下是根据图片内容整理的 Linux 文书编辑器 nano 的笔记:

4.4 超简单文书编辑器:nano

启动指令:直接在指令后加上文件名。

[dmtsai@study ~]$ nano text.txt

若文件存在则打开;若不存在则创建新文件。

进入 nano 后,界面主要分为三部分:

  1. 第一行:软件版本(如 GNU nano 2.3.1)与当前文件名(File: text.txt)。

  2. 中间区域:文本编辑区,光标所在位置。

  3. 底部两行快捷键功能说明列

    • 符号 ^ 代表键盘上的 [Ctrl] 键。
    • 例如 ^G Get Help 意思就是按 Ctrl + G 获取帮助。

nano 的功能主要通过组合键实现,以下是常用的几个:

快捷键功能说明
[Ctrl] + G取得线上说明 (Help),很有用!
[Ctrl] + X离开 nano (Exit)。
[Ctrl] + O储存档案 (Write Out)。
[Ctrl] + R从其他文件读入数据 (Read File),相当于粘贴。
[Ctrl] + W搜寻字串 (Where Is)。
[Ctrl] + C显示目前光标所在的行数与列数。
[Ctrl] + _直接输入行号,让光标快速移动到该行。
[Alt] + Y校正语法功能打开或关闭 (高亮显示)。
[Alt] + M支持鼠标来移动光标。

退出与保存流程

  1. 按下 [Ctrl] + X 准备离开

  2. 系统判断是否修改过内容

    • 若未修改:直接退出。

    • 若已修改:屏幕下方会出现提示:

      Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
      Y Yes
      N No           ^C Cancel
      
  3. 选择操作

    • N:不保存,直接离开(刚才写的东西会消失)。

    • Y:保存文件。此时屏幕下方会变成:

      File Name to Write: text.txt
      
      • 此处可以修改文件名。
      • 直接按 [Enter] :确认保存并离开 nano。

以下是根据图片内容整理的 Linux 正确关机方法笔记:

4.5 正确的关机方法

Linux 是多任务操作系统,直接断电(或按电源键强制关机)会导致严重后果:

  • 数据丢失:数据通常先缓存在内存(RAM)中,尚未写入硬盘。断电会导致这部分数据丢失。
  • 文件系统损坏:正在读写的文件可能因突然中断而损坏,导致系统无法启动。

在关机前,建议先确认系统状态,避免中断他人的工作:

  • 查看谁在线who
  • 查看网络连线netstat -a
  • 查看背景进程ps -aux
数据同步:sync
  • 作用:将内存中尚未写入硬盘的数据强制写入硬盘。

  • 重要性:在关机或重启前,务必执行此指令,最好执行多次。

    [root@study ~]# sync
    [root@study ~]# sync
    [root@study ~]# sync
    
惯用的关机指令:shutdown

这是最安全、最标准的关机指令,它会通知系统内的进程和服务进行关闭。

  • 基本语法

    /sbin/shutdown [-krhc] [时间] [警告讯息]
    
  • 常用参数

    • -k:不要真的关机,只发送警告讯息。
    • -r:重新启动 (reboot)。
    • -h:停机 (halt),即关机。
    • -c:取消已经执行的 shutdown 指令。
    • 时间:可以是 now (立刻), 10 (10分钟后), 20:25 (特定时间), +10 (10分钟后)。
  • 代码案例

    • 10分钟后关机并发送讯息

      [root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
      Broadcast message from root@study.centos.vbird (Tue 2015-06-02 10:51:34 CST):
      I will shutdown after 10 mins
      The system is going down for power-off at Tue 2015-06-02 11:01:34 CST!
      
    • 立刻关机

      [root@study ~]# shutdown -h now
      
    • 特定时间关机 (20:25)

      [root@study ~]# shutdown -h 20:25
      
    • 30分钟后重启

      [root@study ~]# shutdown -r +30
      
    • 只警告不关机

      [root@study ~]# shutdown -k now 'The system will reboot'
      
    • 取消关机

      [root@study ~]# shutdown -c
      
其他关机/重启指令

以下指令底层通常也是调用 systemctl,但在紧急情况下或习惯上常被使用:

  • reboot:重新启动。

  • halt:停止系统(屏幕可能保留信息,不一定切断电源)。

  • poweroff:切断电源关机(最彻底的关机)。

    [root@study ~]# sync; sync; sync; reboot
    [root@study ~]# halt      # 系统停止
    [root@study ~]# poweroff  # 系统关机,切断电源
    
使用管理工具 systemctl 关机

在 CentOS 7 及更新版本中,系统管理核心是 systemd,推荐使用 systemctl 进行关机操作。

  • 语法systemctl [指令]

  • 常用指令

    • halt:停止系统。
    • poweroff:关机(切断电源)。
    • reboot:重启。
    • suspend:休眠。
    [root@study ~]# systemctl reboot   # 系统重新启动
    [root@study ~]# systemctl poweroff # 系统关机
    

权限提示:关机/重启属于系统级操作,通常需要 root 权限。普通用户可能需要输入 root 密码或使用 sudo