本章概要
- 用户登录
- 终端
- Shell介绍
- 执行命令
- 简单命令
- Tab键补全
- 命令行历史
- bash快捷键
- 使用gnome-terminal
- whatis
- command--help
- manandinfo
- 本地帮助文档/usr/share/doc/
- 官网在线文档
- 其它网站和搜索
用户登录
- root用户
一个特殊的管理帐户
也被称为超级用户
root已接近完整的系统控制
对系统损害几乎有无限的能力
除非必要,不要登录为root - 普通用户
权限有限
造成损害的能力比较有限
终端类型terminal
- 设备终端
键盘鼠标显示器 - 物理终端(/dev/console )
控制台console - 虚拟终端(tty:teletypewriters,/dev/tty# #为[1-6])
tty可有n个,Ctrl+Alt+F[1-6] - 图形终端(/dev/tty7 )startx, xwindows
CentOS 6: Ctrl + Alt + F7
CentOS 7: 在哪个终端启动,即位于哪个虚拟终端 - 串行终端(/dev/ttyS# )
ttyS - 伪终端(pty:pseudo-tty,/dev/pts/# )
pty, SSH远程连接 - 查看当前的终端设备命令:#tty
交互式接口
- 交互式接口:启动终端后,在终端设备附加一个交互式应用程序
- GUI:Graphic User Interface
X protocol, window manager, desktop
Desktop:
GNOME (C, 图形库gtk),
KDE (C++,图形库qt)
XFCE (轻量级桌面) - CLI:Command Line Interface
shell程序:sh(bourn 史蒂夫·伯恩)cshtcshksh(korn)bash (bourn again shell)GPL zsh
shell
- Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
- 也被称为LINUX的命令解释器(command interpreter)
- shell是一种高级程序设计语言
bash shell
- GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容
- CentOS默认使用
- 显示当前使用的shell
${SHELL} - 显示当前系统使用的所有shell
cat /etc/shells[root@centos7 ~]#echo $SHELL /bin/bash [root@centos7 ~]#cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
命令提示符
- 命令提示符:prompt
[root@localhost~]#
# 管理员$ 普通用户 - 显示提示符格式
[root@localhost~]#echo $PS1 - 修改提示符格式
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
\e \033 \u 当前用户
\h 主机名简称 \H 主机名
\w 当前工作目录 \W 当前工作目录基名
\t 24小时时间格式 \T 12小时时间格式
\! 命令历史数 \# 开机后命令历史数
执行命令
- 输入命令后回车
提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来 - 在shell中可执行的命令有两类
内部命令:由shell自带的,而且通过某命令形式提供
help 内部命令列表
enable cmd启用内部命令
enable –n cmd禁用内部命令
enable –n 查看所有禁用的内部命令
外部命令:在文件系统路径下有对应的可执行程序文件
查看路径:which -a |--skip-alias; whereis - 区别指定的命令是内部或外部命令
type COMMAND
执行外部命令
- Hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率 - hash常见用法
hash 显示hash缓存
hash –l 显示hash缓存,可作为输入使用
hash –p path name 将命令全路径path起别名为name
hash –t name 打印缓存中name的路径
hash –d name 清除name缓存
hash –r 清除缓存
注意:如果在将外部命令执行过一次的情况下,把该命令的路径进行更改,那么该命令将无法执行。
原因:因为在执行命令,shell会首先查看hash缓存,会根据缓存中的路径执行该命令,但此时该命令的路径已经改变,因此会发生错误。
解决方法:清除缓存即可
命令别名
- 显示当前shell进程所有可用的命令别名
alias - 定义别名NAME,其相当于执行命令VALUE
alias NAME='VALUE' - 在命令行中定义的别名,仅对当前shell进程有效
- 如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc - 编辑配置给出的新配置不会立即生效
- bash进程重新读取配置文件
source /path/to/config_file
. /path/to/config_file - 撤消别名:unalias
unalias[-a] name [name ...]
-a 取消所有别名 - 如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
"ALIASNAME"
'ALIASNAME'
command ALIASNAME
/path/commmand
注意:别名、内部命令、外部命令优先级:从大到小分别是别名、内部命令、外部命令
命令格式
- COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能
短选项:-c 例如:-l, -h
长选项:--word 例如:--all, --human-readable
参数:命令的作用对象,比如文件名,用户名等 - 注意:
多个选项以及多参数和命令之间使用空白字符分隔
[root@centos7 ~]#ls /etc/fstab /etc/issue
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用;符号分开[root@centos7 ~]#ls /etc/fstab;cat /etc/issue /etc/fstab \S Kernel \r on an \m
一个命令可以用\分成多行
[root@centos7 ~]#host\ > na\ > me centos7.localdomain
日期和时间date
- linux系统的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板 - 相关命令:
date 显示和设置时间和日期
date -u 显示格林尼治时间
date 月日时分年秒(时间格式) 设置时间
date +%Y%m%d或+%F 显示年月日
date +%H%M%S或+%T 显示时分秒
date +“%F %T” 选项带有空格,需用引号
date -d '-2 day' 显示前天时间
date -d '2 day' 显示后天时间
date -d '-2 day' +%F 只显示前天的年月日
date -d '-2 day' +%a(或%u) 只显示前天是星期几
date -f 文件 批量处理文件
date -d "具体日期" +%s 将1970年1月1日到该具体日期的时间转换为秒 date -d @秒数 +"%F %T" 把秒数转换为时间和日期
clock,hwclock 显示硬件时间
-s 以硬件时间为准,更改系统时间
-w 以系统时间为准,更改硬件时间 - 时区:/etc/localtime
cat /etc/localtime 查看时区
设置时区:
timedatectl set-timezones (centos7系统)
tzselect (centos6系统) - cal 显示日历
-m 显示当月日历
-y 显示当年日历
知识扩展:
更改数量较多设备的时间
ntpdate 时钟服务器ip地址 校准服务器时间
时钟服务器需要做配置才能使用ntpdate命令,在后面会提到这方面内容
linux趣事:
cal 09 1752 1752年9月份少了12天
[root@centos7 ~]#cal 09 1752
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
简单命令
-
关机:halt,poweroff
-
重启:reboot
-f:强制重启,不调用shutdown
-p:切断电源 -
关机或重启:shutdown
-
用法:
shutdown [OPTIONS...] [TIME] [WALL...]
即shutdown 选项 关机时间 关机提示
-r:reboot
-h:halt
-c:cancel 取消关机
TIME:无指定,默认相当于+1,单位为分钟
now:立刻关机,相当于+0
+m:相对时间表示法,几分钟之后;例如+3
hh:mm:绝对时间表示,指明具体关机时间
如:shutdown -h 18:30 “the system will be halt”
系统在18:30关机并发出提示“the system will be halt”
备注:系统提示(“the system will be halt”)只有在关机前15分钟内才会出现。 -
用户登录信息查看命令:
whoami:显示当前登录有效用户
who:系统当前所有的登录会话
w:系统当前所有的登录会话及所做的操作 -
nano文本编辑
-
screen命令:
创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
知识扩展:
使用screen命令解决断网中断正在操作的程序或命令问题
screen 开启会话
screen -r 恢复某会话 此命令只对单个会话有用,即当前会话没有加入其它用户
以下命令针对两个用户连接到同一台机器上才能使用
screen -S [session](会话名) 创建新会话
[root@centos7 ~]#screen -S help
screen -ls 查看当前开启的全部会话
[root@centos7 ~]#screen -ls
There is a screen on:
3485.help (Attached)
1 Socket in /var/run/screen/S-root.
screen -x [session](会话名) 加入会话
当连接在同一台设备上的两个用户加入同一个会话以后,两个终端显示画面一致。
ctrl+a,d 剥离当前会话
exit 退出并关闭screen会话
- echo 显示字符
- 用法:echo [-neE][字符串]
- 说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号
- 选项:
-E:(默认)不支持\解释功能
-e:启用\字符的解释功能
-n:不自动换行 - 显示变量
echo "$环境变量"
注意:''(单引号) 既不识别变量,又不识别命令 最傻 ""(双引号) 只能识别变量,不识别命令 一般 ``(反向单引号)相当于$() 既识别变量,又识别命令 最聪明
- 启用命令选项-e,即echo -e ,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e '\033[43;31;5mmagedu\033[0m'
\xHH插入HH(十六进制)所代表的ASCII字
命令行扩展、被括起来的集合
- 命令行扩展:$( ) 或``
把一个命令的输出打印给另一个命令的参数echo "This system's name is $(hostname) " This system's name is server1.example.com echo "i am `whoami` " i am root
- 括号扩展:{ }
打印重复字符串的简化形式
echo file{1,3,5}
file1 file3 file5
rm -f file{1,3,5}
echo {1..10} 显示1到10
echo {a..z} 显示a到z
echo {000..20..2} 以三位数显示0到20,并且以2递增
tab键
- 命令补全
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
用户给定的字符串只有一条惟一对应的命令,直接补全
否则,再次Tab会给出列表 - 路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表
双击tab键
- command 2Tab 所有子命令或文件补全
- string2Tab 以string开头命令
- /2Tab 显示所有根目录下一级目录,包括隐藏目录
- ./2Tab 当前目录下子目录,包括隐藏目录
- *2Tab 当前目录下子目录,不包括隐藏目录
- ~2Tab 所有用户列表
- $2Tab 所有变量
- @2Tab /etc/hosts记录(centos7不支持)
- =2Tab 相当于ls –A (centos7不支持)
命令行历史
- 保存你输入的命令历史。可以用它来重复执行命令
- 登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
- 登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
- 重复前一个命令,有4种方法
重复前一个命令使用上方向键,并回车执行
按!! 并回车执行
输入!-1 并回车执行
按Ctrl+p并回车执行 - !:0 执行前一条命令(去除参数)
- Ctrl + n 显示当前历史中的下一条命令,但不执行
- Ctrl + j 执行当前命令
- !n 执行history命令输出对应序号n的命令
- !-n 执行history历史中倒数第n个命令
- !string 重复前一个以“string”开头的命令
- !?string 重复前一个包含string的命令
- !string:p仅打印命令历史,而不执行
- !$:p 打印输出!$ (上一条命令的最后一个参数)的内容
- !*:p打印输出!*(上一条命令的所有参数)的内容
- ^string删除上一条命令中的第一个string
- ^string1^string2将上一条命令中的第一个string1替换为string2
- !:gs/string1/string2将上一条命令中所有的string1都替换为string2
- 使用up(向上)和down(向下)键来上下浏览从前输入的命令
- ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’: - Ctrl+g:从历史搜索模式退出
- 要重新调用前一个命令中最后一个参数
!$ 表示
Esc, .(点击Esc键后松开,然后点击. 键)
Alt+ .(按住Alt键的同时点击. 键)
调用历史参数
- command !^ 利用上一个命令的第一个参数做cmd的参数
- command !$ 利用上一个命令的最后一个参数做cmd的参数
- command !* 利用上一个命令的全部参数做cmd的参数
- command !:n 利用上一个命令的第n个参数做cmd的参数
- command !n:^ 调用第n条命令的第一个参数
- command !n:$ 调用第n条命令的最后一个参数
- command !n:m调用第n条命令的第m个参数
- command !n:* 调用第n条命令的所有参数
- command !string:^ 从命令历史中搜索以string 开头的命令,并获取它的第一个参数
- command !string:$ 从命令历史中搜索以string 开头的命令,并获取它的最后一个参数
- command !string:n 从命令历史中搜索以string 开头的命令,并获取它的第n个参数
- command !string:* 从命令历史中搜索以string 开头的命令,并获取它的所有参数
命令history
- history 查看历史命令
- 用法:history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...] - 常用选项:
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
- HISTSIZE:命令历史记录的条数
- HISTFILE:指定历史文件,默认为~/.bash_history
- HISTFILESIZE:命令历史文件记录历史的条数
- HISTTIMEFORMAT=“%F %T “ 显示时间
- HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史
- 控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令 - export 变量名="值"
- 存放在/etc/profile 或~/.bash_profile
bash的快捷键
- bash常用快捷键
Ctrl + l清屏,相当于clear命令
Ctrl + o执行当前命令,并重新显示本命令
Ctrl + s阻止屏幕输出,锁定
Ctrl + q允许屏幕输出
Ctrl + c终止命令
Ctrl + z挂起命令
Ctrl + a光标移到命令行首,相当于Home
Ctrl + e光标移到命令行尾,相当于End
Ctrl + u从光标处删除至命令行首
Ctrl + k从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w从光标处向左删除至单词首
Alt + d从光标处向右删除至单词尾
Ctrl + d删除光标处的一个字符
Ctrl + h删除光标前的一个字符
Ctrl + y将删除的字符粘贴至光标后
Alt + c从光标处开始向右更改为首字母大写的单词
Alt + u从光标处开始,将右边一个单词更改为大写
Alt + l从光标处开始,将右边一个单词更改为小写
Ctrl + t交换光标处和之前的字符位置
Alt + t交换光标处和之前的单词位置
Alt + N提示输入指定字符后,重复显示该字符N次
备注:当使用xshell或secureCRT远程连接时,alt功能键会有冲突,需要在软件中进行设置以后才能使用alt快捷键功能
gnome-terminal
- 应用程序->附件->终端
- 支持多个“标签”shell的图形化终端模拟器
Ctrl-Shift-n 创建新窗口
Ctrl-Shift-q关闭当前窗口
Ctrl-Shift-t 创建一个标签页
Ctrl-Shift-w 关闭一个标签页
Ctrl-PaUp/PgUn切换到下一个/前一个标签页
Ctrl-Shift-c 复制选中的文本
Ctrl-Shift-v 把文本粘帖到当前光标处
获得帮助
- 获取帮助的能力决定了技术的能力!
- 通过帮助查询一个命令如何使用
步骤:先查看是内部还是外部命令 type
如果是内部命令,使用help 内部命令
如果是外部命令,使用whatis查看该命令在man帮助第几章节
然后man 章节号 command - 多层次的帮助
whatis
command--help
manandinfo
/usr/share/doc/
Red Hat documentation
其它网站和搜索
whatis
- 显示命令的简短描述
- 使用数据库,系统刚安装后不可立即使用
- 需执行以下命令makewhatis| mandb制作数据库
- 使用示例:whatis cal或man -f cal
命令帮助
- 内部命令
帮助用法:
help command
man bash 查看所有内部命令帮助,可通过关键字查询 - 外部命令
帮助用法:
(1) COMMAND --help
COMMAND -h
(2) 使用手册(manual)
man COMMAND
(3) 信息页
info COMMAND
(4) 程序自身的帮助文档
README
INSTALL
ChangeLog
(5) 程序官方文档
官方站点:Documentation
(6) 发行版的官方文档
(7) Google
--help和-h选项
- 显示用法总结和参数列表
- 大多数命令都可以使用此帮助格式,但并非所有的命令都支持
- 如: --help
- 用法:
date[OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
符号说明:
[]表示可选项
CAPS或<>表示变化的数据
...表示一个列表
x |y| z的意思是“x或y或z“
-abc的意思是-a -b –c
{ } 表示分组
练习:
1、显示当前时间,格式:2016-06-18 10:20:30
date +“%F %T”或date +“%Y-%m-%d %H:%M:%S”
2、显示前天是星期几
date -d “-2 day” +%a(或%u)
3、设置当前日期为2019-08-0706:05:10
date 080706052019.10
man命令
- 提供命令帮助的文件
- 手册页存放在/usr/share/man
- 几乎每个命令都有man的“页面”
- man页面分组为不同的“章节”
- 统称为Linux手册
- man命令的配置文件:/etc/man.config| man_db.conf
- MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
- man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示
- 中文man需安装包man-pages-zh-CN
man章节
- 1: 用户命令
- 2: 系统调用
- 3: C库调用
- 4: 设备文件及特殊文件
- 5: 配置文件格式
- 6: 游戏
- 7: 杂项
- 8: 管理类的命令
- 9:Linux 内核API
备注:作为运维工程师,只需关注1(用户命令)、5(配置文件格式)、8(管理类的命令)章节
man帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[]可选内容
<> 必选内容
a|b二选一
{ }分组
...同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
man帮助
- 查看man手册页
man [章节] keyword - 列出所有帮助
man –a keyword - 搜索man手册
man -kkeyword列出所有匹配的页面
使用whatis数据库 - 相当于whatis
man –f keyword - 打印man帮助文件的路径
man –w [章节] keyword
man搜索
- /KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
n: 下一个
N:上一个 - ?KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
练习
1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间
在/etc/issue文件中写入以下内容
hostname is \n
time is \t
tty is \l
解题思路:
(1)先查看issue章节号 whatis issue
[root@centos7 ~]#whatis issue
issue (5) - prelogin message and identification file
(2)man 5 issue 发现没有先关信息,在查看SEE ALSO内容
SEE ALSO
motd(5), agetty(8), mingetty(8)
(3)man 8 agetty,发现issue文件用法
l Insert the name of the current tty line.
m Insert the architecture identifier of the machine. Same as `uname -m'.
n Insert the nodename of the machine, also known as the hostname. Same as
`uname -n'.
o Insert the NIS domainname of the machine. Same as `hostname -d'.
O Insert the DNS domainname of the machine.
r Insert the release number of the OS. Same as `uname -r'.
t Insert the current time.
u Insert the number of current users logged in.
U Insert the string "1 user" or "<n> users" where <n> is the number of
current users logged in.
2、今天18:30自动关机,并提示用户
shutdown -h 18:30 “the system will be halt”
info
- man常用于命令参考,GNU工具info适合通用文档参考
- 没有参数,列出所有的页面
- info 页面的结构就像一个网站
- 每一页分为“节点”
- 链接节点之前*
- info [命令]
导航info页
- 方向键,PgUp,PgDn导航
- Tab键移动到下一个链接
- d 显示主题目录
- Home 显示主题首部
- Enter进入选定链接
- n/p/u/l进入下/前/上一层/最后一个链接
- s文字文本搜索
- q退出info
通过本地文档获取帮助
- System->help(centos6)
- Applications -> documentation->help(centos7)
提供的官方使用指南和发行注记 - /usr/share/doc目录
多数安装了的软件包的子目录,包括了这些软件的相关原理说明
常见文档:README INSTALL CHANGES
不适合其它地方的文档的位置
配置文件范例
HTML/PDF/PS 格式的文档
授权书详情
通过在线官方文档获取帮助
- 第三方应用官方文档
http://www.nginx.org
http://tomcat.apache.org
http://httpd.apache.org
http://www.python.org - 通过发行版官方的文档光盘或网站可以获得
安装指南、部署指南、虚拟化指南等
红帽知识库和官方在线文档
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com - 搜索引擎
google搜索引擎
搜索格式:Openstack filetype:pdf
rhcasite:redhat.com/docs
文章评论