Linux随笔1 - Linux哲学思想与安装

这个系列争取每周更新一些Linux技术相关的分享。

1. 内容导引

本篇将会涉及到下面5方面:

  1. Linux发行版及其衍生关系
  2. CentOS 7.6(1810)安装过程
  3. 如何记录历史命令的 执行时间
  4. Linux哲学思想
  5. 常用命令简介

2. 正文

从这里开始,下面的内容会分别以上述五块内容为标题展开本篇分享。

2.1 Linux发行版及其衍生关系

在Linux的世界里面,有着众多的发行版,其中国内比较主流的比如CentOS、RedHat Enterprise Linux(RHEL)、Ubuntu、Debian以及SUSE和OpenSUSE等等发行版。
上面提到的这些发行版之间是孤立的吗?显然不是,CentOS是RHEL的社区版,其是基于RHEL的源代码,修改了LOGO之后,重新编译而来的,可以理解为换标版RHEL;Ubuntu是基于Debian二次开发出来的;OpenSUSE是基于SUSE衍生出来的。这几个操作系统发行版,基本涵盖了主流的发行版,也就是主流三大门派:

  • Slackware Linux:衍生出了SUSE,此后又从SUSE衍生出了OpenSUSE;
  • Red Hat Linux:衍生出了RHEL、CentOS以及Fedora等发行版,同时也代表了一种典型的软件包管理派系——.rpm后缀名的软件包以及对应的管理工具rpm和yum/dnf;
  • Debian:衍生出了Ubuntu,Mint等发行版,同时代表了另外一种典型的软件报包管理派系——.deb后缀名的软件包以及对应的管理工具dpkg和apt;
    更详尽的衍生关系图谱,参见图1。
    Linux_Distribution_Timeline_27_02_21.png
    上图的高清版本,猛戳这里
    从上图的众多发行版中可以看出,主流的三大门派衍生出了很多发行版,其中不乏一些经典的版本,也有很多生命周期很短的发行版,短暂的存在过。
    随着智能手机称为人手必备的产品,这里就不得不提到另一个Linux发行版——Android,虽然相比于主流的三大门派,这个派系并不算很发达,出现时间也不是很早,但是其在人类社会中的直接用户群体,毫无疑问是最多的。
    简单介绍发行版之后,下面以CentOS 7.6(1810)的安装为例,看下基本的安装过程是怎样的。

2.2 CentOS 7.6(1810)安装过程

关于镜像的获取,参见CentOS官方站点:https://www.centos.org/centos-linux/
这里使用CentOS-7-x86_64-Everything-1810.iso这个镜像,另外,这里的安装过程采用的qemu/kvm进行的,也可以使用vmware这个虚拟机进行CentOS 7.6系统的安装,由于虚拟机的使用和设置此处不做介绍,除了上述两种虚拟机之外,还可以使用Oracle的VirtualBox这个虚拟机。
在准备好镜像文件和虚拟机之后,就可以开始系统安装了。

  1. 打开kvm管理器:Virtual Machine Manager,如下图所示:
    image.png
    点击上图的蓝色方框部分,弹出如下对话框:
    image.png
    在上图中点击“Forward”,进行下一步操作,进行镜像文件选择:
    image.png
    点击上图的“Browse…”,在镜像的下载位置中选择镜像,选择好之后,会自动识别镜像的系统发行版本,具体如下所示:
    image.png
    点击上图的Forward按钮,进行下一步操作:
    image.png
    此处给虚拟机分配内存和CPU的核心数,此处给虚拟机分配了2GiB内存,2个核心。指定完数值之后,点击Forward按钮,进行下一步操作,具体如下所示:
    image.png
    上图中,指定了虚拟机的磁盘镜像文件的位置以及容量,当选择了“Select or create custom storage”之后,就会有镜像文件创建的位置以及容量设置的内容,此处是设置好之后的结果。指定了虚拟机的磁盘镜像文件和虚拟磁盘容量之后,点击Forward按钮,进入下一步操作:
    image.png
    给虚拟机指定名字,完成之后,点击Finish之后,就会开始安装进程,具体如下所示:
    image.png
    在上图的界面中,第三个选项表示问题调试(Troubleshooting);第二个选项表示在开始安装之前,先测试镜像文件;第一个选项表示直接安装,不测试镜像文件。此处通过键盘上的向上方向键选择第一个,直接开始安装系统。具体如下所图所示:
    image.png
    安装进程的第一步是语言和键盘设置,此处选择English -> English(United States),在上图的右上角,是键盘选择,此处选择us美式键盘。然后点击Continue,进行下一步操作,具体如下所示:
    image.png
    设置好键盘和语言之后,接下来是时区和时间的设置,此处设置为Asia/Shanghai为代表的东八区时区,选择好之后,时间和日期会自动切换为东八区对应的时间和日期。设置完成之后,点击左上角的Done按钮,进行下一步操作,具体如下所示:
    image.png
    此处是安装的软件选择,此处选择GNOME桌面环境,然后点击左上角的Done进入下一步操作:
    image.png
    此时会提示正在进行软件包的依赖关系检查,检查完成之后,可以设置其他的选项,比如下面的安装位置(INSTALLATION DESTINATION)、网络和主机名设置(NETWORK & HOST NAME)等。此处分区采用系统默认的自动分区方式,所以下面需要设置的是网络和主机名,点击NETWORK & HOST NAME这个区域,进行设置,如下图所示:
    image.png
    上图左下角设置了主机名为c7u6,右上角的网络忘记点了,所以此时仍然是OFF关闭状态,没有关系,系统安装完成第一次重启之后,图形界面会自动弹出初次使用的配置,仍然可以设置网络,后面会涉及。此时点击左上角的Done进行下一步操作即可:
    image.png
    至此处,点击右小角的Begin Installation即可开始虚拟机操作系统的安装,具体如下图所示:
    image.png
    此处显示还未给root用户设置密码,也未设置普通用户,下面点击ROOT PASSWORD这个区域,设置root用户密码,具体如下所示:
    image.png
    设置完成之后,点击上图左上角的Done按钮,返回刚才的界面,并且点击USER CREATION创建普通用户,具体如下所示:
    image.png
    设置好了用户名和密码之后,点击左上角的Done,返回到安装界面,具体如下所示:
    image.png
    等待上述安装过程完成,这个过程所需要的时间跟选择的软件包多少、虚拟磁盘所在的物理磁盘的读写速度等方面都有关系,通常选择的软件包越少,安装所需时间也越少;虚拟磁盘所在的物理磁盘的读写速度越快,所需要的时间也越少。
    安装过程完成之后,如下图所示:
    image.png
    至此,安装过程就完成了,点击右下角的Reboot重启系统。
  2. 安装完成,重启之后的首次使用时的配置
    在安装完成之后,重启系统第一次进入到系统的时候,会有一些基础设置,具体如下所示:
    image.png
    上图的红字显示,还未接受许可证信息,点击LICENSE INFORMATION区域,具体如下所示:
    image.png
    点击上图的左下角处的单选框I accept the license agreement.然后点击左上角的Done按钮,回到刚才的设置界面,并点击NETWORK & HOST NAME这个区域对主机名和网络进行设置,具体如下所示:
    image.png
    点击上图的右上角,将网络设置为开启状态。设置完成之后,点击左上角的Done按钮,回到设置界面,具体如下所示:
    image.png
    此时,点击上图右下角的FINISH CONFIGURATION按钮,即可进入到用户登录界面,具体如下所示:
    image.png
    点击上图的用户名,然后输入密码之后,进入到桌面环境,此时会弹出语言设置对话框,具体如下所示:
    image.png
    此处仍然选择English,然后点击右上角的Next按钮,进入到键盘类型设置界面,具体如下所示:
    image.png
    此处仍然选择美式英语键盘,然后点击右上角的Next按钮,进入隐私设置界面,具体如下图所示:
    image.png
    此处,关闭了位置服务,然后点击右上角的Next按钮,进行下一步,即在线账户设置,具体如下所示:
    image.png
    此处直接选择右上角的Skip按钮,跳过此步设置,进行下一步,具体如下所示:
    image.png
    至此,设置完成,点击Start Using CentOS Linux即可。此时会弹出About窗口,其中包含了操作系统使用的一些帮助信息。关闭该窗口即可。如下所示:
    image.png
    关闭窗口,即可回到桌面环境,具体如下所示:
    image.png
    至此,虚拟机操作系统就安装完成了。

2.3 如何记录历史命令的执行时间

Linux的命令行操作,是可以记录历史命令的,在图形界面环境中,点击打开Terminal,然后在其中输入history命令,即可展示出命令历史,具体如下图所示:
image.png
默认情况下,history命令的输出中只包含命令内容、序号,并不包含命令的执行时间。为了让历史命令中记录命令的执行时间,就需要使用到一个环境变量HISTTIMEFORMAT,在其中指定时间格式即可。关于该环境变量的常用时间格式,常用的时间格式有如下几种:

  • %m:表示月份,值为01-12;

  • %d:表示日期,值为01-31;

  • %y:表示年份,双位数表示,比如2021年表示为21;

  • %Y:表示年份,四位数表示,比如2021年表示为2021;
    如果要表示月日年的形式进行表述,可以使用上述符号写为“%m/%d/%y”,这种表示方式也可以被简写为“%D”的形式,效果相同。如果要表述为年月日的方式,既可以写为“%Y-%m-%d”这种组合方式,也可以写为“%F”的形式(ISO 8601时间格式);

  • %T:表示具体的时间,24小时时间格式,等效于(%H:%M:%S)

  • %H:表示小时,取值范围为00-23;

  • %M:表示分钟,取值范围为00-59;

  • %S:表示秒数,取值范围为00-60;
    知道了时间格式的构成要素,下面就可以进行设置了,此处在命令行中直接给HISTTIMEFORMAT环境变量进行赋值的方式进行设置,在命令行终端中执行命令export HISTTIMEFORMAT='%d/%m/%Y %T ',具体效果如下图所示:
    image.png
    从上述输出中可以看出,历史命令中已经记录了具体的执行时间。
    上述这种直接在命令行终端中给环境变量赋值的方式,只对当前当前终端有效,如果再开启一个新的终端,则依然无法记录历史命令的执行时间。为此,就需要将上面的环境变量赋值命令写如到配置文件中。

  • 关于配置bash的配置文件,如果针对当前用户而言,那么可以将上述的环境变量赋值命令`export HISTTIMEFORMAT=’%d/%m/%Y %T '写入到用户家目录的.bashrc或者.bash_profile文件中,可以在命令行中执行如下命令进行:

    $ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
    

    执行完上述命令之后,再开启新的命令行终端,就可以在所有的终端中生效了,即每个 终端中都可以记录到命令执行时间。

  • 如果针对所有用户进行记录,那么可以将上述的环境变量赋值命令`export HISTTIMEFORMAT=’%d/%m/%Y %T '写入到bash的全局配置文件/etc/bashrc或者/etc/profile中,建议的方式是在/etc/profile.d/目录中创建一个.sh为后缀名的文件,并将上述命令写入到该文件中,可以执行如下命令进行设置:

    $  echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' > /etc/profile.d/env_setup.sh
    

    执行完上述操作之后,对于已经打开的命令行终端,还不能生效,此时需要执行一下命令source /etc/profile,此后就可以了。

更多的关于历史命令以及时间格式的记录帮助信息,参见如下man手册:

$ man bash
$ help history
$ man 3 strftime

2.4 Linux哲学思想

很多人都会用一些所谓的人生观哲学来指导自己在日常生活中的待人接物,为人处事。不同的人有不同的人生哲学,同一个人,可能也是被多个人生哲学所影响着。那么Linux操作系统的人生哲学又是怎样的呢?
Linux的哲学思想基本是派生自Unix操作系统,Mike Gancarz在他的《Linux and the Unix Philosophy》书中这样概述Unix哲学思想:

An operating system, by its nature, embodies the philosophy of its creators… The creators of the Unix operating system started with a radical concept: they assumed that the user of their operating system would be computer literate from the start. The entire Unix philosophy revolves around the idea that the user knows what he or she is doing.

上面的概述中,最关键的一句话就是“The user knows what he or she is doing.”,即用户应该知晓他们正在做的操作以及该操作可能带来的影响。
除此之外,还有一些比较有意思的哲学思想,摘录如下:

  • The user should know better…so he must specify how things work:用户需要更好的理解所做的操作,因为他们需要指定这些操作如何进行

  • Provide mechanisms, not policy: 提供机制,而不是策略

    • Mechanism: long life time:因为机制是长生命周期的,通常具有指导意义的
    • Policy: short life time:而策略,更倾向于针对特定时期的特定任务的处理方法,是典型的短生命周期的
  • Its not friendly, but its efficient:使用体验并不友好,但是很高效

    • Don’t confuse ease of use with efficiency:易用不代表效率,不要将效率与易于使用相混淆
    • Pedestrian OS’es achieve glossiness by locking users into one interface policy. Its narrow, rigid and works well for a fixed set of jobs. But, unanticipated tasks are often impossible of very painful.:通过将用户限定在单一接口的策略,可以实现更好的系统使用体验。但是它是狭隘、呆板的,可能对于固定的任务和工作是可以很好的胜任的。但是对于那些通常是无法预期的任务,使用这种单一接口的系统则会非常痛苦。
  • Easy things are easy, hard things are possible:简单的事情总是很简单,困难的事情也是有可能做到的

  • Linux provides a large set of simple tools…which can be connected with well specified interfaces…which are usually textual data streams.:Linux提供了大量简单的工具,进行文本数据流的处理

  • No one big tool is smart enough to handle all cases or optimized for everything or can anticipate all the uses to which it may be put.:没有任何一个大型工具可以智能出的处理所有使用场景,或者优化其所有方面,亦或者可以预料到所有的使用场景

  • It’s a big tool box, and a lumberyard full of lumber:它是一个大的工具箱,就像一个包含了所有木料的木材厂

  • We get a big say in what gets built and how its structured:对于它的构建以及其内部是如何架构起来的,总是有很多内容可以引申

  • Button pushers are easily replaced, craft your own tools:只会点按钮的人很容易被替代,打磨你所掌握的工具,构建自己的知识和技能体系才能提高自己的不可替代性

  • Resist and be creators of new things:持之以恒,保持创新

最后一条,以一张图结束:
image.png
Linux学习,从娃娃抓起。所以,跟你的孩子谈论Linux吧😜😁

2.5 常用命令简介

关于Linux的命令使用方式,可以经常的执行man命令查看命令帮助手册,下面以几种使用频率比较高的命令做简单介绍:

  • export:这个命令的使用形式比较简单,前面设置history命令记录命令的执行时间的时候,就用到了这个命令。其使用形式为:export [-fn] [name[=word]] ...,在命令中,除了选项之外,一般总会包含赋值表达式。比如export HISTSIZE=10000

    帮助信息如下所示:
    The supplied names are marked for automatic export to the environment of subsequently executed commands. If the -f option is given, the names refer to functions. If no names are given, or if the -p option is supplied, a list of names of all exported variables is printed. The -n option causes the export property to be removed from each name. If a variable name is followed by =word, the value of the variable is set to word. export returns an exit status of 0 unless an invalid option is encountered, one of the names is not a valid shell variable name, or -f is supplied with a name that is not a function.

  • echo:这个命令的使用形式也相对简单,其可以用于打印变量内容,或者结合重定向操作符打印内容到特定的位置。命令形式为echo [SHORT-OPTION]... [STRING]...,前面在设置历史命令中记录执行时间的时候也用到了这个命令:echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile。关于该命令的更多详细用法,参见命令手册man echo

  • date:这个命令用于输出系统时间,同时也可以对系统时间进行调整何设置。该命令的使用形式为date [OPTION]... [+FORMAT]。示例如下图所示:

    image.png
    更多关于该命令的使用方式,参见man date

  • ifconfig:这个命令可以查看、设置网卡信息,其使用形式为ifconfig [-v] interface [aftype] options | address ...,比如查看网卡eth0的信息,可以执行命令ifconfig eth0,要启动一个网卡,可以执行命令ifconfig eth0 up,注意,这个命令对网卡的设置都是临时的,重启即失效。

3. References

本文用到的参考资料如下:
https://en.wikipedia.org/wiki/List_of_Linux_distributions
https://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/
https://opensource.com/business/14/12/linux-philosophy
http://en.wikipedia.org/wiki/Unix_philosophy
http://www.catb.org/~esr/writings/taoup/html/index.html
http://web.engr.oregonstate.edu/~traylor/ece474/beamer_lectures/linux_philosophy.pdf

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值