一、date 显示/更改时间
1. 语法
date [OPTION]... [+FORMAT] <!--用于显示时间-->
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] <!--用于更改时间-->
2. 用例
date <!--显示当前系统时间-->
date -u <!--显示当前系统UTC时间-->
date 112018002017.30 <!--更改当前系统时间为2017-11-20 18:00:30-->
二、clock/hwclock 硬件时间——系统主板硬件记录的时间
语法
clock <!--显示当前硬件时间>
clock -w <!--以系统时间为准,校正硬件时钟-->
clock -s <!--以硬件时钟为准,校正系统时间-->
三、 ntpdate 向网络计算机同步时间
用例
ntpdate 192.168.136.129
四、开关机命令
- 关机
halt
poweroff
- 重启
reboot
- 关机命令
shutdown
- 语法:
shutdown [OPTIONS...] [TIME] [WALL...]
- OPTIONS:
-h
代表关机,-c
代表取消关机,-r
代表重启 - TIME:时间可以按分钟描述,也可以具体写明时间
- e.g.
+10
代表10分钟后,16:30
代表16:30执行命令 - WALL:公告信息
- 注意:当时间设定在当前时间15分钟内时,公告信息会发至登录本机的每个终端会话;当设定时间超出15分钟时,公告信息即便设置也不会发送。
- 语法:
五、screen命令——同步终端操作信息
screen -S name <!--建立名为name的会话-->
screen -ls <!--列出目前所有会话-->
screen -x name <!--加入名为name的会话-->
Ctrl+a,d <!--剥离当前会话-->
screen -r name <!--恢复名为name的会话-->
exit <!--退出并关闭会话-->
说明:screen命令主要有两个应用,一个是通过共享终端操作信息进行远程帮助,另一个是在会话中运行耗时长的命令,可以防止网络异常导致命令异常终止。
六、echo命令——回显
- 语法:
echo [-Ene][String]
- 选项:-E 默认选项,不支持"\"字符的解释,-n 不自动换行, -e 支持"\"字符的解释
- 用例:
echo -e "abc\bdef" <!--\b代表退格,命令输出为"abdef"-->
echo -e "abc\rde" <!--\r代表回车,命令输出为"dec"-->
echo -e "\$1" <!--"\"转义字符保证特殊字符按原样输出,命令输出为"$1"-->
echo -e "\0101 \x61" <!--\0nnn表示三位八进制数字,\xHH表示两位十六进制数字,输出对应的ASCII字符,本例输出为"A a" -->
echo "echo $SHELL" <!--双引号会解析$SHELL变量,命令输出为"echo /bin/bash"-->
echo 'echo $SHELL' <!--单引号会原封不动将包含内容传给外面的echo,命令输出为"echo $SHELL"-->
echo `echo $SHELL` <!--反向单引号会执行包含内容,并将结果传给外面的echo,命令输出为"/bin/bash"-->
七、命令行扩展和符号扩展
- 命令行扩展 `COMMAND` 或者$(COMMAND)
- 用例:
echo "my name is `whoami`" <!--先执行whoami命令,结果传到外部命令中,假定当前登录用户为root,本例结果为"my name is root"-->
- 符号扩展
{ }
- 用例
echo file{1,3,5} <!--等于执行 echo file1 file3 file5-->
echo file{1..5} <!--等于执行 echo file1 file2 file3 file4 file5-->
echo file{1..10..3} <!--等于执行 echo file1 file4 file7 file10-->
八、Tab键的使用-补全
补全分为命令补全和路径补全。首次Tab后根据用户给定的字符串查询,若只有一个命令符合条件,则自动补全;否则,再次Tab后会列出所有可能命令列表。
command 2Tab <!--所有子命令或文件补全-->
string, 2Tab <!--以string开头命令-->
/, 2Tab <!--显示所有根目录下一级目录,包括隐藏目录-->
./, 2Tab <!--当前目录下子目录,包括隐藏目录-->
*, 2Tab <!--当前目录下子目录,不包括隐藏目录-->
~, 2Tab <!--所有用户列表-->
$, 2Tab <!--所有变量-->
九、history 命令行历史
命令行历史记录分为内存中储存的历史和硬盘上储存的历史。当开启一个会话时,系统读取硬盘上的历史记录到内存中,并且随着用户操作将新命令行历史记录追加到内存中。会话结束时,内存中的历史记录更新硬盘历史记录。
硬盘中的历史记录路径:~/.bash_history
history <!--显示当前会话历史记录-->
history -c <!--清空命令历史-->
history -d offset <!--删除历史中指定的第offset个命令-->
history n <!--显示最近的n条历史-->
history -a <!--追加本次会话新执行的命令历史列表至历史文件-->
history -n <!--读历史文件中未读过的行到历史列表,当本机有多个会话时,
假设A会话更新.bash_history,其他会话不知道文件的变化,此时B会话执行
history -n后会将当前的.bash_history文件与登录时的历史做对比,将增加的内容
同步到内存历史中(这其中包括A会话更新的历史记录)-->
history -r <!--读历史文件附加到历史列表-->
history -w <!--保存历史列表到指定的历史文件-->
history -p <!--展开历史参数成多行,但不存在历史列表中——意思是执行参数命令但是不形成历史记录-->
history -s <!--展开历史参数成一行,附加在历史列表后——意思是不执行参数命令,但是形成历史记录-->
- 命令行历史记录快捷键
!! <!--重复上一个历史命令-->
!n <!--重复第n个历史命令-->
!-n <!--重复倒数第n个历史命令-->
!:0 <!--重复上一个历史命令,但去除参数-->
!String <!--重复上一个以String开头的命令-->
!?String <!--重复上一个包含String的命令-->
^String <!--删除上一个命令中第一个String-->
^Sting1^String2 <!--将上一个命令中第一个String1替换为String2-->
!:gs/String1/String2 <!--将上一个命令中所有Sting1替换为String2-->
Ctrl+r <!--在命令历史记录中搜索命令-->
Ctrl+g <!--结束命令搜索-->
command !^ <!--利用上一个命令的第一个参数作为command参数-->
command !$ <!--利用上一个命令的最后一个参数作为command参数-->
command !* <!--利用上一个命令的全部参数作为command参数-->
command !n <!--利用上一个命令的第n个参数作为command参数-->
command !n:^ <!--利用第n个命令的第一个参数作为command参数-->
command !n:$ <!--利用第n个命令的最后一个参数作为command参数-->
command !n:* <!--利用第n个命令的全部参数作为command参数-->
command !n:m <!--利用第n个命令的第m个参数作为command参数-->
- 命令历史记录相关环境变量
$HISTSIZE <!--命令历史记录条数-->
$HISTFILE <!--命令历史记录文件路径-->
$HISTFILESIZE <!--命令历史记录文件记录历史的条数-->
$HISTTIMEFORMAT="%F %T" <!--显示时间-->
$HISITGNORE="str1,str2*" <!--忽略str1和以str2开头命令进入历史记录-->
$HISTCONTROL="ignoredups" <!--默认设置,忽略连续重复命令-->
$HISTCONTROL="ignorespace" <!--忽略所有以空格开头的命令-->
$HISTCONTROL="ignoreboth" <!--ignoredups和ignorespace的组合-->
$HISTCONTROL="erasedups" <!--删除重复命令-->
- 以上变量总是生效需要在/etc/profile或~/.bash_profile中设置
- 格式
export 变量="值"
- 格式
十、bash快捷键
Ctrl + l <!--清屏,相当于clear命令-->
Ctrl + s <!--阻止屏幕输出,锁定-->
Ctrl + q <!--允许屏幕输出-->
Ctrl + c <!--终止命令-->
Ctrl + z <!--挂起命令-->
Ctrl + a <!--光标移到命令行首,相当于Home-->
Ctrl + e <!--光标移到命令行尾,相当于End-->
Ctrl + f <!--光标向右移动一个字符-->
Ctrl + b <!--光标向左移动一个字符-->
Ctrl + u <!--从光标处删除至命令行首-->
Ctrl + k <!--从光标处删除至命令行尾-->