Linux:命令的构成,基础命令的操作,几个重要的热键,--help man page帮助

命令行模式下命令的执行

其实我们都是通过程序再跟系统做沟通,窗口管理器或命令行模式都是一组或一个程序在辅助我们所想要完成的任务。命令行模式登录后所运行的程序被称为 壳(shell) .。

开始执行命令

[nero@study ~]$ command [-options] parameter1 parameter2 ....
  1. 一行命令中第一个输入的部分绝对是命令,或可执行文件(如shell脚本)
  2. command 为命令的名字,就像改变工作目录的命令 cd
  3. 中括号[]并不存在实际的命令中,表示是可选的,而加入选项设置时,通常选项前会带有 - 号,例如: -h 有时候会使用选型的完整全名,使用-- 就像 --help
  4. parameter1 parameter2为依附在选项后面的参数,或是comment的参数
  5. 命令、选项、参数等这几个东西中间以空格来区分,无论空几个shell都视为一格,所以空格时很重要的
  6. 按下回车。执行命令
  7. 命令行太长的时候,可以使用反斜杠来转义回车键,注意,反斜杠后就立刻接着其他字符才能转义
  8. 在Linux中,区分大小写的,

语系的支持

很多时候你会发现,你输入的命令时乱码的,终端再默认情况下,是无法支持以中文编码输出的数据,所以我们要改变支持的语系。

[nero@study ~]$ locale  # 语言语系的输出
LANG=zh_CN.UTF-8   # 当前语系,简体中文utf-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"  # 时间方面的语系
LC_COLLATE="zh_CN.UTF-8"   # 这些是许多信息的的蔬菜使用的特被的语系
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
[nero@study ~]$ date
20200516日 星期六 21:21:03 CST
[nero@study ~]$ LANG=en_US.utf8 # 改变语系为英文语系,LANG只于输出信息有关,若需要更改其他不同的信息要设置LC——ALL
[nero@study ~]$ locale
LANG=en_US.utf8                           # 当前语系就改变了
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
[nero@study ~]$ date           # 输出也不一样了
Sat May 16 21:23:41 CST 2020
# 但是这些设置是一次性的,注销linux后,就没用了

基础命令的操作

  • 显示日期于时间的命令:date
    如果想使用格式化输出时间
[nero@study ~]$ date +%Y/%m/%d
2020/05/16
[nero@study ~]$ date +%H:%M
21:33
  • 显示日历的命令:cel cal [month] [year]
[nero@study ~]$ cal 5 2020
      May 2020      
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16 # 这个16其实是标记的。。。
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
  • 简单好用的计算器:bc,实际上我们就进入bc这个软件的工作环境中了。
[nero@study ~]$ bc # 进入环境
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
10%3    # 从这里开始输入
1
10/100 # 默认仅输出整数
0
scale = 3  # 使用这个来输出小数的位数
10/100
.100          # 是不是出来啦
quit   # 集的离开软件环境

所以在命令行模式里执行命令就有两种情况,一种是交互式,一种是进入命令的环境,直到命令结束才回到命令行界面的环境

几个重要的热键[Tab] [Ctrl] -c [Ctrl]-d

我们命令行模式里面具有很多的功能组合建,这些按键可以辅助我们进行命令的编写和程序的中断,

  • [Tab]
    这个tab 按键算是linux 的Bash shell 最棒的功能之一,它具有命令补全与文件补齐的功能,重点就是,可以避免我们打错命令或文件名。
[nero@study ~]$ ca     # 这里连续按下两次tab 按键,然后就会输出所有ca开头的命令
cacertdir_rehash     cal                  capsh
cache_check          ca-legacy            captoinfo
cache_dump           calibrate_ppa        case
cache_metadata_size  caller               cat
cache_repair         canberra-boot        catchsegv
cache_restore        canberra-gtk-play    catman
cache_writeback      cancel               
cairo-sphinx         cancel.cups 
[nero@study ~]$ date --  # 按两下代表了参数 选项补全
--date        --help        --reference=  --rfc-3339=   --universal
--date=       --iso-8601    --rfc-2822    --set=        --version

所以,tab在第一个子段的后面,就是命令补全,在第二个子段后面,就是文件补全,如果安装了bash-completion软件,在某些命令后面使用tab 可以进行选项/参数补全的功能。

  • [ctrl]+c 按键
    中断目前的程序,
  • [ctrl]+d 键盘输入结束,另外它也可以取代exit的输入,例如如果你想直接离开命令行模式,可以直接按下这个组合健来离开(相当于输入了exit)
  • [shift]+{[Page UP][Page Down]} 如果你在纯命令行的界面中执行某些命令,这个命令的输出信息相当长,所以导致前面的部分已经不再目前的屏幕中,所以你想要回头去看一看输出的信息,这两个组合按键就是向上向下翻译,,,跟鼠标的滚轮差不多吧,

命令的 --help求助说明

[nero@study ~]$ g  # 安两下tab,
Display all 236 possibilities? (y or n) # 光g开头的命令就有236个诶,,

背是不可能的,,,实际上,几乎linux上面的命令,在开发的时候,开放在就将可以使用的命令语法和参数写入命令操作的过程中,你可以使用【–help】这个选项来对命令进行一个大致的了解。

[nero@study ~]$ date --help
用法:date [选项]... [+格式]       # 基本的语法
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]     # 设置时间的语法
Display the current time in the given FORMAT, or set the system date.
    # 下面就是主要的选项说明
Mandatory arguments to long options are mandatory for short options too.
  -d, --date=STRING         display time described by STRING, not 'now'
  -f, --file=DATEFILE       like --date once for each line of DATEFILE
  -I[TIMESPEC], --iso-8601[=TIMESPEC]  output date/time in ISO 8601 format.
# -------------省略-------------------
  -u, --utc, --universal    print or set Coordinated Universal Time (UTC)
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

给定的格式FORMAT 控制着输出,解释序列如下: # 重要格式的用法

  %%	一个文字的 %
  # ---------------省略---------------
  %Z			按字母表排序的时区缩写 (例如,EDT)

默认情况下,日期的数字区域以0 填充。    
The following optional flags may follow '%':

  -  (hyphen) do not pad the field
  _  (underscore) pad with spaces
  0  (zero) pad with zeros
  ^  use upper case if possible
  #  use opposite case if possible

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的
表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。
# 下面的就是重要的范例
Examples:
Convert seconds since the epoch (1970-01-01 UTC) to a date
--------------------------------
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告date 的翻译错误
要获取完整文档,请运行:info coreutils 'date invocation'

首先一开始是执行命令的语法(Usage),这个date有两种基本语法,一种是直接执行并且取得日期返回值,可以+FORAMAT的方式来显示。至于另一种方式,是格式化显示时间。下面就是主要的选项,例如-d的意义等,后续又出现了+FORMAT的用法。

基本上如果是命令,可以通过这个简单的[–help] 来快速的获得你需要的选项,和说明

同样通过[cal --help]也可以得到相同的解释,通常[–help]用在协助你查询你知道的命令所具有的参数,那些你都不知道的命令,或者是文件的格式,就要通过[man page] 命令

man page

在终端输入[man date] 就可以得到详细的操作说明了,在里面,可以空格翻页,按下q 离开,,出现的这个屏幕就是man page

我们在第一行可以看到[DATE (1)] ,DATE就是命令的名称, (1) 代表了一般用户可以使用的命令,

代号 意思
1 用户在shell环境中可以操作的命令或可执行的文件
2 系统内核可调用的函数和工具等
3 一些常用的函数和函数库,大部分是C的函数库
4 设备文件的说明,通常在/dev 下的文件
5 配置文件或是某些文件的格式
6 游戏。。。
7 惯例与协议等,例如linux 文件系统,网络协议等
8 系统管理员可以使用的命令
9 跟内核有关的文件

在我们查看man page时,就可以根据数字,知道该命令/文件所代表的基本意义,就像执行[man null] 得到[NULL 4] 也就是说,null这个东西是个设备文件

man page以NAME开始,SEE ALSO来结束,大致分成下面几部分。

代号 说明
NAME 简短的命令,数据名称说明
SYNOPSIS 简短的命令语法简介 synopsis
DESCRIPTION 较为完整的说明,这部分要仔细看 description
OPTIONS 针对SYNOPSIS部分中,列举可用的选项说明
COMIMANDS 当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令
FILES 这个程序或数据所使用或参考或连接的某些文件。
SEE ALSO 可以参考跟这个命令或数据有相关的其他说明
EXAMPLE 一些可以参考的范例

在man page里,可以在任何时候使用[/word] 来查找关键词。[?word] 是向上查找关键词。,[n,N] 利用/ or ?来查找关键词时,可以使用n来继续下一个查找。用N 向上找。

查找特定命令/文件的 man page 说明文件

某些情况下,你可能知道使用某些特定的命令或是修改某些特定的配置文件,但忘记了改命令的完整名字,就可以使用 man 这个命令

[nero@study ~]$ man -f man # 查询一下跟man这个命令相关的文件
man (1)              - an interface to the on-line reference manuals
man (1p)             - display system documentation
man (7)              - macros to format man pages

-f 这个选项可以获得更多与man 的相关信息。这里有三个说明文件,可以使用man 1 man查看相关说明

输入 man man ,取出的数据跟查找的顺序有关,查找的顺序记录在/etc/mam_db.conf 这个配置文件里。一般来说通常是找到那个数字较小的,所以man man 与 man 1 man 相同

除此之外,我们还可以利用关键字找到更多的说明文件数据。上面的[man -f man]输出的,左边就是这个命令(或文件)以及该命令所代表的意义(就是那个数字),右边:这个命令的简易说明。

当使用[man -f 命令] 时,就会找到数据中左边那个命令(或文件)的完整名字,有一点不同也不行.

[nero@study ~]$ man -k man
bpf (2)              - perform a command on an extended BPF map or program
bsd_signal (3)       - signal handling with BSD semantics
cproj (3)            - project into Riemann Sphere
cprojf (3)           - project into Riemann Sphere
-----省略很多行-------------------------

这个命令可以将只要有 man 这个字眼的说明文件都提取出来

将真的。。。在linux 下打字我快吐了,,,,,太不习惯了,,,,,而且一片一片的英文文档,,,恶心,,而且这框框还那么丑,,,恶心,,,,还不能自己改一下字体行间距什么的,,,,,恶心,,,,

猜你喜欢

转载自blog.csdn.net/weixin_46192930/article/details/106165097