众所周知,前段时间华为在自家的Matebook上装上了深度linux,一时之间引来大家热议。而在近日,华为更是将绝大部分自家的笔记本电脑换上了深度Linux,尤其是一些新电脑,不再有windows版本,直接上深度linux系统。而从实际销售情况来看,据经销商表示没有windows的华为笔记本一样卖得不错,甚至还颇受欢迎,有消费者表示,就喜欢安装了linux版本的华为笔记本。今天就带大家来了解一下Linux系统到底是个什么怪物。

操作系统(Operation System)

首先开片一张图带你了解什么是操作系统:

linux系统是华为开发的吗 华为都开始用Linux了(1)

操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现在其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。

没有安装操作系统的计算机,通常被称为裸机,如果想在裸机上运行自己所编写的程序,就必须用机器语言书写程序。如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序。

不同应用领域的主流操作系统

  1. Windows 系列用户群体大
  2. macOS 适合于开发人员
  3. Linux 应用软件少
  1. Linux安全、稳定、免费占有率高
  2. Windows Server付费占有率低
  1. Linux
  1. iOS
  2. Android(基于 Linux)

由上可知,Linux在各个领域都有存在。

linux系统是华为开发的吗 华为都开始用Linux了(2)

2020操作系统占比图

Linux发展史

1969 年Ken Thompson 当时在实验室无聊时,为了让一台空闲的电脑上能够运行 "星际旅行(Space Travel)" 游行,在 8 月份左右趁着其妻子探亲的时间,用了 1 个月的时间,使用汇编写出了 Unix 操作系统的原型。1971 年,同样酷爱 "星际旅行(Space Travel)" 的 Dennis M.Ritchie 为了能早点儿玩上游戏,加入了 Thompson 的开发项目,合作开发 UNIX。1973 年初,Dennis M.RitchieB 语言 的基础上最终设计出C 语言的主体,ThompsonRitchie 迫不及待地开始用它完全重写了现在大名鼎鼎的 Unix 操作系统。

linux系统是华为开发的吗 华为都开始用Linux了(3)

肯·汤普逊(左)和丹尼斯·里奇(右)

因为 AT&T 的政策改变,在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不能再使用 UNIX 源代码。Andrew S. Tanenbaum(塔能鲍姆) 教授为了能 在课堂上教授学生操作系统运作的细节,决定在不使用任何 AT&T 的源代码前提下,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议。以 小型 UNIX(mini-UNIX)之意,将它称为 MINIX。

1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作。林纳斯 利用 GNU 的 bash 当做开发环境,gcc 当做编译工具,编写了 Linux 内核,一开始 Linux 并不能兼容 Unix,即 Unix 上跑的应用程序不能在 Linux 上跑,即应用程序与内核之间的接口不一致,一开始 Linux 只适用于 386,后来经过全世界的网友的帮助,最终能够兼容多种硬件。


linux系统是华为开发的吗 华为都开始用Linux了(4)

林纳斯(Linus)

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 下,打开 “计算机”,我们看到的是一个个的驱动器盘符:

linux系统是华为开发的吗 华为都开始用Linux了(5)

每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形。

我们以Ubuntu为例看看,在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):

linux系统是华为开发的吗 华为都开始用Linux了(6)

Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面。


linux系统是华为开发的吗 华为都开始用Linux了(7)

Linux 主要目录速查表

  • /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
  • /bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
  • /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
  • /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
  • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件
  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下~ 表示当前用户的家目录
  • /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
  • /lost fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
  • /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
  • /opt:给主机额外安装软件所摆放的目录
  • /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间
  • /root:系统管理员root的家目录
  • /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
  • /usr:应用程序存放目录。/usr/bin:存放应用程序,/usr/share:存放共享数据,/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local:存放软件升级包,/usr/share/doc:系统说明文件存放目录,/usr/share/man:程序说明文件存放目录
  • /var:放置系统执行过程中经常变化的文件,/var/log:随时更改的日志文件,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其 PID 存放在该目录下。
  • 常用 Linux 命令的基本使用

    很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。

    linux系统是华为开发的吗 华为都开始用Linux了(8)

    Linux 刚出世时没有什么图形界面,所有的操作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令,就不算会 Linux

    最常用的基础命令:

    linux系统是华为开发的吗 华为都开始用Linux了(9)

    终端命令格式:

    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相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!

    ,