|
1 什么是shell
shell是Linux系统的用户界面,提供了用户与内核交互的一种接口,它接收用户输入的命令并到送到内核去执行,因此也被称为Linux的命令解释器。
显示系统当前使用的shell- echo ${SHELL}
- # /bin/bash
复制代码 查看系统当前使用的所有shell- cat /etc/shells
- # /bin/sh
- # /bin/bash
- # /usr/bin/sh
- # /usr/bin/bash
- # /bin/tcsh
- # /bin/csh
复制代码 2 设置主机名
- # 临时生效
- hostname localhost
- # 持久生效,支持CentOS7和Ubuntu18.04以上版本
- hostnamectl set-hostname locahost
复制代码 3 命令提示符
提示符格式说明:
- \e 控制符\033
- \u 当前用户
- \h 主机名简称
- \H 主机名
- \w 当前工作目录
- \W 当前工作目录基名
- \t 24小时时间格式
- \T 12小时时间格式
- ! 命令历史数
- 开机后命令历史数
- # 查看提示符格式
- cat $PS1
- # 在CentOS系统实现持久保存提示符格式
- 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
- # 实现Ubuntu系统持久保存提示符格式
- echo "PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]'" >> .bashrc
复制代码 4 内部命令与外部命令
- 内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
- 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除
区分内部命令与外部命令内部命令管理- help # 查看所有内部命令
- enable commond # 启用内部命令
- enable -n commond #禁用内部命令
- enable -n # 查看所有禁用的内部命令
复制代码 外部命令管理- # 查看外部命令文件执行路径
- which -a --skip-alias ${commond}
复制代码 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 清除缓存
5 命令别名
对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行- alias # 查看当前定义的所有别名
- alias name='commond' # 定义别名
- alias name # 撤销指定别名
- unlias -a # 撤销所有别名
复制代码 注意:在命令行中定义的别名,只在当前shell进程中有效,如果想永久生效,要定义在配置文件中
- ~/.bashrc 仅对当前用户生效
- /etc/bashrc 对所有用户生效
编辑配置文件写进的新配置不会立即生效,需要bash进程重新读取配置文件- source ~/.bashrc
- source /etc/bashrc
复制代码 6 常见命令
- lsblk
- cat /proc/partitions
复制代码- cat /etc/os-release
- cat /etc/redhat-release
- lsb_release -a
复制代码- cat /etc/os-release
- cat /etc/issue
- lsb_release -a
复制代码- lsb_release -is
- lsb_release -cs
- lsb_release -rs
复制代码- halt
- poweroff
- reboot
- shutdown -h/-r now/+n
- shutdown -h/-r hh:mm
复制代码 7 会话管理
- screen -ls # 查看所有会话
- screen -S name # 创建会话
- ctrl+a,d # 剥离会话
- screen -x name # 加入会话
- exit # 退出并关闭会话
- screen -r name # 恢复某会话
复制代码 Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大,Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离,功能如下:
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
- 它可以让新窗口"接入"已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分
- # 新建会话
- tmux new -s session_name
- # 分离会话
- tmux detach
- ctrl+b+d
- # 接入会话
- tmux attach -t <session-name>
- # 杀死会话
- tmux kill-session -t <session-name>
- # 切换会话
- tmux switch -t <session-name>
- # 上下切分窗格
- tmux split-window
- # 左右切分窗格
- tmux split-window -h
- # 列出所有快捷键,及其对应命令
- tmux list-keys
- # 列出tmux所有命令及其参数
- tmux list-commands
复制代码- Ctrl+b %:#划分左右两个窗格
- Ctrl+b ":#划分上下两个窗格"
- Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换
- 到下方窗格,就按方向键↓
- Ctrl+b ;:光标切换到上一个窗格
- Ctrl+b o:光标切换到下一个窗格。
- Ctrl+b {:当前窗格左移
- Ctrl+b }:当前窗格右移
- Ctrl+b Ctrl+o:当前窗格上移
- Ctrl+b Alt+o:当前窗格下移
- Ctrl+b x:关闭当前窗格
- Ctrl+b !:将当前窗格拆分为一个独立窗口
- Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小
- Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小
- Ctrl+b q:显示窗格编号
复制代码- tmux new-window # 新建窗口
- tmux new-window -n <window-name> # 新建一个指定名的窗口
- tmux select-window -t <window-number> # 切换到指定窗口
- tmux select-window -t <window-name> # 切换到指定窗口
复制代码- Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
- Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
- Ctrl+b n:切换到下一个窗口。
- Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号
- Ctrl+b w:从列表中选择窗口
- Ctrl+b ,:窗口重命名
复制代码 8 echo输出信息
选项:
- -E (默认)不支持 \ 解释功能
- -n 不自动换行
- -e 启用 \ 字符的解释功能
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
- \a 发出警告声
- \b 退格键
- \c 最后不加上换行符号
- \e escape,相当于\033
- \n 换行且光标移至行首
- \r 回车,即光标移至行首,但不换行
- \t 插入tab
- \ 插入\字符
- \0nnn 插入nnn(八进制)所代表的ASCII字符
- \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码,具有颜色的字符,其格式如下:- "\033[字符背景颜色;字体颜色m字符串\033[0m"
复制代码 \033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色- #字符背景颜色范围: 40--47
- 40:黑
- 41:红
- 42:绿
- 43:黄
- 44:蓝
- 45:紫
- 46:深绿
- 47:白色
- #字体颜色: 30--37
- 30: 黑
- 31: 红
- 32: 绿
- 33: 黄
- 34: 蓝
- 35: 紫
- 36: 深绿
- 37: 白色
复制代码 加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:- \033[0m 关闭所有属性
- \033[1m 设置高亮度
- \033[4m 下划线
- \033[5m 闪烁
- \033[7m 反显
- \033[8m 消隐
- \033[nA 光标上移n行
- \033[nB 光标下移n行
- \033[nC 光标右移n列
- \033[nD 光标左移n列
- \033[x;yH 设置光标位置x行y列
- \033[2J 清屏
- \033[K 清除从光标到行尾的内容
- \033[s 保存光标位置
- \033[u 恢复光标位置
- \033[?25l 隐藏光标
- \033[?25h 显示光标
- \033[2J\033[0;0H 清屏且将光标置顶
复制代码 9 bash快捷键
- Ctrl + l 清屏,相当于clear命令
- Ctrl + o 执行当前命令,并重新显示本命令
- Ctrl + s 阻止屏幕输出,锁定
- Ctrl + q 允许屏幕输出,解锁
- Ctrl + c 终止命令
- Ctrl + z 挂起命令
- Ctrl + a 光标移到命令行首,相当于Home
- Ctrl + e 光标移到命令行尾,相当于End
- Ctrl + f 光标向右移动一个字符
- Ctrl + b 光标向左移动一个字符
- Ctrl + xx 光标在命令行首和光标之间移动
- Alt + f 光标向右移动一个单词尾
- Alt + b 光标向左移动一个单词首
- Ctrl + u 从光标处删除至命令行首
- Ctrl + k 从光标处删除至命令行尾
- Alt + r 删除当前整行
- Ctrl + w 从光标处向左删除至单词首
- Alt + d 从光标处向右删除至单词尾
- Alt + Backspace 删除左边单词
- Ctrl + d 删除光标处的一个字符
- Ctrl + h 删除光标前的一个字符
- Ctrl + y 将删除的字符粘贴至光标后
- Alt + c 从光标处开始向右更改为首字母大写的单词
- Alt + u 从光标处开始,将右边一个单词更改为大写
- Alt + l 从光标处开始,将右边一个单词更改为小写
- Ctrl + t 交换光标处和之前的字符位置
- Alt + t 交换光标处和之前的单词位置
- Alt + # 提示输入指定字符后,重复显示该字符#次
复制代码 10 文件通配符
- * 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
- ? 匹配任何单个字符,一个汉字也算一个字符
- ~ 当前用户家目录
- ~mage 用户mage家目录
- . 和 ~+ 当前工作目录
- ~- 前一个工作目录
- [0-9] 匹配数字范围
- [a-z] 一个字母
- [A-Z] 一个字母
- [wang] 匹配列表中的任何的一个字符
- [^wang] 匹配列表中的所有字符以外的字符
- [^a-z] 匹配列表中的所有字符以外的字符
复制代码- [:digit:]:任意数字,相当于0-9
- [:lower:]:任意小写字母,表示 a-z
- [:upper:]: 任意大写字母,表示 A-Z
- [:alpha:]: 任意大小写字母
- [:alnum:]:任意数字或字母
- [:blank:]:水平空白字符
- [:space:]:水平或垂直空白字符
- [:punct:]:标点符号
- [:print:]:可打印字符
- [:cntrl:]:控制(非打印)字符
- [:graph:]:图形字符
- [:xdigit:]:十六进制字符
复制代码 11 安全删除文件
rm 虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件
- -z 最后一次覆盖添加0,以隐藏覆盖操作
- -v 能够显示操作进度
- -u 覆盖后截断并删除文件
- -n # 指定覆盖文件内容的次数(默认值是3次)
Tip
请,本文为笔者整理的学习笔记,仅供个人参考和梳理思路,错漏之处请多多指导。
如,本文参考各种资源整理未,因此未申请原创声明,如有侵权请联系删除。
若,如果需要转载请各位大佬标明出处,园子不大多多捧场。
另,本文仅做学习使用,请勿用于非法途径。
来源:https://www.cnblogs.com/yoob/p/18514938
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|