目录
1 Linux基础
1.1 用户类型
- root 用户:权限巨大,已接近完整的系统控制
- 普通用户:针对系统的操作权限有限
1.2 终端
终端类型:
- 控制台终端: /dev/console
- 串行终端:/dev/ttyS#
- 虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#
- 图形终端:startx, xwindows
- 伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接
查看当前的终端设备:
- tty 命令可以查看当前所在终端
1.3 交互式接口
交互式接口:
- 启动终端后,在终端设备附加一个交互式应用程序。
交互式接口类型:
- GUI:图形化接口
- GLI:命令行接口,在Linux中也就是shell程序
什么是shell:
- Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。
- 它接收用户输入的命令并把它送入内核去执行。
- shell也被称为LINUX的命令解释器。
- shell还是一种高级编程语言,通过编写shell脚本能够进行批量的处理和自动化维护等工作。
常见的各种shell类型:
- sh:Steve Bourne
- bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
- csh:c shell , C 语言风格
- ksh :Korn Shell, AIX 默认 shell
- zsh: MacOS默认shel
查看当前所使用的shell:
显示系统支持的所有shell类型:
1.4 设置主机名
使用hostname命令可以查看主机名或临时设置主机名
修改主机名持久生效:
- 通过命令:hostnamectl set-hostname 主机名
- 通过vi/vim编辑文件修改:/etc/hostname
注意事项:
- 主机名尽量不要使用下划线,带下划线的主机名会对某些运行的程序有影响。
1.5 命令提示符
查看命令提示符格式:
修改命令提示符:
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
提示符格式说明:
- \e 控制符\033
- \u 当前用户
- \h 主机名简称
- \H 主机名
- \w 当前工作目录
- \W 当前工作目录基名
- \t 24小时时间格式
- \T 12小时时间格式
- ! 命令历史数
- # 开机后命令历史数
提示符格式实现持久保持:
- 写入到当前用户家目录的.bashrc文件中
- 写入到/etc/profile文件中,或etc/profile.d目录下创建以.sh的任意文件中
echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh
1.6 执行命令
shell中可执行的两类命令:
- 内部命令:由shell自带的,而且通过某命令形式提供
- 外部命令:在文件系统路径下有对应的可执行程序文件
判断命令类型:
- 使用type命令可以判断命令的类型,给出命令路径则是外部命令,反之。
- -a 选项查看是否存在对应内部和外部命令
enable 管理内部命令
- 启用内部命令:enable cmd
- 禁用内部命令:enable –n cmd
- 查看所有禁用的内部命令:enable –n
查看外部命令的路径:
- whereis用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
- which用于查找并显示给定命令的绝对路径,PATH变量中保存了查找命令时需要遍历的目录。
hash缓存机制:
- 在Linux中有一个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进程所有可用的命令别名:alias
- 定义别名:alias NAME='VALUE'
取消别名:
- unalias 别名
- -a 选项取消所有别名
别名永久生效:写入到文件中
- 仅对当前用户:~/.bashrc
- 对所有用户有效:/etc/bashrc
执行命令的注意事项:
- 多个选项以及多参数和命令之间使用空白字符分隔
- 取消和结束命令执行:Ctrl+c,Ctrl+d
- 多个命令可以用 ";" 符号分开
- 一个命令太长可以用\分成多行
1.7 常用命令
1.7.1 查看硬件信息
查看CPU信息:
- lscpu
- cat /proc/cpuinfo
查看内存大小:
- free(-h选项使用计量单位进行人性化显示)
- cat /proc/meminfo
查看硬盘分区情况:
- lsblk
- cat /proc/partitions
1.7.2 查看系统版本信息
查看内核版本:
- uname -r
查看操作系统发行版本:
- cat /etc/os-release
- lsb_release -a
- cat /etc/redhat-release(红帽系列)
1.7.3 日期和时间
Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:主板
相关命令
- date :显示和设置系统时钟
- clock:显示硬件时钟;-s以硬件时钟为准,校正系统时钟;-w以系统时钟为准,校正硬件时钟
时区文件:
- /etc/localtime(通过软连接的方式指向时区)
设置时区:
1.7.4 关机和重启
关机:
- halt
- powerof
重启:
- reboot
关机或重启shutdown:
- -r: 重启
- -h: 关机
1.7.5 用户登录信息查看命令
- whoami: 显示当前登录有效用户
- who: 系统当前所有的登录会话
- w: 系统当前所有的登录会话及所做的操作
1.7.6 文本编辑
- vi/vim 文本编辑工具之神
- nano 工具可以实现文本的编辑,上手容易,适合初学者
- gedit 工具是图形工具
1.7.7 会话管理
screen会话管理:
- 创建新screen会话:screen –S [SESSION]
- 加入screen会话:screen –x [SESSION]
- 退出并关闭screen会话:exit
- 剥离当前screen会话:Ctrl+a,d
- 显示所有已经打开的screen会话:screen -ls
- 恢复某screen会话:screen -r [SESSION]
screen的两个实用场景:
- 在运行某个重要命令或程序时,可以避免命令行窗口的关闭导致命令或程序的中断。
- 在运维工作过程中,遇到系统故障问题,可以使用screen会话管理,协同同事进行排查。
1.7.8 输出信息echo
常用选项:
- -E (默认)不支持 \ 解释功能
- -n 不自动换行
- -e 启用 \ 字符的解释功能
范例:打印带有颜色的字符
1.7.9 历史命令
- 当执行命令后,系统默认会在内存记录执行过的命令
- 当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是~/.bash_history
- 登录shell时,会读取命令历史文件中记录下的命令加载到内存中
history 命令常用选项:
- -c: 清空命令历史
命令历史相关环境变量:
- HISTSIZE:命令历史记录的条数
- HISTFILE:指定历史文件,默认为~/.bash_history
- HISTFILESIZE:命令历史文件记录历史的条数
- HISTTIMEFORMAT="%F %T `whoami`" 显示时间和用户
- HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
- HISTCONTROL:控制命令历史的记录方式
环境变量的值:
- ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
- ignorespace 忽略所有以空白开头的命令
- ignoreboth 相当于ignoredups, ignorespace的组合
- erasedups 删除重复命令
范例:保存命令历史环境变量,实现查看命令历史时显示时间
echo -e 'export HISTCONTROL=ignoreboth \nexport HISTTIMEFORMAT="%F %T"' >> .bash_profile
1.7.10 调用历史命令或参数
重复前一个命令方法
- 使用上方向键并回车执行
- 按 !! 并回车执行
- 输入 !-1 并回车执行
- 按 Ctrl+p 并回车执行
调用历史参数
- !^ 调用上一个命令的第一个参数
- !$ 调用上一个命令的最后一个参数
- !* 调用上一个命令的全部参数
1.7.11 特殊符号扩展
反引号扩展:``
- 把一个命令的输出打印给另一个命令的参数:``等价于$()
- 区别在于``不利于嵌套
比较 “ ” ,‘ ’, ``三者区别:
- 单引号:六亲不认,变量和命令都不识别,都当成了普通的字符串
- 反向单引号:变量和命令都识别
- 双引号:不能识别命令,可以识别变量
括号扩展:{ }
- {} 可以实现打印重复字符串的简化形式
1.7.12 bash快捷键
- Ctrl + l 清屏,相当于clear命令
- Ctrl + o 执行当前命令,并重新显示本命令
- Ctrl + s 阻止屏幕输出,锁定
- Ctrl + q 允许屏幕输出,解锁
- Ctrl + c 终止命令
- Ctrl + a 光标移到命令行首
- Ctrl + e 光标移到命令行尾
- Ctrl + xx 光标在命令行首和光标之间移动
- Ctrl + u 从光标处删除至命令行首
- Ctrl + k 从光标处删除至命令行尾
- Alt + r 删除当前整行
2 获得帮助
2.1 whatis
- whatis 使用数据库来显示命令的简短描述
- 刚安装后不可立即使用,需要制作数据库,centos7:mandb
2.2 查看命令帮助
内部命令帮助:
- help COMMAND
- man bash
外部命令帮助:
- COMMAND --help 或 COMMAND -h
- 使用手册:man COMMAND
- info COMMAND
2.3 man命令
man 提供命令帮助的文件,手册页存放在/usr/share/man
中文man需安装包
- man-pages
- man-pages-zh-CN
man 页面分组为不同的“章节”,统称为Linux手册,
- 1:用户命令
- 2:系统调用
- 3:C库调用
- 4:设备文件及特殊文件
- 5:配置文件格式
- 6:游戏
- 7:杂项
- 8:管理类的命令
- 9:Linux 内核API
man 帮助段落说明:
- NAME 名称及简要说明
- SYNOPSIS 用法格式说明
- [] 可选内容
- <> 必选内容
- a|b 二选一
- { } 分组
- ... 同一内容可出现多次
- DESCRIPTION 详细说明
- OPTIONS 选项说明
- EXAMPLES 示例
- FILES 相关文件
- AUTHOR 作者
- COPYRIGHT 版本信息
- REPORTING BUGS bug信息
- SEE ALSO 其它帮助参考