欢迎光临
我们一直在努力

葵花宝典之Linux基础知识

计算机是现代社会人类必不可少的工具,计算机知识也是未来人类不可或缺的基本生存技能。本篇博客将简要介绍计算机的基本构成,以及linux操作系统的一些入门知识。

1.计算机的组成及公用


冯.诺依曼教授提出现代计算机由5大系统构成:控制器、运算器、器、输入设备和输出设备。经过近百年的发展,虽然各类计算机层出不穷,但大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。

  • 控制器:由其控制计算机完成各种计算、存储、显示等功能。
  • 运算器:根据控制器的指令,从存储器读取计算程序和数据,完成计算,并将结果送给存储器存储或输出设备
  • 存储器:用于存储计算机运行的各类指令和数据,包括高速寄存器、内存等。
  • 输入、输出设备:它们是计算机与人类或其他设备的交互接口,通过输入输出设备,可将程序和数据传给计算机,或将计算机内存储的数据或计算结果传递给其他设备。

2.linux发行版相关知识


Linux是一个开源的操作系统内核。所谓开源就是指任何人在遵守一定的规则下,可以对其进行修改和开发。所谓操作系统内核,是指操作系统中的核心部分,提供了操作系统的基本功能。其和发行版之间的关系可以这样理解:内核相当于一个毛坯房子,而各类发行版可以认为是在毛坯房子上装修好的房子。毛坯房子只有一种,但不同人对房子的功能和审美有不同的需求,也就导致了有各种发行版的存在。

Linux目前主要有三大系列的发行版本:

  1. Debian。Debian诞生与linux发布后的1993年,基于Debian的发行版目前已经发展成为一个庞大的家族。著名的发行版是Ubuntu。自从国内强制规定计算机出厂时必须带操作系统,好多厂商就自带Ubuntu这个免费的系统。还有一个著名的发行版Kali linux,基于Blacktrack开发,它是一个专业的渗透测试和安全审计工具。被网友广泛提及的应用就是用其破解Wifi密码,进行蹭网。还有一个国内的发行版,深度(Deepin)。其前身 Hiweed Linux 是中国第一个基于 Debian的本地化衍生版,它包含有许多自行开发的特色软件,如:深度软件中心、深度截图、深度音乐播放器和深度影音等,在软件中心中,也有很多符合国人使用习惯的软件:wps、腾讯通、qt开发环境、pdf工具等,如果用于日常办公,基本可以满足需求,上手使用也是比较容易的。
  2. RedHat。国人称其为“红帽”。红帽是一家商业公司开发的linux发行版,主要的发行版是RHEL(红帽企业版linux,服务器版),以及fedora(桌面版)。还有一个基于RHEL编译的免费版本:Centos(community enterprise operate system社区企业版操作系统),这也是众多企业在生产环境中使用的版本,也是运维工程师经常遇到的版本之一。
  3. Slackware。相比与Debian和RedHat而言,Slackware就有些薄弱了,其自身发布后,并没有多大的发展,反而是基于Slackware的二次发行版S.u.S.E发展的枝繁叶茂,这其中就包括Opensuse等。
  4. 其它。主要有Gentoo,Arch等。还有一个分支,就是现在广泛应用与移动终端的Android,大量应用于手机、平板电脑、智能电视、电视盒等设备。

具体的Linux发行版本可参考linux Distribution Timeline(https://en.wikipedia.org/wiki/File:Linux_Distribution_Timeline.svg)

3.linux的哲学思想


Linux的哲学思想,可以认为是linux设计开发的基本遵循和基本要求,主要体现在四个方面:

  • 一切皆文件。起初听说一切皆文件这句话,感觉有些蒙。数据在计算机上本来就是以文件的形式存在,而所谓的一切又指的什么?老师讲目录也是文件,也勉强能理解,区别于windows的文件夹,而其将硬件也抽象为文件,确实在一开始难以理解。但在应用中,当你需要使用光盘或者新增加硬盘时,就能对一切皆文件有深一层的认识。在windows中,使用光驱,直接双击就可以,而linux中,光驱需要一个设备文件,注意,就是文件,然后将此设备文件挂载到系统的某个目录下,才可以访问。这里的设备文件,就是将硬件光驱抽象为一个文件,访问硬件,就是要通过这个设备文件访问。
  • 功能单一的程序组合完成复杂功能。自己感觉这个很像目前的社会发展和社会分工。一个人如果会做许多工作,那么这个人很可能在这些工作中都不深入。相反,社会分工越来越细,一个人只需要把一件事做的极致就可以了。对应到计算机上,单一功能的程序可能能完成的任务很少,但它高效、稳定、可靠。这样对于要完成复杂功能,一是可以重复利用很多已经开发好的功能单一的程序,减少开发难度;二是对于复杂程序而言,这种搭积木式的组合,也可使代码高效。
  • 尽量避免和用户交互。可以理解为机器能做的,就不需要人为干预,如果需要关注,系统也可以根据用户指定,输出交互信息。
  • 使用文本文件保存程序配置信息。我们知道,在windows上配置软件,基本都是通过点击选择等操作完成。在linux上,所以的程序配置都是通过文本文件来配置和保存,其优点是对于使用者,文本文件的查看和修改是相当迅速便捷的,节省了使用者的时间。

当然,linux还有很多哲学思想,体现在方方面面中,例如,简洁,从命令的名称中可以看出,只要能让使用者见名知意,能多简单就多简单,绝不多写一个字母。如ls,是list之意,pwd是print work directory之意,很简洁。对于初学者而言,可能会有些困扰,但久了,就能感觉到便捷。

4.一些基础命令


命令是CLI的核心,相对于shell而言,有内部命令(内嵌命令)和外部命令之分。内部命令,是指shell内部自带的命令,外部命令,就是shell外部的程序提供的命令。一个命令主要由三部分组成:命令名、选项、参数。

  • 命令名COMMAND:用于区别各种命令,向操作系统指明了需要完成的动作。
  • 选项OPTION:用于修正命令的动作的,一般而言,命令都有默认动作,而选项就是用于修正命令默认动作的,比如,一个命令默认完成显示功能,而如果要更改显示的具体内容和格式,就需要通过选项来完成。选项分为长选项和短选项,长选项顾名思义,就是“长”,通过 — ,连接一个单词或者单词组合来表示;短选项,就是“短”,方便输入,看起来简洁,通过 – ,连接一个字母来表示,短选项可以组合使用,即通过 – ,连接几个短选项字母。
  • 参数ARGUMENT:用于指明命令的作用对象的,也就是说这个命令作用于谁。可以这样理解,命令名相当于动词,而选项相当于副词或形容词,参数相当于名词。如“买便宜的书”,买是动词,相当于命令名,指明动作是买,便宜的是形容词,修正命令名买,书,说明了买的对象是书,而不是其他物品。

如 ls –l /etc这条命令,ls是命令名,指明的动作是显示,-l,指明了显示时需要使用长格式来显示,而目录/etc则指明了需要显示的是/etc目录,而不是其他。

注意: 有些命令的选项也可以带参数,称为选项的参数,用于说明选项的作用对象

下面介绍几个常见的linux命令

  1. ifconfig 用于显示和配置网络接口(网卡),用于替代ip addr 和ip link 命令
  • 显示网络

ifconfig 不带任何选项和参数,显示系统所有网络接口相关信息

ifconfig INTERFACE_NAME 显示指定网络接口的信息

  • 配置网络

ifconfig INTERFACE_NAME [aftype] options | address …

ifconfig INTERFACE_NAME up | down ,开启或关闭一个网络接口,向交换机接口上的 no shutdown和shutdown一样,为管理员在软件层面上关闭接口。

ifconfig INTERFACE_NAME add 为接口配置一个ip地址,如:ifconfig eth0 add 192.168.31.5

ifconfig INTERFACE_NAME del 删除接口ip地址

ifconfig INTERFACE_NAME netmask add 为指定接口配置掩码

ifconfig还包括设置接口的mtu值、6to4隧道、多播、网卡类型等相关选项。

  1. echo echo的中文意思是回音,这里主要取“回”之意,将echo的内容,根据选项,进行显示。

主要可使用的参数有 –n –e

-n 指显示完成后,不自动换行

-e 指使转意字符生效(默认转意字符不生效) 经常使用的转意字符有以下几个:

\ 输出一个\

\b 输出一个退格键,如echo -e “he\bllo” 将输出 he又输出一个退格键,删除了字母 e,然后接着输出字母 llo,最后结果是 hllo

\v 输出一个垂直制表符

\t 输出一个水平制表符,相当于tab键

\0NNN 使用1到3位控制输出字符的格式的,例如颜色、是否加粗等。如,控制输出字体颜色为红色:echo -e “\033[31mhello\033[0m”或echo -e “\033[31mhello”

第一条命令echo -e “\033[31mhello\033[0m” 第一个\033表示字体要带颜色,设置为31m即红色,第二个\033也表示字体要带颜色,0m表示恢复为使用系统默认颜色。

第二条命令echo -e “\033[31mhello” 在hello后没有控制符,即没有恢复为系统默认颜色,所有在该shell进程中的颜色显示,都将是红色,包括命令提示符等,直到使用0m恢复为系统默认值为止。

  1. tty 显示该终端对应的设备文件
  2. startx 打开图形化用户接口,即GUI
  3. export shell内部命令,用于显示或设置shell变量的值

显示:export –p

设置:export NAME=value

  1. pwd 显示当前的工作目录
  2. history 显示命令历史

history命令用于显示命令历史信息,不带选项时,显示该用户家目录下的.bash_history内容以及此次登录后所运行的命令历史信息。

涉及到history命令的几个环境变量是:

HISTSIZE:默认1000,指当前shell可以保存的命令历史条数

HISTFILE:默认当前用户家目录下的.bash_history

HISTFILESIZE:默认1000,指HISTFILE所能保存的命令历史条数,超过该数量后,后续的命令被保存,最早的命令记录将被删除

HISTCONTROL:共三个值,ignoredumps与上一条命令重复的命令将不被记录在命令历史中(默认值) ignorespace 以空格开头的命令将不被记入命令历史中 ignoreboth 与上一条命令重复和以空格开头的都不被记入命令历史中

常用的选项有 –r 和 –w

-r 指重新加载用户家目录下的.bash_history内容

-w 指将当前shell的命令历史信息增加至.bash_history中

几个相关用法:

!NUM:重新执行命令历史中的第NUM条命令

!ABC:重新执行最近一次以ABC开头的命令

!!:重新执行上一条命令

上下方向键,系统将在内存空间的命令历史中,以时间为顺序,显示最新执行的命令。

8.关机、重启类命令

poweroff关闭系统 poweroff TIME [message]

reboot重启系统 reboot TIME [message]

halt 关闭系统 halt TIME [message]

shutdown 当于基本可以相当于上三条命令合集,可通过选项实现上述三个命令的功能,

shutdown –r TIME [message] 相当于 reboot TIME [message]

shutdown –H TIME [message] 相当于 halt TIME [message]

shutdown –P TIME [message] 相当于 poweroff TIME [message]

不同在于shutdown –c [message] 可取消即将执行的关机或重启操作

poweroff、reboot、halt默认都是调用shutdown来完成操作,通过-f或–force选项,系统将不调用shutdown,而是调用它自己的系统调用来完成相应的poweroff、reboot、halt操作。

9.系统时间类命令

date用于显示系统的日期和时间,不带任何参数,显示时间和日期 。可使用格式化工具控制显示的时间和日期方式。

+%T 时:分:秒

+%D 月/日/年

+%Y 年

+%m 月

+%d 日

+%H 时

+%M 分

+%S 秒

+%s 自1970年1月1日起经过的绝对秒数

以上控制方式可以组合使用,如:date “+%Y-%m-%d %H:%M:%S” 将以类似于2018-02-28 31:38:26的格式显示日期时间信息。

hwclock 显示系统硬件时间,可以认为是bios时间。一般而言,设备开机后,运行的时间越长,硬件时间和系统时间越可能不一致,调整方式如下:

hwclock -hctosys 以硬件时间为准,将系统时间调整为硬件时间(可用短选项 -s)

hwclock -systohc 以系统时间为准,将硬件时间调整为系统时间(可用短选项 -w)

个人认为使用长选项,有明确的英文含义,容易记忆。

1 2
赞(0) 打赏
未经允许不得转载:运维那些事 » 葵花宝典之Linux基础知识

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏