终端
用户与主机交互,必然用到的设备。
物理终端
直接接入本机的显示器和键盘设备:console
。
虚拟终端
附加在物理终端之上的以软件的方式虚拟实现的终端,CentOS 6 默认启动 6 个 虚拟终端。
图形终端: 附加在物理终端之上以软件方式虚拟实现的终端,但额外会提供桌面环境:
设备文件路径:/dev/tty#
。
模拟终端
图形界面下打开的命令行接口,基于 ssh 协议 或 telnet 协议等远程协议打开的界面。
设备文件:/dev/pts/# [0, ∞)
。
查看当前的终端设备:tty
。
交互式接口
GUI
(1)X protocal
(2)window manager
(3)Desktop:
- GNOME(C,gtk)
- KDE(C++,qt)
- XFCE(轻量级终面)
CLI
(1)shell 程序种类:
- sh(bourn)
- csh
- tcsh
- ksh(korn)
- bash(bourn again shell),GPL
- zsh
(2)显示当前使用的 shell:
echo ${SHELL}
(3)显示当前系统使用的所有 shell:
cat /etc/shells
(4)命令提示符:prompt
命令提示符一般指的是:[root@localhost ~]#
。
prompt 分为两种:
- 管理员:#
- 普通用户:$
文件系统
文件路径
Windows 和 Linux 中的 2 种不同的路径格式分别如下:
(1)Window
D:\office\phpstudy\PHPTutorial\WWW\index.php
(2)Linux
/etc/sysconfig/network-scripts/ifcfg-nth0
文件有两种数据
(1)元数据(metadata)
(2)数据(data)
Linux 中的文件的规则
-
文件名严格区分字符大小写,例如
file.php
、File.php
和FILE.php
是 3 个不同的文件。 -
文件名可使用除了
/
以外的任意字符,不建议使用特殊字符。 -
文件名长度最长不能超过 255 个字符。
-
所有以
.
开头的文件都是隐藏文件,例如.ssh
、.tcshrc
、.local
。
路径
(1)绝对路径: 从根目录起始的路径。
(2)相对路径: 从当前位置起始的路径。
相对路径的表示方式:
- 以
./
符号开头:./sysconfig/network-scripts
- 直接省略
./
符号:sysconfig/network-scripts
当前目录(current directory)
也称作 工作目录 (working directory)
,使用 pwd
命令可以查看当前目录(printing working directory)。
家目录(home)
家目录是在多用户操作系统上包含该系统的特定用户的文件的文件系统目录。
LSB(Linux Standard Base)
LSB 是一套核心标准,它保证了 Linux 发行版同 Linux 应用程序之间的良好结合。有了这个标准的存在,众多 Linux 发行版的根目录下的文件夹大部分都是相似的。
shell 命令初识
命令分类
(1)按照系统相关的特性可分为以下两类:
- 文件系统相关
目录管理
文件管理
文件查看
文件编辑
- 系统管理相关
(2)按照命令自身特性可分为以下两类:
- 内建命令
由 shell 自带的,而且通过某命令形式提供,例如:cd
。
- 外部命令
在当前系统的某文件系统路径下有对应的可执行程序文件,例如 which
、whereis
。
shell 程序搜寻可执行程序文件的路径定义在PATH环境变量中:
echo $PATH
(3) 如何区分内部命令和外部命令
type COMMAND
运行命令
输入命令并回车,提请 shell 程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个进程或多个进程。
(1)命令格式:
COMMAND [OPTIONS...] [ARGUMENTS...]
(2)OPTIONS
一般用于启用或关闭命令的某个或某些特殊功能
- 短选项:-c,例如:-l, -h,多个短选项可命令使用,例如-l -h,可写作 -lh。
- 长选项:–word,例如:–long,–human–readable。
(3)ARGUMENTS
命令的作用对象(或者说生效对象),向命令提供数据。
(4)注意事项
多选项,以及多参数和命令之间都应该使用空白字符分割(可以是一个空白字符也可以是多个)。
取消命令执行:
Ctrl + C
。
命令帮助的获取
-
内部命令:
HELP COMMAND
-
外部命令:
(1)
COMMAND --help
或COMMAND -h
(2)使用手册(manual)
man COMMAND
(3)信息页
info COMMAND
(4)程序自身的帮助文档,例如:
README
、INSTALL
、ChangeLog
,一般位置在
/usr/share/doc/COMMAND-VERSION
。(5)程序官方文档
(6)发行版的官方文档
(7)Google
man
命令
作用:查看命令帮助手册
格式:man COMMAND
手册页所在目录:/usr/share/man
,手册文件文件如:man1、man2......man8
- man1:用户命令
- man2:系统调用
- man3:C 库调用
- man4:设备及特殊文件
- man5:配置文件格式
- man6:游戏
- man7:杂项
- man8:管理类的命令
注意:有些关键在不止一个章节中存在帮助手册:
要查看指定章节中的手册:man # COMMAND
man
命令的配置文件:/etc/man.config
指明新的手册文件的搜索位置:MANPATH /PATH/TO/SOMEWHERE
到指定位置下搜索 COMMAND
命令的手册并显示:man -M /PATH/TO/SOMEWHERE COMMAND
man
命令帮助手册中的段落说明:
NAME
:命令的名称
SYNOPSIS
:命令的简介
DESCRIPTION
:命令的具体描述
OPTIONS
:命令支持的选项
EXAMPLES
:命令的用法
AUTHUOR
:命令的授权人
REPORTING BUGS
:命令的报告BUG
SEE ALSO
:命令的参照
SYNOPSIS 中的符号说明:
[]
:可选内容
<>
:必选内容
a|b
:二选一(或多选一)
...
:同一内容可出现多次
使用 man 命令后的操作方法:
-
Space
、^V
、^f
、^F
向文件尾部做翻屏。 -
b
、^B
:向文件首部翻屏。 -
d
、^D
:向文件尾部翻半屏。 -
u
、^U
:向文件首部翻半屏。 -
Return
、^N
、e
、^E
、j
、^J
向文件尾部翻一行。 -
y
、^Y
、^P
、k
:向文件首部翻一行。 -
q
:退出。 -
#
:跳转至第#
行。 -
1G
:回到文件首部。 -
G
:翻至文件尾部
使用 man 命令后进行文本搜索:
/KEYWORD
:以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索(不区分大小写)
n:下一个
N:上一个
?KEYWORD
:以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索(不区分大小写)
n:下一个
N:上一个
常用命令
hash
命令
shell 搜寻到的外部命令的路径结果会缓存至 kv(key-value)储存中。
history
命令
管理命令历史,登录 shell 时,会读取命令历史文件中记录下的命令:~/.bash_history
登录进 shell 后新执行的命令只会记录在缓存中:这些命令会在用户退出时“追加”至命令历史文件中。
(1)选项
-a
:追加本次会话新执行的命令历史列表至历史文件中。
-c
:清空命令历史。
-d
:删除历史中指定的命令。
-w
:把历史列表中的命令追加至历史文件中。
history #
:显示最近#
条命令。
(2)快捷操作
!#
:调用历史中第#条命令。
!string
:调用历史中最近一个以string
开头的命令。
!!
:调用上一条命令。
(3)相关环境变量
定制 history 命令的功能,可以通过相关环境变量实现:
$HISTSIZE:shell 进程可保留的命令历史的条数。
$HISTFILE:持久保留命令历史的文件,默认为
~/.bash_history
。$HISTFILESIZE:保留命令历史的文件大小。
$HISTCONTROL:控制命令历史记录的方式,有 3 种值:ignoredups(忽略重复的命令)、ignorespace(忽略以空白字符开头的命令)、ignoreboth(同时忽略重复的命令和以空白字符开头的命令)。
修改环境变量的方式:
NAME=VALUE
(只对当前 shell 进程有效),例如:HISTCONTROL=ignoredups
(修改 HISTCONROL 的值为 ignoredups)。
注意
命令的重复执行有时候需要依赖于幂等性(多次操作,结果相同)。
(4)调用上一条命令的最后一个参数
ESC 键
+ . 键
或 !
+ $
例如:执行一条命令:
ls /etc/sysconfig/network-scripts/ifcfg-eth0
之后想cat
该文件输入
cat
之后,使用ESC 键
+. 键
后,屏幕中会直接显示cat /etc/sysconfig/network-scripts/ifcfg-eth0
或者输入
cat !$
也有相同效果。
pwd
命令
printing working directory,显示当前目录(工作目录)
cd
命令
change directory,切换目录。
格式:cd [/PATH/TO/SOMEDIR]
示例:
# 切换回家目录
cd 或 cd ~
# 切换至指定用户的家目录
cd ~USERNAME
# 切换回上次所在目录
cd -
cd
命令相关的环境变量:
$PWD
:当前工作目录
$OLDPWD
:上一次的工作目录
ls
命令
list,列出指定目录下的内容
命令格式:ls [OPTION]... [FILE]...
-a
:显示所有文件,包括隐藏文件。
-A
:显示除了.
和..
之外的所有文件,包括隐藏文件。
-l
:–long,长格式列表,即显示文件的详细属性信息。drwxr-xr-x 13 nginx nginx 4096 Mar 13 09:36 www
d
表示文件类型,其他文件类型还有:-
、b
、c
、d
、l
、s
、p
。
rwx
表示文件属主的权限。
r-x
表示文件属组的权限。
r-x
表示其他用户(非属主、数组)的权限。
13
表示文件被硬链接的次数。
nginx
第一个表示文件的属主,第二个表示文件的属组。
4096
表示文件文件的大小,单位是字节。
4096 Mar 13 09:36
表示文件最后一次被修改的时间。
-h
:–human-readable 对文件大小单位换算,换算后的结果可能是非精确值。
-d
:查看目录自身属性,而非其内部的文件列表。
-r
:reverse,按文件名倒序显示。
-R
:recursive,递归显示。
cat
命令
concatenate 文本文件查看工具。连接文件并显示在标准输出上,文本文件查看工具(尽量不要查看二进制文件,使用 file 命令可以知道是否是文本文件)
格式:cat [OPTION]... [FILE]...
-n
:给显示的文本行编号
-E
:显示行结束符$
tac
命令
文本文件查看工具。与 cat
命令相反,cat
命令是顺序显示文件,而 tac
是逆序显示文件,如下图:
file
命令
查看文件内容类型。
格式:file [FILE]...
echo
命令
用来显示一行文本。
格式:echo [SHORT-OPTION]... [STRING]...
-n
:不换行,直接在当前行输出结果。
-e
:让转译符生效,例如 \n 换行,\r 回车,\t 制表等,甚至可以设置颜色\033
STRING 可以使用引号,单引号和双引号均可用:
单引号:强引用,变量引用不会执行替换。
双引号:弱引用,变量引用会被替换。
注意: 变量引用的正规符号是 ${name}
,如下图:
shutdown
命令
关机或重启。
格式:shutdown [OPTIONS...] [TIME] [WALL...]
OTPIONS
-h
:halt
-r
:reboot
-c
:cancel
TIME
now
hh:mm
+m
+0 和 now 都是立刻关机
WALL
执行关机或重启操作前,通知给所有用户的信息
日期相关的命令
Linux时钟分为系统时钟
和硬件时钟
,系统启动时从硬件读取日期和时间信息,读取完成后,就不再与硬件相关联。
date
命令
显示系统时钟:date [OPTION]... [+FORMAT]
FORMAT:格式符
%F:以
2019-06-12
的格式显示年份。
%T:以20:54:24
的格式显示时分秒。
%Y:以2019
的格式显示时分秒。
%m:以06
的格式显示月。
%d:以12
的格式显示日。
%H:以20
的格式显示时。
%M:以54
的格式显示分。
%S:以24
的格式显示秒。
%s:以1560344256
的格式显示 unix 时间戳。
…
设定系统时钟:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
、
例如设置系统时钟为:2019-06-12 20:59:06
:
date 061220592019.06
hwclock
、clock
指令
显示或设定硬件时钟。
以 to 之前的时间为准,调整 to 之后的
-s:–hctosys:以硬件时间为准,调整系统时间与硬件时间相同
-w:–systohc:以系统时间为准,调整硬件时间与系统时间相同
cal 命令
显示日历。
格式:cal [options] [[[day] month] year]