众所周知,前段时间华为在自家的Matebook上装上了深度linux,一时之间引来大家热议。而在近日,华为更是将绝大部分自家的笔记本电脑换上了深度Linux,尤其是一些新电脑,不再有windows版本,直接上深度linux系统。而从实际销售情况来看,据经销商表示没有windows的华为笔记本一样卖得不错,甚至还颇受欢迎,有消费者表示,就喜欢安装了linux版本的华为笔记本。今天就带大家来了解一下Linux系统到底是个什么怪物。
操作系统(Operation System)首先开片一张图带你了解什么是操作系统:
操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现在其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。
没有安装操作系统的计算机,通常被称为裸机,如果想在裸机上运行自己所编写的程序,就必须用机器语言书写程序。如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序。
不同应用领域的主流操作系统
- 桌面操作系统
- Windows 系列用户群体大
- macOS 适合于开发人员
- Linux 应用软件少
- 服务器操作系统
- Linux安全、稳定、免费占有率高
- Windows Server付费占有率低
- 嵌入式操作系统:机顶盒、数字电视、网络电话、程控交换机、手机、PDA等
- Linux
- 移动设备操作系统
- iOS
- Android(基于 Linux)
由上可知,Linux在各个领域都有存在。
2020操作系统占比图
Linux发展史- UNIX
1969 年Ken Thompson 当时在实验室无聊时,为了让一台空闲的电脑上能够运行 "星际旅行(Space Travel)" 游行,在 8 月份左右趁着其妻子探亲的时间,用了 1 个月的时间,使用汇编写出了 Unix 操作系统的原型。1971 年,同样酷爱 "星际旅行(Space Travel)" 的 Dennis M.Ritchie 为了能早点儿玩上游戏,加入了 Thompson 的开发项目,合作开发 UNIX。1973 年初,Dennis M.Ritchie 在 B 语言 的基础上最终设计出C 语言的主体,Thompson 和 Ritchie 迫不及待地开始用它完全重写了现在大名鼎鼎的 Unix 操作系统。
肯·汤普逊(左)和丹尼斯·里奇(右)
- Minix
因为 AT&T 的政策改变,在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不能再使用 UNIX 源代码。Andrew S. Tanenbaum(塔能鲍姆) 教授为了能 在课堂上教授学生操作系统运作的细节,决定在不使用任何 AT&T 的源代码前提下,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议。以 小型 UNIX(mini-UNIX)之意,将它称为 MINIX。
- Linux
1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作。林纳斯 利用 GNU 的 bash 当做开发环境,gcc 当做编译工具,编写了 Linux 内核,一开始 Linux 并不能兼容 Unix,即 Unix 上跑的应用程序不能在 Linux 上跑,即应用程序与内核之间的接口不一致,一开始 Linux 只适用于 386,后来经过全世界的网友的帮助,最终能够兼容多种硬件。
林纳斯(Linus)
- Linux 发行版
Linux 发行版(也被叫做 GNU/Linux 发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。常见的发行版本如下:
Elementary OS:号称是世界上最“漂亮”的发行版,设计精巧,精美出色的桌面,环境预装的应用程序不多;
Linux Mint:对于Linux新手来说,这是一个很好的选择,适用于从Windows/Mac系统切换的用户,完整的多媒体支持,真正实现开箱即用,大量定制选项;
Arch Linux:吸引经验丰富的用户,而不是初学者,巨大的定制潜力,Arch Linux提供了一种更加友好的Linux体验,不适合容易放弃的人;
Ubuntu:Ubuntu是很好的选择,安全稳定的LTS版本,Lubuntu spin非常适合低功耗的个人电脑;
Tails:一个专为有隐私意识的人准备的发行版,强调安全性和隐私性,仍然维护用户友好的UI,功能比较基本;
CentOS:Red Hat Linux企业版的分支,专为稳定性而设计,非常适合服务器使用,不太适合日常桌面使用;
当然还有其他的很多发行版本,比如国产比较火爆的深度Deepin操作系统,Redhat,Fedora,openSUSE,Debian,Manjaro,Mageia等等。
Linux文件和目录我们通过Windows来对比两者文件系统的区别:
在 Windows 下,打开 “计算机”,我们看到的是一个个的驱动器盘符:
每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形。
我们以Ubuntu为例看看,在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面。
Linux 主要目录速查表
很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。
Linux 刚出世时没有什么图形界面,所有的操作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令,就不算会 Linux。
最常用的基础命令:
- 在敲出 文件/目录/命令 的前几个字母之后,按下 tab 键如果输入的没有歧义,系统会自动补全如果还存在其他 文件/目录/命令,再按一下 tab 键,系统会提示可能存在的命令
- 按 上/下 光标键可以在曾经使用过的命令之间来回切换
- 如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl c
终端命令格式:
command [-options] [parameter]
说明:
- command:命令名,相应功能的英文单词或单词的缩写
- [-options]:选项,可用来对命令进行控制,也可以省略
- parameter:传给命令的参数,可以是 零个、一个 或者 多个
其他常用命令:
1. 启动终端: ctr alt t
2. 终端字体放大: ctr shift ' ',终端字体缩小: ctr '-'
3. ls: 查看当前目录下的文件信息
4. pwd: 查看目录所在的路径
5. touch: 创建文件
6. mkdir: 创建文件夹
7. rmdir: 删除文件夹,提示:只能是空文件夹
8. rm: 默认删除的是文件,如果删除文件夹需要加上-r选项,-r:以递归的方式把文件夹下的所有文件信息删除掉
9. cd:切换目录
9.1 cd 目录名 : 切换到指定目录
9.2 cd .: 切换到当前目录
9.3 cd ..: 切换到上一级目录
9.4 cd ~: 切换到当前用户的目录
9.5 cd: 等价与cd ~ 切换到当前用户的目录
9.6 cd -: 切换到上一次目录
10. 绝对路径: 从根目录算起的路径叫做绝对路径,比如: /home/python
11. 相对路径: 从当前目录算起的路径叫做相对路径, 比如: ./AAA ../BBB
12. 路径的使用总结: 如果离当前目录近使用相对路径,如果离根目录近使用绝对路径,如果进入的是中间目录建议使用绝对路径
13. 自动补全: tab键
14. cp: 拷贝
14.1 cp 文件名 路径: 把文件拷贝到指定路径
14.2 cp 路径/文件名 路径: 把指定路径的文件拷贝到指定路径
14.3 cp 文件名 路径/新的文件名 : 先把文件拷贝到指定目录然后再重命名
14.4 cp 文件夹 路径 -r: 拷贝文件夹 -r:以递归的方式把文件夹下的所有文件拷贝过去
15. mv: 移动(剪切)
15.1 mv 文件名 路径: 把文件移动到指定路径
15.2 mv 路径/文件名 路径: 把指定路径的文件移动到指定路径
15.3 mv 文件名 新的文件名: 重命名
15.4 mv 文件夹 路径: 把文件夹移动到指定目录,不需要加上-r
16. tree: 以目录树方式显示当前文件夹信息
16.1 tree / : 以目录树方式显示指定路径的文件信息
17. 命令的格式
17.1 命令名 选项 参数, 提示:有些命令选项可以放到参数的后面,但是:scp 选项必须要放到命令名的后面
18. ls 选项
21.1 -l: 以列表的方式取显示
21.2 -a: 显示隐藏文件
21.3 -h: 显示文件大小的单位
21.4 ll: ls -al 显示隐藏文件并且以列表方式显示 , l->ls
19. mkdir 选项
22.1 -p: 把依赖文件夹提取创建好,比如: mkdir 123/456/789 -p
20. rm选项
23.1 -r: 以递归的方式删除文件夹里面的所有内容
23.2 -i: 显示删除的时候提醒信息
23.3 -v: 显示删除后的描述信息
23.4 -d: 删除空目录
23.5 -f: 如果文件或者目录存在则删除,否则就不删除也不会报错
21. cp选项
24.1 -i:拷贝文件的时候如果指定目录有该文件需要显示提醒信息
24.2 -v:显示拷贝文件的路径描述
24.3 -r:以递归的方式拷贝文件夹里面的所有内容
22. mv选项
25.1 -i:移动文件显示提醒信息
25.2 -v:显示移动后的路径描述
23. 重定向(>,>>): 在终端显示的内容信息重写规定方向,保存到指定文件里面,以后查看数据是文件查看就可以了
23.1 > :如果文件不存在,那么先创建,否则会先把原有文件的数据清空然后再写入
23.2 >> : 在原有数据的基础上进行追加
23.3 总结: ls, cat, tree都可以使用重定向
24. gedit:文本编辑工具,可读可编辑
25. cat: 内容在终端显示,不能进行编辑,提示:适合查看小型文件,大型文件使用分屏方式显示(more)
26. more:分屏显示
29.1 f:表示下一页
29.2 空格:表示下一页
29.3 回车: 表示下一行
29.4 b:表示上一页
29.5 q:退出
27. 文件合并
cat 1.txt 2.txt > 3.txt
28. 管道: 可以理解成是一个容器,存放在终端显示的内容
28.1 总结: ls /bin | more , cat, tree, ls都是可以结合管道使用完成分屏显示的
29. 链接ln
29.1 -s软连接:可以理解成快捷方式,把原文件删除掉通过软链接无法打文件的数据, 提示:创建软连接不会对硬链接数加1
29.2 硬连接: 同一个数据有多个文件名在使用,某个文件删除掉,还可以通过其它文件名访问这个文件的数据, 提示:创建硬链接硬链接数会加1
29.3 提示:如果创建的软链接没有和原文件在同一个目录里面,那么需要使用绝对路径创建软连接
30. grep: 根据指定的内容在文件中进行查找
30.1 grep "a" 8.txt : 根据指定内容在文件中进行查找
30.2 -n:行号, -i:忽略大小写 -v: 取反
30.3 总结: ^,$ [], . 支持的正则表达式
31. find:在指定目录查找对应的文件
31.1 find . -name ".txt": 在当前目录查找后缀是.txt的文件, -name根据文件名查找
31.3 find . -perm 666: 在当前目录查找文件权限是可读可写的, -perm根据权限查找
31.3 总结: ? [] 支持的通配符
32. ls:支持的通配符: _,? , [], []:表示匹配任意列举中的一个字符
33. 通配符: ? _ [],起到了模糊查询的作用
34. tar: 打包、压缩、解包、解压缩
34.1 打包 tar -cvf test.tar *.txt, -c: 表示要打包, -v:显示文件打到包里面 -f:表示文档名称,提示-f必须放到所有选项的后面
34.2 解包 tar -xvf test.tar , -x:表示解包
34.3 打包及压缩合并的命令:tar -zcvf test.tar.gz *.txt
34.4 解压缩及解包合并的命令:tar -zxvf test.tar.gz ->得到对应的文件
34.5 指定解压缩的路径 tar -zxvf test.tar.gz -C ../BBB, -C:指定解压缩后的路径
34.6 tar -jcvf test.bz2 *.txt -> test.bz2
34.7 tar -jxvf test.bz2 -> 得到对应的文件
34.8 -C: 指定解压缩的路径: tar -jxvf test.bz2 -C ../BBB
35. zip的压缩及解压缩
35.1 zip test *.txt -> test.zip ,提示:压缩包的后缀不需要指定默认是.zip
35.2 unzip test.zip -> 得到是压缩包里面的文件
35.3 unzip -d ./123 test.zip -> 解压到指定路径 , -d:表示解压的路径
36. chmod:修改权限
36.1 -r(4):可读 -w(2):可写 -x(1):可执行
36.2 u:当前用户 g: 同组用户 o: 其它用户 a:所有用户
36.3 :添加权限, -:撤销权限 , = : 赋值权限
36.4 chmod 000 1.txt : 全部没有权限
36.5 chmod a=- 1.txt chmod a= 1.txt : 全部没有权限
36.6 chmod 777 1.txt chmod a=rwx 1.txt : 都权限,可读可读可执行
36.7 chmod 664 1.txt chmod u=rw,g=rw,o=r 1.txt 设置不同用户不同权限
37. cp选项
37.1-a: 保留文件原有权限,-a包含-r,也就是使用-a也可以拷贝文件夹
38. which : 查看命令的路径
39. sudo -s: 切换到管理员账号
40. passwd:修改密码
41. who :当前那些用户登陆
42. whoami:当前电脑登陆的用户是谁
43. exit:退出
44. ssh: 远程登陆 44.1 ssh : 可以远程登陆服务端可以通过vim修改文件
45. scp: 远程拷贝
45.1 scp 1.txt python@192.168.107.132:/home/python/Desktop ,把本地文件拷贝到服务器端
45.2 scp -r test python@192.168.107.132:/home/python/Desktop,把本地文件夹拷贝到服务器端
45.3 scp python@192.168.107.132:/home/python/Desktop/1.txt . , 把服务端的文件拷贝的本地
46.4 scp -r python@192.168.107.132:/home/python/Desktop/test . , 把服务端的文件夹拷贝的本地
46. sudo apt-get install 安装包名 :安装软件
sudo apt-get remove 安装包名:卸载软件
sudo apt-get update :更新源码
sudo dpkg -I 安装包文件:安装已下载的文件
sudo dpkg -r xxSoftName :卸载
47. vim的使用
47.1 命令模式Esc, 编辑模式i, 末行模式:, 命令模式是编辑模式和末行模式的中转站
48. vim常用命令
48.1. i: 进入编辑模式
48.2. yy: 复制光标所在行 复制多行: 数字 yy
48.3. p: 粘贴, 粘贴多次: 数字 p
48.4. dd(删除、剪切), 剪切或者删除多行:数字 dd
48.5. V: 选中多行
48.6. 上下左右: k:上, j:下, l:右 ,h:左 等同于方向键
48.7. x: 从前往后删除一个字母
48.8. X: 从后往前删除一个字母
48.9. u: 撤销
48.10. shift >: 往右缩进
48.11. shift <: 往左缩进
48.12. .:重复上一次操作
48.13. G: 回到最后一行
48.14. gg: 回到第一行 1G
48.15. 18G: 回到指定行
48.16. shift 4:回到行末
48.17. shift 6:回到行首
48.18. 搜索: :/1 n:查看下一个搜索到的内容, N:查看上一个搜索到的内容
48.19. 替换: :%s/1/2/g %: 整个文件, s:替换 g:全局
48.20. ctr f: 下一页
48.21. ctr b: 上一页
48.22. :wq, :x: 保存退出
开关机
sync :把内存中的数据写到磁盘中(关机、重启前都需先执行sync)
shutdown -r now或reboot :立刻重启
shutdown -h now :立刻关机
shutdown -h 20:00 :预定时间关闭系统(晚上8点关机,如果现在超过8点,则明晚8点)
shutdown -h 10 :预定时间关闭系统(10分钟后关机)
shutdown -c :取消按预定时间关闭系统
系统信息
who am i :查看当前使用的终端
who 或 w : 查看所有终端
uname -m :显示机器的处理器架构(如x86_64)
cat /proc/version :查看linux版本信息
uname -r :显示正在使用的内核版本
lsb_release -a :查看系统发行版本(如CentOS7)
rpm -qa | grep kernel-devel :查看kernel-devel版本(安装软件时编译内核用,故需要保持内核版本一致性)
yum install -y "kernel-devel-uname-r == $(uname -r)":安装和Linux内核版本匹配的kernel-devel
date :显示系统日期 (date %Y/%m/%d : 显示效果如2018/01/01)
date 070314592018.00 :设置时间(格式为月日时分年.秒 )
clock -w :将时间修改保存到 BIOS
cal 2018 :显示2018年的日历表
clear :清空命令行
ifconfig :显示或设置网卡(查ip等)(类似windows中ipconfig)
ping -c 3 baidu :测试百度与本机的连接情况( -c 3表示测试3次)
cat /proc/cpuinfo :显示CPU的信息
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l :查看物理CPU个数
cat /proc/cpuinfo| grep "cpu cores"| uniq :查看每个物理CPU的核数
cat /proc/cpuinfo| grep "processor"| wc -l :查看逻辑CPU个数即线程数
系统性能
top :动态实时显示cpu、内存、进程等使用情况(类似windows下的任务管理器)
top -d 2 -p 7427 :-d为画面更新的秒数,默认5秒,-p为指定进程pid的信息
vmstat 2 10 :每隔2秒采集一次服务器状态,采集10次(查看内存、io读写状态、cpu)
free -h :查看系统内存及虚拟内存使用情况
df -h :显示磁盘的空间使用情况
iostat :可查io读写、cpu使用情况
sar -u 3 5 :查看cpu使用情况(3秒一次,共5次)
sar -d 2 3 :评估磁盘性能
ps aux|grep firefox :获取火狐的进程号(PID)(可查看进程占用cpu、内存百分比及进程触发指令的路径)
kill -9 进程号 :强制杀死进程
systemctl :查看正在运行的服务
至此Linux基本介绍及使用已经讲解完毕了,大家想学习的可以下载一个上面适合自己的系统用VMware虚拟机安装尝试一下。
作者简介:Python菜鸟工程师,将在接下来的一段时间内与大家分享一些与Python相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!
,