Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并 把它送入内核去执行,shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的命 令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化, 然后将刚才解析出来的参数传给该程序并执行。shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能 由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替
#暂时设置
hostname <name>
#永久性设置
hostnamectl set-hostname <name>
* 主机名不支持下划线,但是支持横线,可以使用字母,横线或者数字组合
* 有些软件对主机名有特殊要求(否则可能导致软件无法正常启动)
* 一般按照组织的要求设置主机名,通常是有一定意义的
$PS1
变量PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]$'
其中:
\u 当前用户
\h 表示主机名简称,即取主机名的第一个名字
\W 表示当前工作目录
\$ 表示提示符(普通用户显示 $ root用户显示为#)
\H 表示完整的主机名
\w 表示完整的工作目录
\t 表示24小时的时间格式 时:分:秒
\T 表示12小时的时间格式 时:分:秒
\A 表示24小时时间格式 时:分
\! 表示命令历史数
\# 表示开机命令历史数
\d 表示日期,格式为星期 月 日
\v 表示Bash的版本信息
还可以给字体设置颜色等格式信息
“\e[F;B;Sm” 这个形式一般用在echo打印上,是没有问题的但是用在PS1变量要使用格式:“\[\e[F;B;Sm\]”
其中F字体颜色,B背景颜色,S显示样式,三个的顺序没有要求,可以缺省某个
前景色 背景色 颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫色
36 46 青色
37 47 白色
“S” 为显示样式,常用的代码见下:
0 关闭颜色设置
1 粗体
4 加下划线
5 表示闪烁
7 表示前景色和背景色互换
8 表示隐藏
1. 查看有没有命令别名 No
2. 查看是不是shell的内置命令 NO
3. 查看命令hash缓存有没有存在这个命令
YES:根据这个缓存的地址去找命令文件,如果地址错误,报错,停止查找
NO:接着往下
4. 通过$PATH 环境变量的路径中查找 存不存在这个命令 NO
5. 报错 COMMAND NOT FOUND
type COMMAND #查看是内部命令还是外部命令
type -a COMMAND #查看所有这个命令的同名命令
help 可以查看内部命令列表
which -a | --skip-alias
whereis #都是可以查看外部命令的所在位置
hash 显示外部命令的hash缓存表
alias 别名=“命令.....”
unalias 别名
unalias -a #取消所有别名
注意: 如果想永久别名生效需要把别名的配置写到配置文件中
* 仅对当前用户生效 ~/.bashrc
* 对所有用户生效 /etc/bashrc
**配置文件修改之后需要立即生效,如下两种方法:
. 配置文件
source 配置文件
其实这个. 和 source 是两个命令, 作用是在当前环境中执行后面的文件
别名和原名同名,如果不想使用命令别名,就想使用原命令,如下:
\ 命令
“命令” 参数....
'命令' 参数....
command 命令 参数....
/path/command 参数... #仅对外部命令有效
多个命令批量执行
命令1;命令2;命令3
一个很长的命令如果一行写不下, 可以 \ 分成多行
注意: \后面要立即换行,后面不能有空格
echo '- - -' > /sys/class/scsi_host/host0/scan
如果有多个host,可以写一个循环
scanDisk()
{
for name in /sys/class/scsi_host/host*/scan; do
echo '- - -' > $name
done
}
/etc/motd #shell 登录之后的提示信息
/etc/issue #shell 登录之前的提示信息(这个只能在直接连接主机的终端上才能看见)
1.命令结果引用
`command ` 不能嵌套
$(command) 可以嵌套
$[数学运算表达式] #可以使用echo 进行打印出这个数值
{}展开 {1..3} {1234} {1..10..2}#表示1-10步长2, {1,3}离散值 1,3
有时候字符串拼接还可以这样拼接
”this is a good method“$UID #这样也可以实现字符串拼接
'this is a good method'$UID #这样也可以实现字符串拼接
这些功能用在,如果''里面想拼接命令结果或者变量,但是''禁止了这些扩展,就可以这样用,例如
’userID:$UID,welcome you‘ 这样无法执行扩展,可以用“”替代
“userID:$UID,welcome you” 也可以这样写
'userID:'$UID',welcome you'
'禁止任何扩展和字符分割'
"允许变量扩展,但是禁止字符分割"
`允许变量和命令执行`
ctrl + l == clear
ctrl + Z 挂起命令
ctrl + d 删除光标下的字符
ctrl + S 锁住命令行,往里敲命令,不再显示
ctrl + q 退出锁定状态
ctrl + w 删除命令行前面一个单词
ctrl + u 删除光标前的所有字符
ctrl + r 在命令历史中搜索
ctrl + g 在命令搜索中退出
esc 选中当前搜索的命令在命令行上
快速复用上一个命令的参数 例如:
cat /etc/motd
ll 想复用
ll 然后 按 ESC 紧接着 按 .
就可以了
同样也可以 alt 加 . 然后可以一直点 . 然后网上翻之前的参数,要求是xshell设置alt为meta修饰键
查找命令,简短描述:
whatis <command>
whatis 依赖于whatis数据库 mandb 更新mandb数据库
whatis 相当于 man -f
通过man详细查看命令帮助
man 章节号 <command>
主要关注的章节:
1:普通用户命令
5:配置文件说明
8:管理员才能使用的命令
一般命令格式说明
CMD [option...] command [option....] [arg1|arg2] <file>
[] 表示里面的内容是可选的,一般选项有短选项 -a -d,短选项一般是可以放在一起 比如 ls -al, --time 这种是长选项, 还有一种BSD风格的选项,没有-开头比如 tar xvf ./xx.tar
... 表示可以有多个
command 表示子命令
| 表示互斥,只能选择一个
<> 表示必选的,你必须带上这个内容
1.通过echo和bc,转换进制
echo “obase=8;ibase=10;23423” | bc
[root@Rocky8-5-min-local ~]# echo "obase=8;ibase=10;23423" | bc
55577
小数运算,scale指定小数位数
echo “scale=2;23*11.45” | bc
[root@Rocky8-5-min-local ~]# echo "scale=2;23*11.45" | bc
263.35
2.确定当前系统的是32位还是64位
getconf LONG_BIT
[root@Rocky8-5-min-local ~]# getconf LONG_BIT
64
arch
[root@Rocky8-5-min-local ~]# arch
x86_64
查看当前终端 tty
[root@Rocky8-5-min-local ~]# tty
/dev/pts/0
查看当前使用的shell或者显示当前系统可使用的所有shell
echo $SHELL
cat /etc/shells
[root@Rocky8-5-min-local ~]# echo $SHELL
/bin/bash
[root@Rocky8-5-min-local ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看CPU信息
lscpu
cat /proc/cpuinfo
查看内存信息
free
cat /proc/meminfo
查看分区信息
lsblk
cat /proc/partitions
查看内核版本信息
uname -r
查看发行版信息
cat /etc/os-relese #通用
cat /etc/redhat-release
lsb_release -a
显示时间和日历信息
date +%F #格式化时间格式,并且显示
date -d '1 day' +%F #指定时间点,并且格式化时间显示
cal
以硬件时间校准系统时间或者相反
clock/hwclock
clock -s #校准软件时间
clock -w #校准硬件时间
设置时区启用NTP
timedatectl set-time Asia/Shanghai
yum install chrony -y
timedatectl set-ntp true
关机
poweroff
halt
init 0
shutdown -h now
重启
reboot
clt + alt + delete
init 6
shutdown -r now
查看当前用户信息
whoami #当前登录用户的简略信息
who am i #当前用户更加详细信息
who #查看所有会话
w #查看所有会话以及正在执行的操作
会话和窗口分离screen
yum -y install epel-release
yum -y install screen
screen -S <session> #创建新的会话
screen -x <session> #加入某个会话
exit #推出并关闭会话
ctrl+a,d #剥离会话,不会关闭会话
screen -ls #显示所有会话
screen -r <session> #恢复会话