- A+
所属分类:linux技术
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 控制符 33
- 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自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
- 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除
区分内部命令与外部命令
type commond
内部命令管理
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 常见命令
lscpu cat /proc/cpuinfo
free cat /proc/meminfo
lsblk cat /proc/partitions
arch
uname -r
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
whoami who w
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输出信息
echo [-neE] [字符串]
选项:
- -E (默认)不支持 解释功能
- -n 不自动换行
- -e 启用 字符的解释功能
echo "$VAR_NAME"
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
- a 发出警告声
- b 退格键
- c 最后不加上换行符号
- e escape,相当于 33
- n 换行且光标移至行首
- r 回车,即光标移至行首,但不换行
- t 插入tab
- 插入字符