1.Linux 基础
1.1 用户类型
- 用户主要分为2类,超级用户(root)和普通用户,超级用户(root)拥有计算机 的所有权限,而普通用户的权限有限,在工作环境中我们一般只是是有普通用户,极少使用超级用户(root),减少风险。
1.2 终端 terminal (tty)
- 终端分为控制台终端,串行终端,虚拟终端,图形终端,伪终端。
- 查看终端常用tty
[root@centos8 ~]# tty
/dev/pts/1
1.3 shell
- Shell 是Linux系统的用户界面,提供用户和内核交互的接口,也是Linux的命令解释器,shell是一种高级程序设计语言,shell有各种类,如:bash 、csh、tch、ksh等。我们常用的主要是bash shell。
- 查看当前使用的shell
[root@centos8 ~]# echo $SHELL
/bin/bash
- 查看当前系统使用的所有shell
[root@centos8 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
1.4 设置主机名 hostname
- 查看当前系统的主机名
- 主机名不能使用下划线,不能出现8.2之类的主机名
[root@centos8 ~]# hostname
centos8
- 修改主机名
- 临时修改,重启后恢复
[root@centos8 ~]# hostname centos
[root@centos8 ~]# hostname
centos
- 永久修改,更改配置文件/etc/hostname,或者
[root@centos8 ~]# hostnamectl set-hostname centos
[root@centos8 ~]# hostname
centos
1.5 命令 type
- 命令主要分为内部命令和外部命令,使用type区别命令类型,其中有些命令既是内部命令也是外部命令,如
[root@centos8 ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo
1.5.1 内部命令
内部命令: 由shell自带的,
- enable -n 禁用内部命令
- enable启用内部命令
1.5.2 外部命令
外部命令:在文件系统路径下有对应的可执行程序文件
- whereis 查看外部命令的路径和命令相关的文件
- which 查看命令的路径
[root@centos8 ~]#whereis free
free: /usr/bin/free /usr/share/man/man1/free.1.gz
[root@centos8 ~]#which free
/usr/bin/free
1.6 别名 alias
- alias设置别名
[root@centos8 ~]# alias free='free -h'
[root@centos8 ~]# free
total used free shared buff/cache available
Mem: 1.8Gi 549Mi 839Mi 9.0Mi 416Mi 1.1Gi
Swap: 4.0Gi 0B 4.0Gi
- 通过alias可以查看所有别名,如果想要使用定义别名前的原始命令只需在命令前加转义\
- 命令优先级:别名>内部>外部hash>外部$PATH
- unalias 可以取消别名
- alias设置的别名,只能临时在当前shell使用,离开当前shell或重启将失效,可以将别名保存至配置文件永久使用
- ~/.bashrc 仅对当前用户有效
- /etc/bashrc 对所有用户有效
1.7 缓存 hash
- hash初始为空,当使用外部命令时,会从PATH中查找外部命令的路径,然后保存至hash中,后面再次使用时就不用再通过PATH查找,可以直接在hash中调用,节约时间
- hash显示缓存
- -r 清理全部缓存
- -d 清除某个缓存
1.8 常用命令
1.8.1 时间日期
- Linux的两种时钟 系统时钟:由Linux内核通过CPU的工作频率进行的 硬件时钟:主板
1.8.1.1 硬件时钟 clock
- clock显示硬件时钟
- -s 以硬件时间为准,矫正系统时间
- -w 以系统时间为准,矫正硬件时间
1.8.1.2 系统时间 date
- date显示系统时间
- %H : 小时(00…23)
- %M : 分钟(00…59)
- %MF: 相当于%Y-%m-%d
- %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
- %S : 秒(00…61)
- %T : 直接显示时间 (24 小时制)
- %X : 相当于 %H:%M:%S
- %a : 星期几 (Sun…Sat)
- %b : 月份 (Jan…Dec)
- %c : 直接显示日期与时间
- %d : 日 (01…31)
- %j : 一年中的第几天 (001…366)
- %m : 月份 (01…12)
- %w : 一周中的第几天 (0…6)
- %Y: 直接显示年
- date +%Y%m%d //显示现在的年月日
- date +%F -d “+1 day” //显示后一天的日期
- date +%F -d “-1 month” //显示上一月的日期
- date +%F -d “-1 year” //显示前一年的日期
1.8.2 登录用户信息 who
- who 当前所有的用户
- w 当前登录的所有用户及其操作
- who am i 只显示当前用户的信息
- whoami 只显示当前用户的名字
1.8.3 历史history
- history可以显示历史使用的命令
- -c 清空历史
- -d 删除历史
- n 显示最近的几条命令
- 使用前一个命令的方法
1.使用上方向键,回车
2.!!回车
3.!-1回车
4.ctrl+p回车 - !:0执行前一条命令(去除参数)
- !n执行history对应序号的命令
- !-n执行倒数第n个命令
1.8.4 输出 echo
- echo将输入的信息标准输出
- -n 不自动换行
- -e 启用\字符的解释功能:
- \a 发出警告声
- \b 退格
- \c 最后不加换行
- \n 换行,光标至行首
- \r 回车,光标至行首,不换行
- \t tab
1.8.5 命令行扩展``和$()
把一个命令的输出打印作为另一个命令的参数,放在``中的一定是有输出信息的命令
比较单引号(‘’),双引号(“”),反向单引号(``)
单引号:六亲不认,变量和命令都不识别,都当成字符串
双引号:不能识别命令,但可以识别变量
反向单引号:可以识别命令和变量,并且会把命令执行后,在交给调用反向单引号的命令继续
[root@centos8 ~]#echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos8 ~]#echo "echo $HOSTNAME"
echo centos8.magedu.com
[root@centos8 ~]#echo `echo $HOSTNAME`
centos8.magedu.com