笔记开始整理时间:2018年3月29日19:22:02
本章内容:
1.用户登录
2.终端
3.shell介绍
4.执行命令
5.简单命令
6.Tap键补全
7.命令行历史
8.bash快捷键
9.使用gnome-terminal
10.whatis
11.command --help
12.man and info
13.本地帮助文档/usr/share/doc/
14.官网在线文档
15.其他网站和搜索
用户登录
root用户
uid=0
一个特殊的管理账户,也被称为超级用户
root已接近完整的系统控制
对系统谁还几乎有无限的能力
除非必要,不要登录为root
普通(非特权)用户
权限有限
造成损害的能力比较有限
终端teirminal
设备终端 键盘鼠标显示器
物理终端 /dev/console
控制台console
虚拟终端(tty:teletypewriters,/dev/tty#,#为[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,windowmanager,desktop
Desktop:
GNOME(C,图形库gtk),
KDE(C++,图形库qt)
XFCE (轻量级桌面)
Cli:Commmand Line Interface
shell程序:sh,csh,tcsh,ksh,bash(bourn again shell) GPL zsh
什么是shell
shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口
它接收用户输入的命令并把它送到内核去执行。
shell也被称为Linux的命令解释器(command interpreter)
shell是一种高级程序设计语言
bash shell
GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一
目前也是Linux的标准shell,与sh兼容
CentOS默认使用
显示当前使用的shell
echo $SHELL
显示当前系统使用的所有shell
cat /etc/shells
命令提示符:prompt
echo $PS1 显示提示符格式
PS1="\[\e[1;35m\][\u@\h \w]\\$\[\e[0m\]"
执行命令
输入命令后回车
提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后
提交给内核分配资源将其运行起来
在shell中可执行的命令有两类
内部命令:由shell自带的,而且通过某命令形式提供
help 显示内部命令列表
enable 查看全部可用内部命令
enable -n cmd 禁用内部命令
enable cmd 启用内部命令
enable -n 查看所有禁用的内部命令
外部命令:在文件系统路径下有对应的可执行程序文件
which -a
which --skip-alias
whereis
区别指定的命令是内部或外部命令
type cmd
执行外部命令
hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找命令。
找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释
器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利
用hash缓存可大大提高命令的调用速率
hash常见用法
hash 显示hash缓存
hash -l 显示hash缓存,包含路径,可作为输入使用
hash -p path name 将命令全路径path起别名为name
hath -t name 显示hash中name的路径
hash -r 清除hash缓存
命令别名
alias 显示当前shell进程所有可用的命令别名
alias NAME="VALUE" 定义别名NAME,其相当于执行命令VALUE
例如:
alias cdnet=‘cd /etc/sysconfig/network-scripts/`
unalias cdnet 取消别名cdnet
unalias -a 取消所有别名
PS: 在命令行中定义的别名,仅对当前shell进程有效,且注销之后失效
如想永久有效,需写入配置文件
.bashrc 仅对当前用户有效
/etc/.bashrc 修改对所有用户有效
编辑配置给出的新配置不会立即生效,需注销或者使用
. .bashrc 或者
source .bashrc 执行之后配置生效
命令格式
COMMAND [OPTIONS] [ARGUMENTS..]
选项OPTIONS:用于启用或者关闭命令的某个或某些功能
参数ARGUMENT,命令的作用对象,比如文件名,用户名等
例如:
ls -a etc/
rm -rf /etc/ -rf=-r -f
PS:
参数和选项可以多个,使用空白字符分隔
命令运行过程可中断,使用ctrl+C,ctrl+D
多个命令可以一行执行,使用;符号隔开,如:
pwd;ls;ifconfig
一个命令可以分开成多行显示,用\分开,如
p\
w\
d +回车
日期和时间:
Linux的两种时钟
date 显示系统时间
clock 硬件时间,即主板bios芯片时间
date mmDDHHMMYYYY.ss 设置时间,格式为月日时分年。秒
date -d "-2 day" 显示2天之前的时间
date +%F 显示时间,按照2018-03-31格式显示
date "+%F %T" 显示时间格式为2018-03-31 02:08:14
date +%s 显示时间为1970年1月1日0点至今经过多少秒
date -d @nnnn 将秒时间换成正常时间
clock -s 硬件时间覆盖系统时间
clock -w 系统时间覆盖硬件时间
ll /etc/localtime 显示当前时区
timedatectl list-timezones 显示全部时区
timedatectl set-timezones Asia/Shanghai 设置时区为上海
cal 显示日历
cal -y 显示整年日历
cal 5 1978 显示1978年5月日历
PS:更多用法可以参见date --help
简单命令
halt,poweroff 关机
init 0 关机
reboot / init 6 重启
reboot -f 强制重启,不调用shutdown
reboot -p 切断电源,相当于关机
shutdown 1分钟之后关机
shutdown -r 10 wall 10分钟后重启,且给所有用户发送提醒信息
shutdown -c 退出shutdown
shutdown -now 立即关机
shutdown -r 21:30 21:30重启
PS:linux提供了很多种关机方式,有时会有细微的差别,实际工作中服务器的
关机重启还需慎重。
tty 查看当前在哪个终端(tty1-6,pts/)
who 查看当有所有的登录会话
whoami 查看本终端当前用户
w 系统当前所有的登录会话以及所做的操作
ifconfig 查看网络链接
nano /etc/motd 简单的文本编辑命令
screen 新建会话命令
screen -S help 新建help会话
screen -ls 显示当前所有screen会话
screen -x help 加入help会话
ctrl+a,d 脱离当前screen会话
screen -r 恢复断开的screen会话
exit 离开会话
PS: screen命令的功能可以使不同终端使用同一个会话窗口,要求连接的终端
接入同一台主机,且使用相同的账号登录。
echo 显示字符
echo abc 显示abc,默认-E,会去掉\的解释作用
echo -n aaa 输出aaa,结束之后不换行
echo -e "aaa\a" 输出aaa且发出警告音,-e选项会开启\解释功能
\b 退格键
\c 最后不加换行字符,效果等于-n
\n 换行且光标移到行首
\r 回车,即光标移到行首,但不换行
\t 插入tap
\\ 插入\字符
\0nnn 插入八进制数nnn所代表的ASCII字符
\xHH 插入十六进制数HH所代表的ASCII字符
单引号,双引号,反向单引号以及 $() 和 {} 的用法
可以尝试查看执行以下命令观察输出
echo echo $PS1 输出结果:echo \[\e[1;35m\][\u@\h \w]\$\[\e[0m\]
echo "echo $PS1" 输出结果:同上
echo 'echo $PS1' 输出结果:echo $PS1
echo `echo $PS1` 输出结果:\[\e[1;35m\][\u@\h \w]\$\[\e[0m\]
可以看出:
单引号以内皆为字符,不识别变量和命令
双引号可以识别变量,但不识别命令操作
反向单引号,可识别变量和命令
但是如果需要嵌套输出命令结果:如:
echo echo pwd
如果最终需要输出命令pwd的显示结果,
echo `echo `pwd`` 是无法识别pwd的,即反向单引号无法嵌套使用
echo `echo $(pwd)` 此为正确用法
其中$(pwd) 等同于`pwd` 为调用命令输出的标准用法,且可嵌套
如以上命令还可以写成:
echo $(echo $(pwd))
echo f{1,3,5} 显示f1 f3 f5
touch f{1..10} 创建文件f1 f2..f10
touch a{1..30..2} 创建文件a(1-30) 间隔为2
rm file{00000..00100} 删除file00000-file00100
Tab键的使用
命令补全:
用户给定的字符串只有一条唯一对应的命令时候是,按tab键会直接补全命令
如不唯一,单机tab无反应,再次按下tab键,则会给出所有匹配列表
ifcon+tab键 ifconfig
ifc+2tap 列出所有ifc开头的命令
路径补全:
在输入路径时如给出的字符串在上级目录对应唯一的一个目录或者文件,按下
tap键,直接补全
如不唯一,两下tap键会列出满足条件的所有目录或者文件列表
cmd 2tap 所有子命令或文件补全
ifc+2tap 所有以ifc开头的命令
/2tap 显示所有根目录下一级目录,包括隐藏目录,但不显示文件
./2tap 当前目录下子目录,包括隐藏目录,不显示文件
*2tap 当前目录下子目录,不包含隐藏目录,不显示文件
~2tap 显示所有用户列表
$2tap 显示所有变量
@2tap /etc/hosts记录,sentos7不支持
=2tap 相当于ls -A,sentos7不支持
命令行历史
重复前一个命令,有4种方法
使用上方向键,并回车执行
按!!,并回车执行
输入!-1,并回车执行
按ctrl+P,并回车执行,相当于上方向键
!:0 执行前一条命令,去除参数
ctrl+n 显示当前历史中的的下一条命令,但不执行,相当于下方向键
ctrl+j 执行当前命令
ctrl+r 在命令历史中搜索命令
ctrl+g 从历史搜索模式中退出
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!l 重复前一个以l开头的命令
!?s 重复前一个包含s的命令
!l:p 显示前一个以l开头的命令结果
!$:p 打印输出!$(上一条命令的最后一个参数)的内容
!*:p 打印输出!*(上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string字符串
^string1^string2 将上一条命令中的第一个string1替换成sting2
!:gs/string1/string2 将上一条命令中的所有string1换成string2
!$ 调用前一个命令中最后一个参数
esc,. 调用前一个命令中最后一个参数
alt+. 调用前一个命令中最后一个参数
cmd !^ 利用上一个命令的第一个参数做cmd的参数
cmd !$ 利用上一个命令的最后一个参数作为cmd的参数
cmd !* 利用上一个命令的全部参数作为cmd的参数
cmd !:n 利用上一个命令的第n个参数最为cmd的参数
cmd !n:^ 调用第n条命令的第一个参数
cmd !n:$ 调用第n条命令的最后一个参数
cmd !n:m 调用第n条命令的第m参数
cmd !n:* 调用第n条命令的全部参数
history 命令
history 显示命令历史记录
history -c 清空历史记录
history -d nnn 删除历史记录中的第nnn个命令
history n 显示最近的n条记录
history -a 追加本次会话新执行的命令历史列表至历史文件
history -r 读历史文本附加到历史列表
history -w 保存历史列表到指定的历史文件
history -n 读历史文本中未读过的行到历史列表
history -p $(cmd) 执行命令cmd,不生成历史,如不加引号,
会直接打印命令
history -s cmd 生成记录cmd,但是不执行,如用$(),命令会执行,
执行的结果会记录到历史
HISTSEZE 命令历史就的条数
HISTFILE 指定历史文件,默认为~/.bash_history
HISTFILESIZE 命令历史文件记录的条数
HISTTIMEFORMAT="+%F %T“ 历史记录显示时间
HISTIGNORE="str1:str2*..." 忽略str1命令,str2开头的文件
HISTCONTROL 环境变量
=ignoredups 默认,忽略重复的命令,连续且相同为重复
=ignorspace 忽略所有以空白开头的命令
=ignoreboth 相当于dups+space
erasedups 删除重复命令
以上变量存放 /etc/profile 或~/.bashrc
bash的快捷键
ctrl+l 清屏,相当于clear命令
ctrl+o 执行当前命令,并重新显示本命令
ctrl+s 阻止屏幕输出,锁定
ctrl+q 允许屏幕输出
ctrl+c 终止命令
ctrl+z 挂起命令
ctrl+a 光标移到命令行首,相当于Home
ctrl+e 光标移动命令行尾,相当于end
ctrl+f 光标向右移动一个字符
ctrl+b 光标向左移动一个字符
alt+f 光标向右移动一个单词尾
alt+b 光标向左移动一个单词尾
ctrl+u 从光标处删除至命令行首
ctrl+k 从光标处删除至命令行尾
alt+r 删除当前整行
PS:还有部分快捷键用法以及图形界面快捷键用法并未列出,alt组合键经常
和其他软件冲突
获得帮助
##获得帮助的能力决定了技术的能力。
##Linux提供了多种获得帮助的方式
whatis 显示命令的简短描述,如:
whatis ls
makewhatis sentos6安装whatis
mandb sentos7安装whatis
help cmd 内部命令用法介绍
cmd --help 外部命令用法介绍,有些命令是-h
man bash 全部内部命令用法接受
man -f 简短描述,等于whatis
man cmd 获得命令cmd的man帮助
man 5 cmd 看命令man帮助的第5章节
man -k keyword 列出所有匹配的页面,使用wahtis数据库
man章节
#1:用户命令
#2:系统调用
#3:C库调用
#4设备文件及特殊文件。
#5:配置文件格式
#6:游戏
#7:杂项
#8:管理类的命令
#9:Linux内核API
man帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a丨b 二选一
{} 分组
... 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其他帮助参考
man文档查看相关操作
space 向下翻屏
b 向上翻屏
G 跳转至文件尾部
1G 翻至文件首部
q 退出
搜索方式:
/keyword 从当前位置向文件尾部搜索,不区分字符大小写
n:下一个
N:上一个
?keyword 从当前位置向文件首部搜索,不区分字符大小写
n:下一个,与搜索方向同向
N:上一个,与搜索方向反向
导航info页
info cmd 打开info帮助文档
Home 显示主题首部
enter 进入选定链接
tab键 移动到下一个链接
d 显示主题目录
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字文本搜索
q 退出info
其他获得帮助的途径
通过本地文档获取帮助
/usr/share/doc/ 大多数安装了的软件包的子目录,包括了这些软件的
相关原理说明
在线文档获取帮助
比较大型的软件,可以上官方网站获取官方文档说明
通过发行版官方的文档光盘或者网站可以获得
安装指南、部署指南、虚拟化指南等
红帽知识库和官方在线文档
红帽全球技术支持服务
笔记整理完成时间:2018年3月31日14:44:00