初识Linux

Linux是什么?

  • 再说linux之前,你肯定知道windows,Android,Iphone或MacOS,他们就是让我们更方便的使用计算机硬件资源,让我们以更容易的方式去使用计算机的一个底层软件。狭义上的Linux其实与其他几个操作系统还略有不同,因为Linux其实只将硬件资源进行整理,组织,并以一个统一的接口向上输出,说白了就是个内核,他本身并不具有任何应用层的功能,比如帮我们启动一个web服务,内核是做不到的,而且也没必要由内核去做。广义上的Linux是有Linux内核+GNU工具集共同组成的一个有应用层功能的操作系统。
  • 所以,如果我们想使用Linux,那么就必须有Linux和一些工具,才能达到我们可以使用的目标,而自行构建一个Linux系统是比较繁琐的,因此,在各种社区和组织的热情下,他们按照自己的意愿或想法,做成了各Linux发行版,这些发行版才是用户能直接使用的操作系统。

Linux发行版

  • 由于Linux源码是开源的,所以任何人都可以构建属于自己的Linux,因此导致了出现了各种各样的Linux发行版,这也致使Linux社区如火如荼的快速发展的原因之一,如今已成为自由软件业的巨无霸。
  • 此处介绍几个著名的发行版和一些新兴的Linux发行版
    • slackware
      • S.u.S.E:德国 SuSE Linux AG公司发行维护的Linux发行版,SUSE 让管理员方便管理Linux服务器,即使是有经验的Linux管理员,SUSE也是事半功倍的好用的工具些SUSE服务,包括多个SUSE配置文件需要捆绑在一起。管理员不必找出是哪些SUSE配置文件,因为SUSE提供了一个通用的接口,适SUSE用修改所有相关的文件。
        • openSUSE:openSUSE项目除了提供一个发行版,还包括一个Open Build Service,openSUSE的目的是提供提供一个稳定的基础并让用户通过Open Build Service得到额外的更多更新的软件,甚至是一个滚动发行的版本命为Tumbleweed。系统默认KDE作为图形环境,当然GNOME也是很不错的,其他也有Xfce、LXDE等图形环境。openSUSE是著名Novell公司旗下的 Linux的发行版,发行量在欧洲占第一位。它采用的KDE5作为默认桌面环境,同时也提供GNOME桌面版本。它的软件包管理系统采用RPM和自主开发的zypper,而且提供了一个管理系统和zypper的特色工具——YaST,这些工具颇受好评。他的用户界面非常华丽,甚至超越Windows 7,而且性能良好。
    • debian
      • ubuntu:Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版。由于Ubuntu 是开放源代码的自由软件,用户可以登录Ubuntu 的官方网址免费下载该软件的安装包。Ubuntu是世界上最流行的Linux系统之一,比Ubuntu更大的是自由软件,而比自由软件更大的则是自由软件的社区。Ubuntu社区为其使用者提供了多种学习、交流、切磋和讨论方式,如论坛、星球、维基及IRC即时通信等。通过Ubuntu庞大的社区组织,Ubuntu用户可以获得很多帮助和支持,使得Ubuntu使用起来更加得心应手。
      • kali:Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。Kali Linux预装了许多 shen透 测试软件,包括nmap 、Wireshark 、John the Ripper,以及Aircrack-ng. 用户可通过硬盘、live CD或live USB运行Kali Linux。Kali Linux既有32位和64位的镜像。可用于x86 指令集。同时还有基于ARM架构的镜像,可用于树莓派和三星的ARM Chromebook
      • deepin:deepin(原名:Linux Deepin;中文通称:深度操作系统)是由武汉深之度科技有限公司在Debian基础上开发的Linux操作系统,其前身是Hiweed Linux操作系统,于2004年2月28日开始对外发行,可以安装在个人计算机和服务器中。深度操作系统是基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本、台式机和一体机。深度操作系统(deepin)包含深度桌面环境(DDE)和近30款深度原创应用,及数款来自开源社区的应用软件,支撑广大用户日常的学习和工作。另外,通过深度商店还能够获得近千款应用软件的支持,满足您对操作系统的扩展需求。深度操作系统由专业的操作系统研发团队和深度技术社区共同打造,其名称来自深度技术社区名称“deepin”一词,意思是对人生和未来深刻的追求和探索。深度操作系统(deepin)是中国第一个具备国际影响力的Linux发行版本,截止至2019年7月25日,深度操作系统支持33种语言,用户遍布除了南极洲的其它六大洲。深度桌面环境(deepinDDE)和大量的应用软件被移植到了包括Fedora、Ubuntu、Arch等十余个国际Linux发行版和社区,在开源操作系统统计网站DistroWatch上,deepin长期位于世界前十。
      • Linux Mint:Linux Mint 由 Linux Mint Team 团队于2006年开始发行,是一份基于 Ubuntu 和 Debian 的 Linux 发行版。其目标是提供一种更完整的即刻可用体验,这包括提供浏览器插件、多媒体编解码器、对 DVD 播放的支持、Java 和其他组件,它也增加了一套定制桌面及各种菜单,一些独特的配置工具,以及一份基于 web 的软件包安装界面。Linux Mint 是对用户友好而功能强大的操作系统。它诞生的目的是为家庭用户和企业提供一个免费的,易用的,舒适而优雅的桌面操作系统。Linux Mint 诞生的目的是为家庭用户和企业提供一个免费的,易用的,并且漂亮的桌面系统。 Linux Mint的一大雄心是:使用最先进的技术而不是美化的看起来像Windows的软件使普通人也感到易用,使自己成为可以和Windows并驾齐驱的操作系统。
    • redhat
      • CentOS:CentOS是免费的、开源的、可以重新分发的开源操作系统 ,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一。自2004年3月以来,CentOS Linux一直是社区驱动的开源项目,旨在与RHEL在功能上兼容。每个版本的 CentOS都会获得十年的支持(通过安全更新方式),新版本的 CentOS 大约每两年发行一次。而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。通过这样建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。
      • Fedora:Fedora Linux(第七版以前为Fedora Core)是由Fedora项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora是商业化的Red Hat Enterprise Linux发行版的上游源码。Fedora对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。Fedora大约每六个月发布新版本。
      • Oracle Linux
    • gentoo:Gentoo Linux是一套通用的、快捷的、完全免费的Linux发行,它面向开发人员和网络职业人员。与其他发行不同的是,Gentoo Linux拥有一套先进的包管理系统叫作Portage。在BSD ports的传统中,Portage是一套真正的自动导入系统,然而Gentoo里的Portage是用Python编写的,并且它具有很多先进的特性, 包括文件依赖、精细的包管理、OpenBSD风格的虚拟安装,安全卸载,系统框架文件、虚拟软件包、配置文件管理等等。Gentoo Linux是一种可以针对任何应用和需要而自动优化和自定义的特殊的Linux发行版。Gentoo拥有优秀的性能、高度的可配置性和一流的用户及开发社区。由于Portage技术的产生,Gentoo Linux可以担当一个理想的安全服务器、开发平台、专业级桌面应用、游戏服务器、嵌入式应用等等各种角色。由于其无限制的可配置性,我们甚至可以称Gentoo Linux为一个元发行版。
    • Arch Linux:Arch Linux是一款基于x86-64架构的Linux发行版。系统主要由自由和开源软件组成,支持社区参与。系统设计以KISS原则(保持简单和愚蠢)为总体指导原则,注重代码正确、优雅和极简主义,期待用户能够愿意去理解系统的操作。Arch Linux系统安装、删除和更新软件的软件包管理器叫做pacman。Arch Linux采用滚动发行模式来获取系统更新和软件的最新版本。系统安装映像只简单地包含系统主要组件。 Arch Linux以社区Wiki的形式提供文档,称为Arch Wiki。该Wiki经常编有特定主题的最新信息,受到了Linux社区的广泛认可,内容也应用在Arch Linux以外的领域。
    • LFS:LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译Linux的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的Linux,不单单是个性的桌面。实际意义LFS的意义不在于机械地编译,事实上,按照文档描述,简单地点击键盘即可生成一个简略的发行版,这并不是存在时间达13年的LFS的目的。LFS的意义在于让使用者理解编译参数的作用,理解补丁的作用,理解LFS附带的脚本的工作过程,从而达到脱离LFS、独立制作并完善发行版的目的。由于LFS提供的是一个通用的Linux发行版制作流程,LFS并不能保证制作最终产物符合制作者个人口味,也不能保证质量。
    • Android:安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
  • 不同发行版之间的区别主要是应用层的区别,因为都是采用linux内核,只是上层的应用程序不同或者各服务的组织方式不同。

安装CentOS7.9

  1. 下载CentOS7.9镜像
  2. 下载并安装vmware
  3. 使用vmware创建虚拟机VM1
  4. 插入系统镜像文件到VM1,开机
  5. 根据Anaconda安装向导程序进行安装,配置主机名,设置用户名,password 等等,安装完毕后重启系统
  6. 使用用户名 password 登录系统,结束

安装Ubuntu

  1. 下载ubuntu镜像
  2. 下载并安装vmware
  3. 使用vmware创建虚拟机VM2
  4. 插入系统镜像文件到VM2,开机
  5. 根据安装向导程序进行安装,配置主机名,设置用户名,password 等等,安装完毕后重启系统
  6. 使用用户名password 登录系统,结束

进行配置

  • 使用history时,可以看到当时执行命令的日期和时间

    • 首先 man history,查看关于history相关的帮助信息,发现history是shell的内建命令(因为出来的是bash的帮助页),然后搜索history,发现有一个环境变量HISTTIMEFORMAT可以调整录入.bash_history的格式,在帮助信息里可以看到有一句,it is used as a format string for strftime(3) to display the time stamp associated with each displayed history entry.,所以,我们 man strftime以寻求更多的关于格式的信息,发现可以使用 "%F %T"来设置我们期望的格式,为了能将此配置永久的保存,我们将 HISTTIMEFORMAT="%F %T "写入到shell的配置文件中,echo 'HISTTIMEFORMAT="%F %T "' > /etc/profile.d/env.sh && source echo 'HISTTIMEFORMAT="%F %T "' > /etc/profile.d/env.sh即可
    • 如果执行man strftime时,显示 No manual entry for strftime,那么我们需要安装帮助手册页 yum install -y man-pages
    • HISTTIMEFORMAT配置信息放到 /etc/profile.d/env.sh 是因为shell启动时会读取 /etc/profile.d/*.sh下的所有以 .sh结尾文件
  • Linux的哲学思想

    • 一切皆文件
    • 一个命令只做一件事
    • 将多个命令用管道连接起来完成一些大的复杂的任务
    • 用文本文件保存配置信息
    • 尽量避免与用户交互
  • Linux中常用的小命令

    • ls:显示某个目录的文件信息
      • ls [OPTION...] [FILE OR DIR]...
      • ls /etc/sysconfig/network-scripts
      • ls -ld .
    • echo:打印东西到屏幕上
      • echo [OPTION...] [YOUR WANT TO PRINT DATA]...
      • echo Hello World!
      • echo -e "\e[1;31mI am red\e[0m"
    • screen:启动一个新的屏幕,可以将一些期望在后台运行的程序在screen内运行
      • screen
      • screen -S "TITLE"
      • 在screen内,可以使用组合键 ctrl+a,ctrl+d暂时剥离此screen,先同时按 ctrl和a,然后松手在同时按 ctrl和d键即可
      • 连接某个 screen -x [TITLE]
    • date:查看当前的日期
      • date "+%F %T",是不是跟刚才设置history文件的格式很像,其实几乎所有的关于时间日期的设置都是有着规范的
    • ifconfig:用来查看网卡信息
      • ifconfig 查看处于活动状态的网络接口
      • ifconfig -a,查看所有的网络接口的信息
    • export:用于将一个变量导出为环境变量
      • export VARIABLE
      • export PS1="\e[1;34m[\u@\H \w]\\$\e[0m "
  • Linux发行版文件系统个目录的功能,命名规则及用途

    • /bin:用来存放普通用户可以使用的一些常规命令,如ls,cd
    • /sbin:用来存放root用户的一些具有管理功能的命令,如poweroff等
    • /usr/bin:与 /bin很像,在CentOS7以后,/bin为/usr/bin的软链接
    • /usr/sbin:与/sbin很像,同上
    • /lib:用来存放一些程序依赖的库文件,主要为32位的
    • /lib64:用来存放一些程序依赖的库文件,主要为64位的
    • /usr/lib:与/lib相似,同上
    • /usr/lib64:与/lib64相似,同上
    • /boot:用来存放系统启动相关的程序及配置
    • /home:默认用来存放所有用户的家目录
    • /root:用来存放root用户的家目录
    • /etc:用来存放各种配置文件
    • /dev:用来存放各种设备文件
    • /tmp:用来存放各种程序或用户产生的临时文件
    • /var:用来存放各种程序所用到的会变化的文件或数据文件
    • /usr:是一个独立的子层级结构
    • /usr/local:是一个子层级结构
    • /mnt:用于挂载一些临时设备的目录
    • /media:用于挂载一些媒体媒体介质的目录,如cdrom等
    • /proc:用于输出一些内核相关的信息及参数
    • /sys:用来存放有关设备的一些信息
    • /srv:可以用于存放服务程序及相关文件

总结:

  • 主要介绍了Linux个发行版的概况
  • 粗略介绍CentOS和Ubuntu的安装
  • 对Linux进行简单的配置
  • 简单介绍了下Linux的哲学思想
  • 介绍了一些常用的小命令
  • 简述了Linux根文件系统上各目录的功能及用途