Linux命令与帮助

3.1 命令格式 cmd opt arg

COMMAND [OPTIONS...] [ARGUMENTS...]

3.1.1 options:选项

用于启用或关闭命令的某个或某些功能

  • 短选项:UNIX 风格选项,-c 例如:-l, -h
  • 长选项:GNU风格选项,--word 例如:--all, --human
  • BSD风格选项: 一个字母,例如:a

许多短选项都是长选项的缩写,比如 -a= --all

多选项可组合使用,以下三者等价:

ls -l --all
ls -al
ls -la

3.1.2 arguments:参数

命令的作用对象,比如:文件名、目录、用户名等

注意事项:

  • 多个选项以及多参数和命令之间使用空白字符分隔
  • 结束命令执行:Ctrl+C,Ctrl+DC是强制退出,D是正常退出
    因为某些命令开始之后会一直不停进行
  • 多个命令可以用 " ; " 符号分开
  • 一个命令可以用 \ 分成多行

3.2 命令提示符 prompt

**[root@localhost ~]# ** 用户名@主机名 ~ 表示此用户的home目录

  • **#表示管理员 **
  • $表示普通用户

命令提示符有固定的格式,而且可以自定义

显示提示符当前格式:echo $PS1 严格区分大小写!!!

默认值:[\u@\h \W]$

\e 控制符 也可写为\033(3137=七种字体颜色,4147=七种背景颜色)
\u 当前用户
\h 主机名简称
\H 主机名
\w 当前工作目录
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式
! 命令历史数

设置字符颜色格式为:

\[\e[F;B;Sm\]    #其中e与033等效  #FBS不论顺序,不必须出现
#对各个元素颜色进行设置
\[\e  [1;36m\]  [  
\[\e  [0m\]     \t 
\[\e  [1;32m\]  \u 
\[\e  [31m\]    @\h
\[\e  [1;37m\]  \W
\[\e  [1;35m\]  ]
\[\e  [0m\]          #标准结尾   若结尾在最后,则对提示符也生效
\\$   #\$表示提示符,第一个\用来对第二个进行转义

centOS为了持久保存提示符格式,需要保存文件在 /etc/profile.d/目录,文件名.sh

  • 命令 nano /etc/profile.d/env.sh 执行
  • 进入nano界面,将编写好的格式粘贴进去,直接ctrl+X退出会提示是否保存
  • 按Y保存,然后按enter退出
  • cat /etc/profile.d/env.sh检查是否已经写好此文件
  • exit退出,重新登录看是否有效

Ubuntu修改提示符对应每个账户是独立的

Ubuntu切换成root的操作如下:

  • 命令sudo -i
  • 输入当前用户的密码(而不是root的密码)

3.3 简单常用命令

3.3.1 时间设置

Linux分两种时间:

  • 系统时钟(date):由Linux内核通过CPU的工作频率进行的
  • 硬件时钟(clock):主板有自己单独的电池供电,保证记录时间

相关命令:

  • 自定义修改系统时间:date MMDDhhmmYYYY . ss
  • -s, --hctosys 以硬件时钟为准进行校正(命令为clock -s)
    -w, --systohc 以系统时钟为准进行校正(命令为clock -w)
  • 若不知道标准时间,ping一台联网的机器,
    同步远程服务器的时间:ntpdate IP 即可同步系统时间,再使用clock -w即可同步硬件

3.3.2 查看硬件与软件

  • CPU—— lscpu 查看Model name即为型号
  • 内存—— free -h 查看mem total
    命令 init 3 暂时关闭图形界面,大大节省内存
  • 网卡—— ip a
    安装OS设置网卡为桥接模式,才能被其他人连接,NAT无法被连接!!!
    看到多个网卡,lo与virbr0均为虚拟网卡,ens为物理网卡
  • 硬盘—— lsblk
  • OS版本—— cat etc/os-release查看pretty name(Centos7以上和Ubuntu可用)
    redhat系列通用命令:cat /etc/redhat-release

3.3.3 关机与重启

关机:

  • halt
  • poweroff

重启:reboot

  • -f:强制重启(不调用shutdown)
  • -p:切断电源

关机或重启:shutdown

shutdown [OPTION]... [TIME] [MESSAGE]

选项:-r=reboot -h=halt -c=cancel

TIME:无指定默认相当于+1min now: 立刻,相当于+0
+#:相对时间,表示多少min之后
hh:mm 表示绝对时间,在指定时间点生效

3.3.4 文本编辑 nano

nano
nano + 文件直接进入编辑,如:

nano .bashrc

只能修改文本文件txt,不能用于二进制

3.3.5 会话管理 session

命令行的典型使用方式是,打开一个终端窗口,在里面输入命令
用户与计算机的这种临时的交互,称为一次"会话"(session)

打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完

为了防止执行中的程序意外中断,会话与窗口可以"解绑":需要使用终端复用器软件

终端复用器 screen

此软件需要自行安装:

[root@centos7 ~]#yum -y install screen

screen命令常见用法:

  • 显示所有已经打开的screen会话 screen -ls
  • 创建新的screen会话 screen –S [SESSION]
  • 加入某个screen会话 screen –x [SESSION](用于远程协助)
  • 恢复某screen会话 screen -r [SESSION]
  • 剥离当前screen会话 Ctrl+a,d(用于远程协助)
  • 退出并关闭screen会话 exit

远程协助步骤:(B需要向A求助)

  • B提供目标服务器的IP和账户与密码,A使用shell连接登录
  • B新建screen会话——screen –S help(前提screen已经安装好)
  • A加入此会话——screen –x help
  • 此时两者画面同步,可看到公用窗口,A即可进行协助
  • 结束后,A首先应该退出此次会话,使用 Ctrl+a,d进行剥离(先按Ctrl+a再按d)
    (若直接关机或者注销,将会同时影响B)

终端复用器 tmux(也需要自行安装)

[root@centos8 ~]#dnf -y install tmux

tmux 窗口有大量的快捷键,所有快捷键都要通过前缀键唤起(默认的前缀键是 Ctrl+b)
先按下Ctrl+b ,快捷键才会生效

新建会话 第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推

为了方便直观,一般会对新建的会话重命名

tmux new -s <session-name>

一些常用命令:(还要按会话session、窗口windows、窗格panes分类)

一个会话可以有多个窗口,一个窗口可以有多个窗格

  • 新建会话 tmux
  • 查看当前所有的 Tmux 会话 tmux ls(快捷键Ctrl+b,s)
  • 重新接入某个已存在的会话 tmux attach -t <session-name>
  • 切换到指定名称的会话 tmux switch -t <session-name>
  • 杀死某个会话 tmux kill-session -t <session-name>
  • 新建窗口 tmux new-window(快捷键Ctrl+b,c)
  • 新建一个指定名称的窗口 tmux new-window -n <window-name>
  • 上下分窗格 tmux split-window(ctrl+b,")
  • 左右分窗格 tmux split-window -h(ctrl+b,%)
  • 窗格之间切换 ctrl+b,再加方向键
  • 关闭当前窗格 Ctrl+b ,x
  • 当前窗格全屏显示 Ctrl+b, z(再使用一次会变回原来大小)
  • 将当前窗格拆分为独立窗口 Ctrl+b, !
  • 将当前会话与窗口分离 tmux detach(快捷键Ctrl+b,d)
  • 切换到指定名称的窗口 tmux select-window -t <window-name>
  • 切换到指定编号的窗口 tmux select-window -t <window-number>

列出所有快捷键及其对应的 Tmux 命令:
tmux list-keys

列出所有 Tmux 命令及其参数:
tmux list-commands

3.3.6 输出信息 echo

echo 命令可以将后面跟的字符进行输出,也能输出变量的值(echo $变量)

输出字符串的命令:

echo [-neE] [字符串]

选项:

  • -E (默认)不支持 \ 解释功能

  • -n 不自动换行

  • -e 启用 \ 字符的解释功能

    启用命令选项-e,若字符串中出现以下字符,则特别加以处理
    而不会将它当成一般文字输出

    \a 发出警告声
    \b 退格键
    \c 最后不加上换行符号
    \e escape,相当于\033
    \n 换行且光标移至行首
    \r 回车,即光标移至行首,但不换行
    \t 插入tab
    \ 插入\字符
    \0nnn 插入nnn(八进制)所代表的ASCII字符
    \xHH 插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

3.4 命令类型 type

shell中可执行的两类命令(本质区别在于,内部命令集成在shell中)

  • 内部命令:由shell自带的,而且通过某命令形式提供(enable或者help)
  • 外部命令:在文件系统路径下有对应的可执行程序文件($PATH或者hash)

区别某个命令属于哪种:type COMMAND

某些命令可能同时属于两者,如echo:

type -a echo
echo is a shell builtin
echo is /usr/bin/echo

因为shell不止一种,上述属于shell的意思是属于bash,其他shell未必有

命令 help 可以列出所有内部命令以及其帮助!!

enable 管理内部命令

  • enable cmd 启用内部命令
  • enable –n cmd 禁用内部命令(禁用是临时的,重启即失效
  • enable –n 查看所有禁用的内部命令

命令 ls /bin/ 列出此目录下所有文件(即为所有的外部命令)

查看某个外部命令文件路径:

  • which cmd
  • whereis cmd

执行外部命令过程:系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径缓存到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,若找不到,则无法执行。

[14:11:27root@ubuntu1804~]#echo $PATH    #查看PATH路径有哪些
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

常用的外部命令缓存在内存中的Hash缓存表

若路径被移动,则hash缓存信息错误,寻找不到,命令将无法执行
此时应该删除或者清空hash

  • hash 显示hash缓存
  • hash -d name 清除name缓存
  • hash -r 清除缓存
  • hash -p path name 将命令全路径path起别名为name

别名alias:对命令进行自定义,达到简化效果

  • 显示当前shell进程所有可用的命令别名:alias
  • 定义别名NAME,其相当于执行命令VALUE:alias NAME='VALUE'
  • 撤消别名:unalias cmd
    unalias -a 取消所有别名

注意:在命令行中定义的别名,仅对当前shell进程有效(重启失效)
如果想永久有效,要定义在配置文件中
方法一:nano .bashrc进入,将alias内容贴入对应位置,保存退出
方法二:直接命令:echo "alias free='free -h'" >> .bashrc

编辑配置之后,新配置不会立即生效
应让bash进程重新读取配置文件:命令 . .bashrc或者source .bashrc

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc

若别名与存在的命令冲突,优先级为——别名 > 内部 > 外部hash > 外部$PATH

若存在冲突,又想跳过别名直接执行原命令:反斜、单引、双引、command、全路径

  • \ALIASNAME
    “ALIASNAME”
    ‘ALIASNAME’
    command ALIASNAME
    /path/commmand

3.5 常用简单快捷键

tab键可以实现命令及路径等补全,提高输入效率,避免出错

3.5.1 Tab命令补全

可用于外部命令和文件名、目录名

bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令

注意:用户给定的字符串只有惟一对应的命令则直接补全,否则,再次Tab会给出列表
也可以利用此功能,双击tab查看所有可能的命令

路径补全:把用户给出的字符串当做路径开头,唯一则直接补全,否则再次Tab给出列表

双击功能:

command 2Tab 所有子命令或文件补全
string 2Tab 执行以string开头的命令
/ 2Tab 显示所有根目录下一级目录,包括隐藏目录
./ 2Tab 当前目录下子目录,包括隐藏目录
星号 2Tab 当前目录下子目录,不包括隐藏目录
~ 2Tab 所有用户列表
$ 2Tab 所有变量
@ 2Tab /etc/hosts记录 (centos7不支持)
= 2Tab 相当于ls –A (centos7不支持)

3.5.2 bash的快捷键

Ctrl + L 清屏 = clear

Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出

Ctrl + a 光标移到命令行首 = home
Ctrl + e 光标移到命令行尾 = end

Alt + r 删除当前整行
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
......

3.6 字符集和编码

charset是character set的简写,即字符集

encoding是charset encoding的简写,即字符集编码,简称编码

编码

  • ASCII码
    上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,即ASCII码
    ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为0

  • Unicode
    为了表示世界上所有语言中的所有字符,每一个符号都给予一个独一无二的编码数字
    Unicode 仅仅只是一个字符集,规定了每个字符对应的二进制代码,如何存储则没有规定

    UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,可变长存储

查看当前编码:echo $LANG

3.7 获得帮助 help

获取帮助的能力决定了技术的能力!

获取帮助的渠道:

  • whatis
  • command --help
  • man and info
  • /usr/share/doc/
  • Red Hat documentation
  • 其它网站和搜索

3.7.1 whatis

whatis 使用数据库来显示命令的简短描述

刚安装系统后不可立即使用whatis,需要手动制作数据库才能生效

#CentOS 7 版本以后
mandb
#CentOS 6 版本之前
makewhatis

举例:

[root@centos8 ~]#whatis ls
ls (1)        - list directory contents
ls (1p)       - list directory contents(1p类型表示开发相关)

3.7.2 查看命令的帮助

内部man,外部 --help

内部命令:

  • help CMD
  • man bash(查看所有内部命令)

外部命令和软件:

  • COMMAND --help 或 COMMAND -h
  • 使用手册 man COMMAND
  • 信息页 info COMMAND
  • 程序自身的帮助文档 README INSTALL ChangeLog
  • 程序官方文档 官方站点:Documentation
  • 发行版的官方文档

3.7.3 help命令

--help或-h 选项:显示常用的绝大多数用法总结和参数列表

范例:

[root@CentOS8 ~]#date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

格式说明:
[ ] 表示可选项
CAPS或 <> 表示变化的数据???????
... 表示一个列表,即可以跟多个选项
x |y| z 的意思是“ x 或 y 或 z ”
-abc的意思是-a -b –c
{ } 表示分组

1、显示当前时间,格式:2016-06-18 10:20:30

[root@CentOS8 ~]#date 061810202016.30
Sat Jun 18 10:20:30 CST 2016

2、显示前天是星期几

date --help可知:
+%A   locale's full weekday name (e.g., Sunday)
+%u   day of week (1..7); 1 is Monday

[root@CentOS8 ~]# date -d '-2 day' +%A
Sunday

3、创建一个新文件,命名为昨天的日期

#使用$()和``两种方式都可      #需要注意单引号与反引号区别!!!单引号忽略一切
[root@CENTOS7 data]#touch `date -d '-2 day' +%F`.log
[root@CENTOS7 data]#ls
2020-07-19.log
[root@CENTOS7 data]#touch $(date -d '-1 day' +%F).log
[root@CENTOS7 data]#ls
2020-07-19.log  2020-07-20.log

3.7.4 man命令

man 提供命令帮助的文件,手册页存放在/usr/share/man

man页面分组为不同的“章节”,统称为Linux手册:
命令man # man可选择进入某章

man 5 man  #表示直接进入第五章内容

1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux 内核API

在man的详情页面,使用 / 字符可搜索关键字
/KEYWORD 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索
不区分字符大小写
n: 下一个 N:上一个

man 帮助段落说明:

NAME 名称及简要说明
SYNOPSIS 用法格式说明
[ ] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
... 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考

对于某个关键词:
列出与之相关的所有帮助 man -a keyword
搜索与之相关的所有命令 man -k keyword

man命令的配置文件:配置文件定义了帮助文件所在的目录

centos6之前:/etc/man.config
centos7之后:/etc/man_db.conf

范例:

[root@CentOS8 ~]#whatis date
date (1)             - print or set the system date and time
date (1p)            - write the date and time
#此时即可知道date是第一章的内容(p后缀表示开发相关,ssl后缀表示子命令)
#若有多个章节,可以指明第几章直接进入
man [章节] keyword

登录前提示语:issue,编辑文件 /etc/issue

登录后提示语:motd,编辑文件 /etc/motd或者 /etc/motd.d/file

1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间

[root@CENTOS7 ~]#cat /etc/issue
\S
Kernel \r on an \m
#此处显示不是用命令实现,通过man命令查看具体指引,最终找到mingetty相关介绍
ISSUE ESCAPES
       mingetty recognizes the following  escapes  sequences  which  might  be
       embedded in the /etc/issue file:

       \d     insert current day (localtime),               #当前日期
       \l     insert line on which mingetty is running,     #登录终端号
       \m     inserts machine architecture (uname -m),      #CPU架构
       \n     inserts machine’s network node hostname       #主机名
       \o     inserts domain name,                          #域名
       \r     inserts operating system release (uname -r)   #内核版本
       \t     insert current time (localtime),              #当前时间
       \s     inserts operating system name                 #操作系统
       
#因此进入issue文件修改加入\l,\n,\t即可

2、设置今天22:30自动关机,并提示用户

[root@CENTOS7 ~]#at 10:30 pm Jul 21
at> poweroff         
at> <EOT>
job 1 at Tue Jul 21 22:30:00 2020
[root@CENTOS7 ~]#at -l
1   Tue Jul 21 22:30:00 2020 a root

3.7.5 info命令

info适合通用文档参考 没有参数

info CMD

导航info页:

方向键、PgUp、PgDn 导航
Tab键 移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入 选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字 文本搜索
q 退出 info

3.7.6 Linux系统自带文档

Applications -> documentation->help(centos7)

System->help(centos6)

3.7.7 命令自身提供的官方使用指南

/usr/share/doc目录

多数安装了的软件包的子目录,包括了这些软件的相关原理说明

用 ll 显示列表,用cat查看内容

ll /usr/share/doc/CMD

sz 命令将文件发送到Windows

3.7.8 系统及第三方应用官方文档

  • 软件官网:

http://httpd.apache.org

http://www.nginx.org

https://mariadb.com/kb/en

https://dev.mysql.com/doc/

http://tomcat.apache.org

http://www.python.org

  • 红帽知识库和官方在线文档:

http://kbase.redhat.com

http://www.redhat.com/docs

http://access.redhat.com

https://help.ubuntu.com/lts/serverguide/index.html

3.7.9 网站和搜索

http://tldp.org

http://www.slideshare.net

http://www.google.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。