3.Linux基础入门和帮助

1.什么是shell

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并 把它送入内核去执行,shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的命 令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化, 然后将刚才解析出来的参数传给该程序并执行。shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能 由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替

2.设置主机名

#暂时设置
hostname <name>

#永久性设置
hostnamectl set-hostname <name>

* 主机名不支持下划线,但是支持横线,可以使用字母,横线或者数字组合
* 有些软件对主机名有特殊要求(否则可能导致软件无法正常启动)
* 一般按照组织的要求设置主机名,通常是有一定意义的

3.命令提示符 $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  表示隐藏

4.命令的执行过程、查看命令类型、查找命令、命令别名

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

一个很长的命令如果一行写不下, 可以 \ 分成多行
注意:  \后面要立即换行,后面不能有空格

5.系统运行时候,加硬盘,并且让系统识别出来

echo '- - -' > /sys/class/scsi_host/host0/scan

如果有多个host,可以写一个循环

scanDisk() 
{
    for name in /sys/class/scsi_host/host*/scan; do
        echo '- - -' > $name
    done
}

6.配置文件

/etc/motd  #shell 登录之后的提示信息
/etc/issue #shell 登录之前的提示信息(这个只能在直接连接主机的终端上才能看见)

7.命令行扩展和字符分割

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'

'禁止任何扩展和字符分割' 
"允许变量扩展,但是禁止字符分割" 
`允许变量和命令执行`

8.终端快捷键和历史快捷键

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修饰键

9.查看帮助

查找命令,简短描述:
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>  #恢复会话