2.Linux基础
2. Linux基础
2.1. 查看系统版本信息
2.1.1 查看操作系统内核
-
centos
[demo@centos ~]$ uname -r 3.10.0-693.el7.x86_64
-
ubuntu
# ubuntu walker@ubuntuLinux:~$ uname -r 5.11.0-43-generic
2.1.2 主机名查看与设置
-
查看主机名
# 查看主机名 [demo@centos ~]$ hostname centos # 查看主机IP [demo@centos ~]$ hostname -I 10.0.2.15 172.32.115.11 # 设置主机名-临时修改 [root@centos ~]# hostname new-name # 设置主机名-永久修改,其实是修改了/etc/hostname文件 [root@centos ~]# hostnamectl set-hostname my-new-name
2.1.3 查看登录信息
-
查看登陆信息
# 查看当前登录用户 [demo@centos ~]$ whoami demo # 查看当前终端号 [demo@centos ~]$ tty /dev/pts/0 # 查看登录用户与终端号 登录时间 [demo@centos ~]$ who am i demo pts/0 2023-06-24 07:24 (172.32.115.1) # 查看登录用户默认shell [demo@centos ~]$ echo $SHELL /bin/bash # 查看所有登录用户 #虚拟终端:本机登录,dev/tty/2,后面没有IP地址 #伪终端:SSH远程登录,dev/pts/0,后面有IP地址 [demo@centos ~]$ who demo pts/0 2023-06-24 07:24 (172.32.115.1) root tty/2 2023-06-24 07:24 # 查看登录用户当前操作 [demo@centos ~]$ w 08:03:18 up 39 min, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 172.32.115.1 07:24 6.00s 0.04s 0.01s w demo pts/1 172.32.115.1 08:03 6.00s 0.06s 0.06s vim demo.txt
2.1.4 修改终端提示符
-
修改终端提示符
# 查看默认提示符配置 [root@centos ~]# echo $PS1 [\u@\h \W]\$ # 添加高亮 [1;31m] 颜色为红色 5是闪烁 # 临时修改 [root@centos ~]# PS1="\[\e[1;31m\][\u@\h \W]\\$\[\e[0m\]" # centos永久修改,在/etc/profile.d/下新建一个脚本 [root@centos ~]# echo 'PS1="\[\e[1;31m\][\u@\h \W]\\$\[\e[0m\] "' >> /etc/profile.d/myps.sh [root@centos ~]# chmod 755 /etc/profile.d/myps.sh # Ubuntu主机添加到家目录下的.bashrc文件即可 [walker@ubuntuLinux ~]$ echo 'PS1="\[\e[1;33m\][\u@\h \W]\\$\[\e[0m\] "' >> ~/.bashrc
2.1.5 内部命令与外部命令
-
内部命令与外部命令
# 查看内部命令 [root@centos ~]#enable [root@centos ~]#enable | wc -l 61 # type 区分内部命令与外部命令 [root@centos ~]#type echo echo is a shell builtin [root@centos ~]#type hostname hostname is hashed (/usr/bin/hostname) # 说明:每个外部命令必须有对应的文件才能执行,执行外部命令的时候会根据环境变量的路径一次去查找外部命令所对应的文件 [root@centos ~]#echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.1.6 命令别名
-
Linux中命令执行优先级
别名 内部命令 外部命令,可以使用
\cmd
强制执行优先级低的命令# 显示所有别名 [demo@centos ~]$ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .### --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' # 临时设置别名,仅对当前shell有效 $ alias NAME='VALUE' # 永久设置别名,定义在~/.bashrc,仅对当前登录用户有效 $ echo 'alias vi="vim"' >> ~/.bashrc # 永久设置别名,定义在/etc/bashrc,对所有登录用户有效 echo 'alias vi="vim"' >> /etc/bashrc # 取消别名 $ unalias NAME
2.2. 查看硬件信息
2.2.1 查看cpu
-
查看cpu
# 命令方式查看 [demo@centos ~]$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 ... # 文件方式查看 [demo@centos7 ~]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 158 model name : Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz stepping : 11 ...
2.2.2 查看内存
-
查看内存
# 命令方式查看 [demo@centos ~]$ free -h total used free shared buff/cache available Mem: 2.0G 84M 1.8G 8.5M 113M 1.7G Swap: 2.0G 0B 2.0G # 文件方式查看 [demo@centos7 ~]$ cat /proc/meminfo MemTotal: 2048744 kB MemFree: 1841380 kB MemAvailable: 1808728 kB Buffers: 2108 kB Cached: 78268 kB
2.2.3 查看磁盘
-
查看磁盘
# 命令方式查看 [demo@centos ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 15G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 14G 0 part ├─centos-root 253:0 0 12G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] # 文件方式查看 [demo@centos ~]$ cat /proc/partitions major minor #blocks name 8 0 15728640 sda 8 1 2048 sda1 8 2 1048576 sda2 8 3 14676992 sda3 253 0 12578816 dm-0 253 1 2097152 dm-1
2.2.4 查看系统架构
-
查看系统架构
# 64位操作系统 [demo@centos ~]$ arch x86_64 # 32位操作系统 [demo@centos ~]$ arch i686
2.2.5 查看操作系统发行版版本
-
发行版版本
# 适用于centos,Ubuntu,suse [demo@centos7 ~]$ cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" # 适用于centos [demo@centos7 ~]$ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) # 使用命令查看,最小化安装默认没有该命令,需要安装redhat-lsb-core包 [walker@ubuntuLinux ~]$ lsb_release -is Ubuntu [walker@ubuntuLinux ~]$ lsb_release -cs focal [walker@ubuntuLinux ~]$ lsb_release -rs 20.04
2.3. 日期时间
2.3.1 时间 date
-
格式:date [option] [arg]
# 格式化显示 date +'%F' # 显示前一天 date -d "-1 day" "+%F" # 设置时间 date -s 'str'
-
常用选项与参数
%T 时间,同%H:%M:%S %F 年月日,同%Y-%m-%d %Y 年份(以四位数来表示) %m 月份(01-12) %d 日期(以01-31来表示) %H 小时(以00-23来表示) %M 分钟(00-59) %S 秒(以本地的惯用法来表示) %Z 时区
-
显示日期与时间
date '+%Y-%m-%d %H:%M:%S'
显示年月日时分秒date -d "-1 day" "+%F"
显示昨天的日期# 显示年月日,%F不能指定连接符,默认- [demo@centos ~]$ date +'%Y/%m/%d' 2022/05/30 [demo@centos ~]$ date '+%F' 2022-05-30 # 显示时分秒,%T不能指定连接符,默认: [demo@centos ~]$ date '+%H:%M:%S' 06:23:36 [demo@centos ~]$ date '+%T' 06:23:38 # 显示年月日 时分秒 [demo@centos ~]$ date +'%F %T' 2022-05-30 04:47:34 # -d选项,以当前时间为准,显示前后指定时间 [demo@centos ~]$ date -d "-1 day" "+%F" 2022-05-29
-
设置日期与时间
date -s '2022-05-30 14:47:44'
设置时间日期
2.3.2 时间 clock
-
硬件时间
clock是主板硬件时间,跟date可以相互同步校对
[root@centos ~]# clock Fri 30 Jun 2023 06:41:19 AM CST -0.508901 seconds [root@centos ~]# date Mon May 29 14:57:52 CST 2022 # 以硬件时间为准,校正date时间 [root@centos ~]# clock -s [root@centos ~]# date Fri Jun 30 06:44:43 CST 2023 # 以date时间为准,校正硬件时间 clock -w
2.3.2 显示日历 cal
-
cal
显示本月日历 -
cal 2021
显示2021年日历[demo@centos ~]$ cal May 2022 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 # 指定月份日历 [demo@centos ~]$ cal 02 2022 February 2022 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [demo@centos ~]$ cal 9 1752 September 1752 Su Mo Tu We Th Fr Sa 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 # 指定年份日历 [demo@centos ~]$ cal 2022
2.4. 强引用与弱引用(引号)
2.4.1 强引用:单引号''
-
把单引号中的变量强制作为字符串输出。 变量和命令均无法识别
[demo@centos7 ~]$ echo '$PATH' $PATH [demo@centos7 ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/zk/.local/bin:/home/zk/bin
2.4.2 弱引用:双引号""
-
把双引号中的变量转化为变量所代表的实际值输出。 仅能识别变量
[demo@centos7 ~]$ echo "$PATH" /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/zk/.local/bin:/home/zk/bin [demo@centos7 ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/zk/.local/bin:/home/zk/bin
2.4.3 执行命令:反引号 ``
-
把反引号中的内容当作命令执行,输出命令的执行结果。 变量和命令都可以识别
[demo@centos7 ~]$ echo `echo $HOSTNAME` centos7
2.4.4 执行命令:$()
-
作用跟反引号相同,支持嵌套,反引号不支持嵌套
[demo@centos7 ~]$ echo $(echo $HOSTNAME) centos7 [demo@centos7 ~]$ ls $(touch $(date '+%F').txt) 2022-06-08.txt
2.4.5 生成文件名
-
生成文件名含主机、日期的文件
[demo@centos7 ~]$ echo `hostname`_`date '+%F'`.txt centos7_2022-06-08.txt [demo@centos7 ~]$ echo $(hostname)_$(date '+%F').txt centos7_2022-06-08.txt [demo@centos7 ~]$ touch $(hostname)_$(date '+%F').txt [demo@centos7 ~]$ ls a.txt centos7_2022-06-08.txt
2.4.6 批量操作:大括号{}
-
中间的内容支持列举,指定范围,设置步长间隔,并支持多个{}组合
#列举 [demo@centos7 ~]$ echo name{1,3,5} name1 name3 name5 #指定范围,倒序 [demo@centos7 ~]$ echo file{7..4} file7 file6 file5 file4 #指定范围3到9,并设置步长间隔为2 [demo@centos7 ~]$ echo aa{3..9..2} aa3 aa5 aa7 aa9 #指定范围3到9,并设置步长间隔为2,并指定格式003 [demo@centos7 ~]$ echo aa{003..9..2} aa003 aa005 aa007 aa009 #支持字母 [demo@centos7 ~]$ echo aa{C..F} aaC aaD aaE aaF #组合 [demo@centos7 ~]$ echo {1..4}.{txt,log} 1.txt 1.log 2.txt 2.log 3.txt 3.log 4.txt 4.log
2.5. 其他命令
2.5.1 输出信息 echo
-
echo 'STR'
:输出两部分STR
和换行
# 输出字符串 [root@localhost ~]# echo "Hello" Hello # 输出变量 [root@localhost ~]# echo $PS1 [\u@\h \W]\$ # echo后不跟内容,只输出换行 [root@localhost ~]# echo;echo '123' 123 # echo -n 输出内容后不换行 [root@localhost ~]# echo -n "123";echo "456" 123456
-
echo -e
:带颜色输出# 带颜色输出 [root@localhost ~]# echo -e '\E[1;32m汉字\E[0m' 汉字 # 说明: '\E[ m' 表示开始,1是加粗,32表示绿色,中间用分号隔开 '\E[0m' 表示结束
2.5.2 bash快捷键
-
光标移动快捷建
Ctrl + a 光标移到命令行首,相当于Home Ctrl + e 光标移到命令行尾,相当于End Ctrl + f 光标向右移动一个字符 Ctrl + b 光标向左移动一个字符 Alt + f 光标向右移动一个单词尾 Alt + b 光标向左移动一个单词首 Ctrl + xx 光标在命令行首和光标之间移动 Ctrl + u 从光标处删除至命令行首 Ctrl + k 从光标处删除至命令行尾 Alt + r 删除当前整行 Ctrl + w从光标处向左删除至单词首 Alt + d 从光标处向右删除至单词尾 Ctrl + d 删除光标处的一个字符 Ctrl + h 删除光标前的一个字符 Ctrl + y 将删除的字符粘贴至光标后
-
其他快捷建
Ctrl + l 清屏,相当于clear命令 Ctrl + o 执行当前命令,并重新显示本命令 Ctrl + s 阻止屏幕输出,锁定 Ctrl + q 允许屏幕输出 Ctrl + c 终止命令 Ctrl + z 挂起命令 Alt + c 从光标处开始向右更改为首字母大写的单词 Alt + u 从光标处开始,将右边一个单词更改为大写 Alt + l 从光标处开始,将右边一个单词更改为小写 Ctrl + t 交换光标处和之前的字符位置 Alt + t 交换光标处和之前的单词位置 Alt + # 提示输入指定字符后,重复显示该字符#次
2.6. cat指令的高级用法
-
使用cat写入文本
[root@centos ~]# cat <<EOF > file.txt > num1=20 > num2=18 > num3=33 > EOF [root@centos ~]# cat file.txt num1=20 num2=18 num3=33
-
使用cat写入文本2
[root@centos ~]# cat > file.txt num1=20 num2=18 num3=33 #ctrl+d退出输入 [root@centos ~]# cat file.txt num1=20 num2=18 num3=33
-
vim ss.sh
a=`cat file.txt |cut -d "=" -f 2 |head -1` b=`cat file.txt |cut -d "=" -f 2 |head -2|tail -1` c=`cat file.txt |cut -d "=" -f 2 |tail -1` echo $a $b $c