Linux 系统组成和获取命令帮助

获取命令使用帮助详解

命令的语法通用格式

# COMMAND OPTIONS ARGUMENTS

发起一个命令:请求内核将某个二进制程序运行为一个进程。 程序 --> 进程 静态 --> 动态 (有生命周期)

命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件 多数程序文件都存放在: /bin /sbin /usr/bin /usr/sbin 安装的有可能在 /usr/local/bin /usr/local/sbin 普通命令: /bin /usr/bin /usr/local/bin 管理命令:/sbin /usr/sbin /usr/local/sbin

共享库 /lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 32bits 的库: /lib /usr/lib /usr/local/lib 64bits 的库 /lib64 /usr/lib64 /usr/local/lib64

绿色是可执行文件,青色是链接文件

命令必须遵循特定的格式规范:exe msi ELF(linux)

# 查看命令文件的格式详情
file /bin/ls

命令分为两类:

  • shell 程序自带的命令:内置命令(builtin)
  • 独立的可执行程序文件,文件名即命令名:外部命令

shell 程序是一个独特的程序,负责解析用户提供的命令,会去环境变量查找命令文件 环境变量 PATH: 从哪些路径中查找用户键入的命令字符串所对应的命令文件,查找次序是自左到右 echo $PATH

查看命令类型,内置还是外部命令 type COMMAND

OPTIONS 指定命令的运行特性

选项有两种表现形式

  • 短选项 -C,如 -l -d,注意有的命令选项没有-。同一个命令同时使用多个短选项,多数可合并
  • 长选项,--word,如 --help,--human-readable。长选项不能合并

有些选项可以带参数,叫做选项参数

ARGUMENTS: 命令的作用对象,命令对什么生效 不同的命令的参数格式不同,有些命令可同时带多个参数,多个之间以空白字符分隔。

ls /etc
ls /etc /var
le -l -d /var

获取命令的使用帮助 内部命令:help COMMAND

type type
help type

外部命令:

  1. 命令自带简要格式的使用帮助 COMMAND --help
  2. 使用手册 manual: ``

man

# ls 手册位置
ls /usr/share/man

man COMMAND

SECTION
NAME 功能性说明
SYNOPSIS 语法格式
DESCRIPTION: 描述
OPTIONS 选项
EXAMPLES
AUTHOR
BUGS
SEE ALSO 参考

SYNOPSIS [] 可选内容 <> 必须提供的内容 a|b 多选一 ... 同类内容可出现多个

使用手册:压缩格式的文件,有章节之分 /usr/share/man man1 man2

  1. 用户命令
  2. 系统调用
  3. C 库调用
  4. 设备文件及特殊文件
  5. 文件格式 (配置文件格式)
  6. 游戏使用帮助
  7. 杂项
  8. 系统工具及守护进程
~]# man CHAPTER COMMAND

注意:并非每个 COMMAND 在所有章节下都有手册

查看命令在手册哪些地方有。

~]# whatis COMMAND
其执行过程是查询数据库进行的
手动更新数据库:
~]# makewhatis

man 命令打开手册以后的操作方法 翻屏: 空格键,向文件尾部翻一屏幕 b: 向文件首部翻一屏幕 ctrl+d:翻半屏幕 down ctrl+u 上翻半屏 up 回车键 向文件尾部翻一行 k 向文件首部翻一行 G 跳至最后一行 #G 跳到指定行 1G 跳到第一行

文本搜索 /keyword 从文件首部向文件尾部依次查找,不区分字符大小写 ?keyword 从文件尾部向文件首部依次查找

n 与查找命令方向相同 N 与查找命令方向相反

退出 q: quit

选项 -M /PATH/TO/SOMEDIR 到指定位置目录查找命令手册并打开

练习:useradd 命令的用法

  • 1)添加用户 gentoo
  • 2)添加用户 slackware 要求指定其所用的 shell 为 /bin/tcsh
useradd -s /bin/tcsh slackware
id slaceware
tail -1 /etc/passwd # 查看最后一行,可以显示 shell 类型
  1. info COMMAND 获取命令的在线文档

  2. 很多应用程序都自带帮助文档 /usr/share/doc/APP-VERSION README 程序的相关的信息 INSTALL 安装帮助 CHANGES 版本迭代时的改动信息

  3. 主流发行版官方文档 http://www.redhat.com/doc

  4. 程序官方的文档:官方站点上的 Document

  5. 搜索引擎 keyword filetype:pdf keyword site:domain.tld

centeos 修改语言 https://www.jianshu.com/p/8dc24d5e893d

linux 文件系统

  1. 文件名名称严格区分字符大小写
  2. 文件可以使用除/以外的任意字符
  3. 文件名长度不能超过255字符
  4. 以.开头的文件为隐藏文件
    • . 当前目录
    • .. 当前目录的上一层目录

工作目录 working directory 家目录 home

常用基本命令实战应用

pwd

printing working directory 显示工作目录

cd

切换目录(change directory),用法:cd [/PATH/TO/SOMEDIR]

  • cd 不带参数,表示切回家目录 ~也表示家目录
  • cd ~
  • cd ~USERNAME: 切换至指定用户的家目录
  • cd - 上一次所在目录和当前目录来回切换,shell保存了相关的变量
    • PWD: 当前目录
    • OLDPWD: 上一次的工作目录

ls

ls: list 列出指定目录下的内容,用法是ls [OPTION]... [FILE]...

  • -a: 显示所有文件,包括隐藏文件,目录可以.开头,文件也可以.开头
  • -A: 显示除.和..之外的所有文件
  • -l: --long, 长格式列表,即显示文件的详细属性信息
    • -rw-r--r--, 1 root root 8957 10月 14 19:34 boot.log
      • -表示文件类型 - d b c l s p
      • rw-r--r--:
        • rw-: 文件属主的权限
        • r--: 文件属性的权限
        • r--: 其它用户(非属主、属组)的权限
      • 1: 数字表示文件被硬链接的次数
      • root: 文件的属主
      • root:文件的属组
      • 8957: 数字表示文件的大小,单位是字节
      • 10月 14 19:34: 文件最近一次被修改的时间
      • boot.log: 文件名
  • -h, --human-readable: 对文件大小单位换算,换算后结果可能为非精确值
  • -d: 查看目录自身而非其内部的文件列表,配合 -l 使用才有意义
  • -r: reverse 按逆序排序,文件名字母
  • -R: recursive 递归显示

cat

cat: concatenate 表示连接并显示文件内容, 文件文件查看工具

  • -n: 显示行号
  • -E: 显示行结束符$
cat /etc/fstab
cat /etc/passwd
cat /etc/issue

cat /etc/fstab /etc/passwd

tac 和 cat 一样,只是内容是逆序的

通过 file 命令可以看文件是不是文本文件,如:file /etc/fstab

file

file 查看文件内容类型,用法:file [FILE]...

echo

echo: 回显命令,语法是echo [SHORT-OPTION]... [STRING]...

  • -n: 不自动进行换行
  • -e: 让转义符生效 \b \v \t
# 显示颜色
echo -e "\033[31mhello\033[0m everyone"

其中,STRING 可以使用引号。

  • 单引号:"" 强引用,变量引用不执行替换 echo '$SHELL'。
  • 双引号:'' 弱引用,变量引用会被替换 echo "$SHELL"。

注意变量引用的正规符号 ${name}

shutdown

关机或重启命令,语法是shutdown [OPTIONS...] [TIME] [WALL...]

OPTIONS

  • -h: halt 和 -P, --poweroff 一样
  • -r: reboot
  • -c: cancel

TIME

  • now
  • +minutes: 多少分钟后
  • hh:mm: 几点几分

WALL

和wall命令一样,用于向每个终端发一个消息 wall "hello",默认会发送

~]# shutdown -h now
~]# shutdown -r +20 "hello goodbye"
Shutdown scheduled for Mon 2019-10-28 00:14:29 CST, use 'shutdown -c' to cancel.
~]# shutdown -c

Broadcast message from root@banli.linux (Sun 2019-10-27 23:54:42 CST):

The system shutdown has been cancelled at Sun 2019-10-27 23:55:42 CST!

shutdown/halt/poweroff/reboot 的区别

  • shutdown 以一种安全的方式关闭系统。所有登陆用户都可以看到关机信息提示,并且 login 将被阻塞。
  • halt命令,若系统的 runlevel 为 0 或 6 ,则关闭系统,否则以 shutdown 指令(加上 -h 参数)来取代。
  • poweroff命令用来关闭计算机操作系统并且切断系统电源。
  • reboot执行reboot指令可让系统停止运作,并重新开机。

init 0 关机,init 6 重启。

日期相关的命令

linux 系统启动时,从硬件读取日期和时间信息,读取完成后,就不再与硬件时间相关联。

  • 系统时钟
  • 硬件时钟

date 系统时钟

显示和设置系统日期格式,语法是date [OPTION]... [+FORMAT]

  • %F
  • %T
  • %Y
  • %m
  • %d
  • %H
  • %M
  • %S
  • %s 时间戳,从1970.1.1(unix元年)到命令执行时经历的秒数
~]# date
Mon Oct 21 00:51:45 CST 2019
~]# date +%F
2019-10-21
~]# date +%T
00:52:34
~]# date +%F +%T
date: extra operand ‘+%T’
Try 'date --help' for more information.

~]# date +'%F %T'
2019-10-21 00:22:56

设置日期时间:date [MMDDhhmm[[CC]YY][.ss]]

如果不写年,则表示计算机当前的时间年份。

~]# date 10271108
Sun Oct 27 11:08:00 CST 2019

[[CC]YY] 表示年,可以是2位或4位

clock/hwclock 硬件时钟

查询和设置硬件时钟。主板上有个纽扣电池给硬件供电,即使关机了。

~]# hwclock --set --date="2011-08-14 16:45:05"

hwclock 和 clock 是同一个命令。一个是硬连接、一个是软连接。

~]# which clock
/usr/sbin/clock
~]# file /usr/sbin/clock
/usr/sbin/clock: symbolic link to `hwclock'
~]# which hwclock
/usr/sbin/hwclock
~]# file /usr/sbin/hwclock
/usr/sbin/hwclock: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=f3cee5ecdad7f100e9e0a46ff922ec2c60abb6e6, stripped
  • -s, --hctosys: 根据硬件时间设置系统时间。
  • -w, --systohc: 根据系统时间设置硬件时间。

同步远程时间

ntp常用服务器:

  • 中国国家授时中心:210.72.145.44
  • NTP服务器(上海) :ntp.api.bz
~]# yum -y install ntpdate
~]# ntpdate -u ntp.api.bz

cal 日历

用法:cal [[month] year]

~]# cal 11 19
     November 19
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

课外作用,学习 which, whereis who w 命令