登录提示
/etc/issue文件用于预登录消息
nano /etc/issue
Time at \t
Terminal in \l
Hostname is \n
\S
Kernel \r on an \m
@s
1
2
3
4
5
6
7
/etc/motd文件用于登录后消息
nano /etc/motd
Welcome to visit node1!
1
2
命令提示符
▷命令提示符:prompt
[root@localhost ~]#
#管理员
$普通用户
▷显示提示符格式
[root@localhost ~]# echo $PS1
▷修改提示符格式
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;31m\][\[\e[32m\]\t \[\e[1;33m\]\u\[\e[34m\]@\h\[\e[1;35m\] \W\[\e[1;36m\]]\[\e[37m\]\\$"
1为高亮,5为闪烁,
背景颜色41-47,字体颜色31-37
31 41红色
32 42绿色
33 43黄色
34 44蓝色
35 45紫色
36 46青色
37 47白色
\e 控制符\033 \u 当前用户
\h 主机名简称 \H主机名
\w 当前工作目录 \W 当前工作目录基名
\t 24小时时间格式 \T 12小时时间格式
! 命令历史数 # 开机后命令历史数
▷将配置写入目录/etc/profile.d/,重启后永久有效
[root@localhost ~]# nano /etc/profile.d/env.sh
PS1="[\e[1;5;41;33m][\u@\h \W]$[\e[0m]"
命令别名
▷显示当前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 取消所有别名
▷命令执行过程:
1、别名
2、内部命令
3、hash表
4、$PATH
▷如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/command
▷hash -p将命令全路径起别名为name
hash -p /path/to/command NAME
获取帮助
▷whatis
显示命令的简短描述
使用数据库
刚安装后不可立即使用
makewhatis | mandb制作数据库
whatis cal 或 man -f cal
▷command --help
内部命令:help COMMAND或man bash(man bash有3000多行的各类帮助信息)
外部命令:COMMAND --help或COMMAND -h(部分命令-h并非获取帮助)
▷man and info
提供命令帮助的文件
手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
man页面分组为不同的“章节”
统称为Linux手册
man命令的配置文件: /etc/man.config | man_db.conf
MANPATH /PATH/TO/SOMEWHERE:知名文件搜索位置
man -M /PATH/TO/SOMEWHERE COMMAND:到指定位置下搜索COMMAND命令的手册页并显示
中文man需安装man-pages-zh-CN
man 1 man
1:用户命令
2:系统调用
3:C库调用
4:设备文件级特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux内核API
man搜索
/KEYWORD
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索,不区分字符大小写
n 下一个
N 上一个
?KEYWORD
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索,不区分字符大小写
n 跟搜索命令同方向,下一个
N 跟搜索命令反方向,上一个
man命令的操作方法:使用less命令实现
space,^v ^f ^F向文件尾翻屏
b ^b 向文件首部翻屏
d ^b 向文件尾部翻半屏
u ^u 向文件首部翻半屏
RETURN ^N E ^E or j or ^J向文件尾部翻一行
y or ^Y or ^P k or ^K向文件首部翻一行
q 退出
#跳转至第#行
1G 回到文件首部
G 翻至文件尾部
man帮助
查看man手册页
man【章节】keyword
列出所有帮助
man -a keyword
搜索man手册
man -k keyword列出所有匹配的页面
使用whatis数据库
打印man帮助文件的路径
man -w 【章节】keyword
man帮助段落说明
帮助手册中的段落说明:
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{} 分布
… 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版权信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
info
man常用于命令参考,GNU工具info适合通用文档参考
没有参数,列出所有的页面
info页面的结构就像一个网站
每一页分为“节点”
链接节点之前*
info 【命令】
导航info页
方向键,PgUp,PgDn导航
Tab键,移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter 进入选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字文本搜索
q 退出info
▷/usr/share/doc目录
多数安装了的软件包的子目录,包括了这些软件的相关原理说明
常见文档:README INSTALL CHANGES
不适合其它地方的文档的位置
配置文件范例
HTML/PDF/PS格式的文档
授权书详情
▷Red Hat documentation
红帽知识库和官方在线文档
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com
https://help.ubuntu.com/lts/serverguide/index.html
▷其它网站和搜索
第三方应用官方文档
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://tldp.org (the linux documentation project)
http://www.slideshare.net ppt
http://www.google.com
谷歌搜索的技巧:
Openstack filetype:pdf (搜索所有包含有openstack字样的pdf文件)
rhca site:redhat.com/docs (红帽官网搜带有rhca的页面)
语言设置
查看语言列表
localectl list-locales
设置语言
localectl set-locale LANG=en_US.utf8
日期和时间
▷Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
▷相关命令
date 显示和设置系统时间
date +%s
date -d @1509536033
hwclock,clock:显示硬件时钟
-s --hctosys 以硬件时钟为准,校正系统时钟
-w 00systohc 以系统时钟为准,校正硬件时钟
▷时区 /etc/localtime
timedatectl list-timezone
timedatectl set-timezone Asia/Shanghai
▷显示日历
显示当月cal -1
显示前后共3月 cal -3
显示整年cal -y
简单命令
▷关机 halt,poweroff
▷重启 reboot
-f 强制,不调用shutdown
-p切断电源
▷关机或重启 shutdown
shutdown [OPTION]… [TIME] [MESSAGE]
-r reboot
-h halt
-c cancel
TIME 无指定,默认相当于+1(CentOS7)
now立刻,相当于+0
+m:相对时间表示法,几分钟之后;例如+3
hh:mm:绝对时间标识,指明具体时间
▷用户登录信息查看命令
whoami 显示当前登录有效用户
who 系统当前所有的登录会话
w 系统当前所有的登录会话及所做的操作
▷nano 文本编辑
▷screen命令
创建新screen会话:screen -S [SESSION]
加入screen会话:screen -x [SESSION]
退出并关闭screen会话:exit
剥离当前screen会话:Ctrl+a,b
显示所有已经打开的screen会话:screen -ls
恢复某screen会话:screen -r [SESSION]
▷echo命令
功能:显示字符
语法:echo [-neE] [字符串]
说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号
选项:
-E(默认)不支持\解释功能
-n 不自动换行
-e 启用\字符的解释功能
echo -e “\a” 可发送声音
help echo可查看其它\的转义
\a alert (bell) 发出告警声
\b backspace 退格键
\c suppress further output 最后不加上换行符号
\e escape character 相当于\033
\f form feed
\n new line 换行且光标移至行首
\r carriage return 回车,即光标移至行首,但不换行
\t horizontal tab 插入TAB分隔符
\v vertical tab
\\ backslash 插入\字符,插入斜杠字符
\0nnn the character whose ASCII code is NNN (octal). NNN can be
0 to 3 octal digits 插入nnn(八进制)所代表的ASCII字符
\033对应ASCII表对应十进制字符位27,十六进制字符1B,表义为:ESC(Escape),可在后面加特殊符号进行颜色等配置,如:echo -e '\033[43;31;5m猪八戒\e[0m'
\xHH the eight-bit character whose value is HH (hexadecimal). HH
can be one or two hex digits 插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
显示变量
echo "$VAR_NAME" 变量会替换,弱引用
echo '$VAR_NAME' 变量不会替换,强引用
字符集和编码
UTF-8是目前互联网上使用最广泛的一种Unicode编码方式,可变长存储。使用1-4个字节表示一个字符,根据字符的不同变换长度。编码规则如下:
对于单个字节的字符,第一位设为0,后面的7位对于这个字符的Unicode码。因此,对于英文中的0-127号字符,与ASCII码完全相同。这意味着ASCII码的文档可用UTF-8编码打开
对于需要使用N个字节来表示的字符(N>1),第一个字节的前N位都设为1,第N+1位设为0,剩余的N-1个字节的前两位都设为10,剩下的二进制位则使用这个Unicode码来填充
编码转换和查询:
http://www.chi2ko.com/tool/CJK.htm
https://javawind.net/tools/native2ascii.jsp?action=transform
http://tool.oschina.net/encode
命令行扩展、被括起来的集合
▷命令行扩展: $()或``
把一个命令的输出打印给另一个命令的参数
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}
echo {a..z}
echo {000..20..2}
单、双、反向单引号的区别
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo "$PATH" 双引号
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo '$PATH' 单引号
$PATH
echo `$PATH` 反向单引号
-bash: /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin: 没有那个文件或目录
echo "echo $PATH" 双引号
echo /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo 'echo $PATH' 单引号
echo $PATH
echo `echo $PATH` 反向单引号
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
总结:
单引号不识别命令及变量;反向单引号能识别命令和变量;双引号仅识别变量,不识别命令
另:反向单引号COMMAND
的功用等同于$(COMMAND)
TAB键
▷命令补全
内部命令
外部命令:bash根据PATH环境变量定义的路径,自左而右再每个路径搜寻已给定命令名命名的文件,第一次找到的命令即为要执行的命令
用户给定的字符串只有唯一对应的命令,直接补全
否则,再次tab会给出列表
▷路径补全
把用户给出的字符串当作路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果唯一,则直接补全
否则:再次tab给出列表
命令历史
▷重复前一个命令,有4种方法
重复前一个命令使用上方向键,并回车执行
按!!并回车执行
按!-1并回车执行
按ctrl+p并回车执行
▷!:0 执行前一条命令(去除参数)
▷ctrl + n 显示当前历史行的下一条命令,但不执行
▷ctrl+j执行当前命令
▷!n 执行history命令输出对应序号n的命令
▷!-n 执行history历史中倒数第n个命令
▷!string 重复前一个以string开头的命令
▷!?string 重复前一个包含string的命令
▷!string:p 仅打印命令历史,而不执行
▷!
:
p
打
印
输
出
!
:p 打印输出!
:p打印输出!(上一条命令的最后一个参数)的内容
▷!:p 打印输出!(上一条命令的所有参数)的内容
▷^string1^string2
将上一条的命令中的第一个string1替换为string2
▷!:gs/string1/string2 将上一条命令中所有的string1都替换为string2
▷使用up(向上)和down(向下)键来上下浏览从前输入的命令
▷ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:
▷ctrl+g 从历史搜索模式退出
▷要重新调用前一个命令中的最后一个参数
!$表示
esc,.(点击esc键后松开,然后点击.)
Alt+.(按住Alt键的同时点击.键)
▷保存你输入的命令历史。可以用它来重复执行命令
▷登录shell时,会读取命令历史文件中记录下的命令~/.bah_history
▷登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
调用历史参数
▷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:* 从命令历史中搜索以string开头的命令,并获取它的所有参数
命令history
▷history [-c] [-d offset] [n]
▷history -anrw [filename]
▷history -ps arg [arg…]
-c 清空命令历史(内存中的)
-d offset 删除历史中执行的第offset个命令(历史记录个数环境变量HISTSIZE默认为1000,可通过编辑文件/etc/profile更改变量值)
n 显示最近的n条历史
-a 追加本次会话新执行的命令历史列表至历史文件
-r 读历史文件附加到历史列表
-w 保存历史列表到指定的历史文件
-n 读历史文件中未读过的行到历史列表
-p 展开历史参数成多行,但不存在历史列表中(执行命令,不记录于历史)
-s 展开历史参数成一行,附加在历史列表后(伪造历史,并不执行)
命令历史相关环境变量
▷HISTSIZE:命令历史记录的条数
▷HISTFILE:指定历史文件,默认为~/.bash_history
▷HISTFILESIZE:命令历史文件记录历史的条数
▷HISTTIMEFORMAT="%F %T " 显示时间(注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。)可保存至新配置文件:/etc/profile.d/env.sh
▷HISTIGNORE= “str1:str2*`…” 忽略str1命令,str2开头的历史
▷控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups,ignorespace的组合
erasedups 删除重复命令
▷export 变量名=“值”
▷存放在/etc/profile或~/.bash_history
bash的快捷键
▷Ctrl + l 清屏,相当于clear命令
▷Ctrl + o 执行当前命令,并重新显示本命令
▷Ctrl + s 阻止屏幕输出,锁定(结合Ctrl + l暗渡陈仓)
▷Ctrl + q 允许屏幕输出
▷Ctrl + c 终止命令
▷Ctrl + z 挂起命令
▷Ctrl + a 光标移到命令行首,相当于Home
▷Ctrl + e 光标移到命令行尾,相当于End
▷Ctrl + f 光标向右移动一个字符
▷Ctrl + b 光标向左移动一个字符
▷Alt + f 光标向右移动一个单词尾
▷Alt + b 光标向左移动一个单词首
▷Ctrl + xx 光标在命令行首和光标之间移动
▷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次
▷注意:Alt组合键经常于其它软件冲突
总结:
关键知识点:命令的帮助、各种工具使用