Linux基础
1、冯·诺依曼体系结构
存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存
冯·诺依曼理论的要点:
数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
计算机应该按照程序顺序执行
计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
Unix哲学思想
①一切都是一个文件(包括硬件)
②小型,单一用途的程序
③链接程序,共同完成复杂的任务
④避免令人困惑的用户界面
⑤配置数据存储在文本中
2、Linux镜像下载
CentOs
- https://wiki.centos.org/Download
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
https://mirrors.tuna.tsinghua.edu.cn/centos/
Ubuntu
- http://cdimage.ubuntu.com/releases/ Server版
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/
http://releases.ubuntu.com/ Desktop版
http://mirrors.aliyun.com/ubuntu-releases/
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ - Ubuntu20.04下载:http://mirrors.aliyun.com/ubuntu-releases/20.04.1/ubuntu-20.04.1-live-server-amd64.iso
3、设置主机名
临时生效
- hostname NAME
永久生效(只支持centos7和Ubuntu18.04以上版本)
- hostnamectl set-hostname NAME
- 修改配置文件vim /etc/hostname
注意:
主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
有些软件对文件名有特殊要求
4、命令提示符prompt
通过修改PS1变量实现个性化提示符定制,加以区分
默认提示符格式
- centos:[root@localhost ~]#
- Ubuntu:root@ubuntu1804:~#
- #:表示管理员
$:表示普通用户
显示提示符格式
- echo $PS1
修改提示符格式
- 写入配置文件中,退出当前bash界面重新打开之后就可以显示自定义的提示符格式了
- 提示符格式说明:
\e 控制符\033
\u 当前用户
\h 主机名简称
\H 主机名
\w 当前工作目录
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式
! 命令历史数
5、执行命令
shell中可执行命令分类
- 别名
- 内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
- 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行
完毕后从内存中删除
内部命令或外部命令的查看
- 通过type命令进行查看
如果是内部命令显示is a shell builtin
如果是外部命令显示相应的文件路径
-a 参数可以查看全部,像echo既是内部命令,也是外部命令(不同的shell的内部命令不同,所以为了防止有些shell的内部命令中没有echo,所以也会提供外部命令的echo) - 通过help命令查看内部命令
- 通过enable管理内部命令
- enable cmd 启用内部命令
enable –n cmd 禁用内部命令
enable –n 查看所有禁用的内部命令
- enable cmd 启用内部命令
- 通过which查看外部命令路径
- 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 清除缓存
别名
- 作用:对于经常执行的较长命令,可以将其定义成较短的别名,以方便执行
- alias命令显示当前shell进程所有可用别名
- 定义别名
- 通过alias NAME=‘VALUE’ 当前shell进程有效的别名
- 永久有效
- 当前用户有效
- 所有用户有效
- 注意:写入后都需要退出当前的bash重新打开才能生效
- 撤销别名
- 通过unalias进行撤销
注意:
- 如果别名与系统内部命令外部命令同名,此时执行的是别名定义的命令。所以执行行命令的优先顺序:别名>内部命令>外部命令
- 如果此时想执行该名字的原始命令可使用以下方式
- \ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令
- \ALIASNAME
6、命令格式
COMMAND [OPTIONS…] [ARGUMENTS…]
COMMAND [COMMAND] [COMMAND] ….
选项(options):用于启用或关闭命令的某个或某些功能
- 短选项:UNIX 风格选项,-c 例如:-l, -h
长选项:GNU风格选项,–word 例如:–all, –human
BSD风格选项: 一个字母,例如:a,使用相对较少
参数(arguments):命令的作用对消,比如:文件名,用户名等
注意:
多个选项以及多参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用 “;” 符号分开
一个命令可以用\分成多行
7、常见命令
查看硬件信息
- 查看cpu
- lscpu命令
- cat /proc/cpuinfo命令
- 查看内存大小
- free命令
- cat /proc/meminfo命令
- 查看硬盘和分区情况
- lsblk命令
- cat /proc/partitions命令
查看系统版本信息
- 查看系统架构
- arch命令
- 查看内核版本
- uname -r命令
- 查看操作系统发行版本
- centos
- cat /etc/os-release命令
- lsb_release -a 命令
- cat /etc/redhat-release命令
- Ubuntu
- cat /etc/os-release
- lsb_release -a
- cat /etc/issue
日期和时间
- 系统时钟:有Linux内核通过cpu的工作频率进行
- 查看系统时间:date命令
- 硬件时钟:主板
- 查看硬件时间:clock(hwclock)命令
- -s, –hctosys #以硬件时钟为准,校正系统时钟
-w, –systohc #以系统时钟为准,校正硬件时钟
- 时区
- 装系统时候默认时区是美国
- 查看当前时区
- timedatectl status
- 查看时区表
- timedatectl list-timezones
- 修改时区
- timedatectl set-timezone Asia/Shanghai
- 显示日历
- cal命令
关机和重启
- 关机命令
- halt
- poweroff
- 重启命令
- reboot
- -f:强制,不调用shutdown
- -p:切断电源
- 关机或重启命令
- shutdown
- shutdown [OPTION]… [TIME] [MESSAGE]
- -r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+#: 相对时间表示法,几分钟之后;例如 +3
hh:mm :绝对时间表示,指明具体时间
用户登录信息查看命令
- whoami: 显示当前登录有效用户
- who: 系统当前所有的登录会话
- w: 系统当前所有的登录会话及所做的操作
文本编辑命令
- vim(后续有一节专门介绍)
会话管理
- screen
- 作用:可以实现会话管理。不会因为客户端的关闭影响程序的运行如:新建会话,共享会话等
注意:CentOS7 来自于base源,CentOS8 来自于epel源 - screen命令常见用法:
创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION] - 场景模拟:
- 用ping来模拟一个文件传输的过程
- 再打开一个终端查看进程
- 发现有ping这个进程
- 此时关闭发起ping命令的终端,再次查看进程
- 发现ping的进程已经终止了
- 此时使用screen,执行ping操作
- 再次关闭终端
- 发现ping的进程依旧在运行
- 作用:可以实现会话管理。不会因为客户端的关闭影响程序的运行如:新建会话,共享会话等
- tmux
- Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大
输出信息echo命令
- 基本用法
- 功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号($)
- 语法:echo [-neE][字符串]
- 选项:
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能 - 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii) - 显示变量:
echo “$VAR_NAME” #用变量值替换,弱引用
echo ‘$VAR_NAME’ #变量不会替换,强引用
- 高级用法
- 功能:在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码具有颜色的字符
- 格式:”\033[字符背景颜色;字体颜色m字符串\033[0m”
- \033[30m — \033[37m 设置前景色
\033[40m — \033[47m 设置背景色- #字符背景颜色范围: 40–47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色
- #字符背景颜色范围: 40–47
#字体颜色: 30–37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色
- 加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:
- \033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶
8、命令行扩展和被括起来的集合
命令行拓展:“和$()
- 把一个命令的输出打印给另一个命令的参数,放在“和$()中的一定是有输出信息的命令
- 比较 “ ” ,‘ ’, “三者区别
- 单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,”最傻”
双引号:弱引用,不能识别命令,可以识别变量,”半傻不精”
反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续,”最聪明” - 虽然反引号使用的时候方便,但是会出现多次引用的时候会出现无法正确闭合的问题,所以此时可以灵活的使用$()
括号扩展:{}
- 可以实现打印重复字符串的简化形式
- {元素1,元素2,元素3}
{元素1..元素2} - 关闭和开启{}的拓展功能(默认开启)
- {元素1,元素2,元素3}
9、命令行历史
history命令
- 格式:
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg…] - 常用选项:
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
10、bash快捷键
Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出,解锁
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Ctrl + xx 光标在命令行首和光标之间移动
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Alt + Backspace 删除左边单词
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + # 提示输入指定字符后,重复显示该字符#次
11、获得帮助
whatis
- 作用:使用数据库来显示命令的简短描述
- 注意:此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用
- 执行下面命令生成数据库:
CentOS 7 版本以后
mandb
CentOS 6 版本之前
makewhatis
查看命令的帮助
- 内部命令帮助
- help COMMAND
- man bash
- 外部命令及软件帮助
- COMMAND –help(COMMAND -h)
- 显示用法总结和参数列表,大多数命令适用,但并非所有的
- 格式说明:
[] 表示可选项
CAPS或 <> 表示变化的数据
… 表示一个列表
x |y| z 的意思是“ x 或 y 或 z ”
-abc的 意思是 -a -b –c
{ } 表示分组
- 格式说明:
- man COMMAND
- info COMMAND
- man常用于命令参考 ,GNU工具 info 适合通用文档参考
- 方向键,PgUp,PgDn 导航
Tab键 移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入 选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字 文本搜索
q 退出 info
- 方向键,PgUp,PgDn 导航
- 百度
- man命令
- man 提供命令帮助的文件,手册页存放
在/usr/share/man
几乎每个命令都有man的“页面”
中文man需安装包
man-pages
man-pages-zh-CN - man页面分组
- 不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
- 1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux 内核API
- 1:用户命令
- man 提供命令帮助的文件,手册页存放