01葵花宝典之Linux基础知识

linux, ifconfig, man, pwd, echo, date, hwclock, fhs

 

计算机是现代社会人类必不可少的工具,计算机知识也是未来人类不可或缺的基本生存技能。本篇博客将简要介绍计算机的基本构成,以及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

  • 配置网络

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

echo

\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恢复为系统默认值为止。

echoColor

  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的格式显示日期时间信息。

date

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

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

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

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

5.linux帮助

对linux而言,一个程序,应该由四部分组成,一是程序的二进制文件,二是程序运行所依赖的库文件,三是程序的配置文件,四是程序的帮助文件。帮助信息是程序使用者学习程序使用的重要部分,一个没有帮助信息的程序,是不可以想象的。

上一节提到过,命令由内外之分,对于linux命令的帮助信息而言,不同类别命令,也有不同的获取办法(查看命令是内部或外部命令使用type [COMMAND])。

对于内部命令,使用help [COMMAND]来获取帮助信息。

对于外部命令,则有以下几种方式:一是使用man命令,即man [OPTIONS] [COMMAND];二是使用info命令,即info [OPTIONS] [COMMAND];三是一般外部命名会有一个长选项,–help(有些会有短选项 –h),使用 command_name –help 来获取帮助信息。

注意:man命令不仅仅可以显示外部命令的帮助信息,还可以显示一些诸如配置文件的使用帮助信息。

man命令是查找帮助信息的最常用的命令,下面详细介绍:man是manual的前三个字母,是手册的意思,用于显示一个命令的手册信息。这个手册是命令开发人员根据一定的规范编写的。手册信息根据不同内容分为不同的章节,一般分为8个章节,分别如下:

  • 1 User Commands 用户命令帮助
  • 2 System Calls 系统调用帮助
  • 3 C Library Functions C库函数
  • 4 Devices and Special Files 设备和特殊文件
  • 5 File Formats and Conventions 文件格式
  • 6 Games et. Al. 游戏
  • 7 Miscellanea 杂项
  • 8 System Administration tools and Daemons 系统管理工具和守护进程

还有一些其他章节帮助信息,如1p、0、1x、9等。一个manual手册,可能包含上述的某几个章节,或者一个章节,在使用时,man命令根据其默认配置文件(/etc/man.config),查找到第一个章节,并予以显示(man内部显示使用less –is命令)。如果要显示其它章节,则需要使用man # COMMAND,其中#表示章节。需要查看一个手册都有哪些章节时,使用whatis 命令。

前面提到,man命令显示手册时,内部使用的是less -is命令,所以,在查看时,可以使用一些同less命令相同的一些屏幕控制和文本查找方式:

  • f 或者F 或者 SPACE(空格键),向翻整屏
  • b 或者B:backward,向翻N行,默认整屏
  • d 或者D:downward,向翻N行,默认屏幕的一半行数,即翻半屏
  • u 或者U:backward,向翻N行,默认屏幕的一半行数,即翻半屏
  • ENTER(回车键),默认向下翻1行
  • 查找: 使用/keyword或者?keyword

/keyword从当前位置向查找keyword,查找到后,屏幕以查找到的第一个keyword为第一行开始显示,使用n或N键在查找到的关键字之间跳转

?keyword从当前位置向查找keyword,查找到后,屏幕以查找到的第一个keyword为第一行开始显示,使用n或N键在查找到的关键字之间跳转

  注意:在使用n或N跳转时,n表示跳转方向和使用的/或?方向相同,即如果使用/,n则表示向下一个跳转,如果使用?,n则表示向上调转 .查找的keyword不区分大小写 ,最后使用q退出man手册。

6.linux发行版基础目录名称命名法则及功用规定

Linux由于是一个开源系统,每个人都可以对其做修改,这样就可能导致其目录五花八门、支离破碎。为解决这一可能存在的问题,Linux设计了FHS(Filesystem Hierarchy Standard 文件系统层级标准)来规范一个linux系统中所需要有的文件及其名称。

    / 根目录,即任何的linux系统必须有根目录,其他一切目录和文件都以根为起始点
    /bin binary,用户的基本命令二进制文件
    /boot 系统启动时boot loader需要的所有文件,但不包括配置文件
    /dev 设备文件,一般不需要手动创建
    /etc 配置文件
     /home 默认普通用户的家目录文件
    /lib 基本共享库和内核模块
      /lib64 64位系统上的基本共享库和内核模块
    /media 可移动设备的挂载点,如移动硬盘、U盘、CDrom等
    /mnt 临时文件系统或设备的挂载点,
    /opt optional用于安装一些可选的的程序
    /sbin system binary 系统管理员命令的基本二进制文件(一般只读)
    /srv 系统提供的数据
    /tmp 临时文件
              /usr universal shared resource通用共享资源,它是FHS的第二大部分。它是共享的只读数据。并且,它一般和系统平台没有关系,即不同的主机之间的/usr是可以通用的
      /usr/bin 用户命令二进制文件
      /usr/include C程序的头文件包含
      /usr/lib 库文件
      /usr/local 本地的层级机构(一般安装完系统为空)
      /usr/sbin 非重要的系统命令二进制文件
      /usr/share 与平台无关的共享数据
    /var 存储可变数据文件。包括有锁文件、日志文件、邮件等
    /proc 虚拟文件,即将与系统相关的内存中的数据抽象为文件,供用户调用和查看
    /sys 虚拟文件,与/proc目录功能相同,在新的linux内核中采用。

具体参考站点:http://www.pathname.com/fhs/

以上是对linux的一些粗浅认识,肯定有很多错误和理解不到位的地方,请联系:1103212768@qq.com

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91787

(3)
koalakoala
上一篇 2018-02-28
下一篇 2018-03-01

相关推荐

  • Corosync + Pacemaker 搭建高可用MariaDB服务

    Corosync + Pacemaker 搭建高可用MariaDB服务 实验描述 1.本实验的目的是为了通过手动配置corosync配置文件,实现MariaDB服务的高可用,集群心跳传递使用组播方式。2.三个节点的主机名分别为:node5.redhat.com、node6.redhat.com、node7.redhat.com。地址为172.16.100.5…

    Linux干货 2016-04-06
  • lvs-keepalived

    keepalived: vrrp协议:Virtual Redundant Routing Protocol        术语:        虚拟路由器:Virtual Router &n…

    Linux干货 2017-05-13
  • awk入门应用

    awk概述使用语法常用命令选项相关输出命令print item1,item2,…printf FORMAT,item1,item2,….相关格式符相关修饰符相关内建变量相关内置函数相关操作符相关模式相关控制语句及示例if(condition) statementsif(condition){statements} else {statements}while…

    Linux干货 2016-12-04
  • Nginx配置进阶

    目录 ngx_http_rewrite_module模块 ngx_http_gzip_module模块 ngx_http_fastcgi_module模块 ngx_http_ssl_module模块 ngx_http_referer_module模块 ngx_http_rewrite_module模块 将用户某一次请求的URI当中的字符串是不是能够被我们给出…

    Linux干货 2016-11-05
  • 搭建个人博客&论坛(LAMP):wordpress、discuz、phpMyAdmin

    搭建个人博客&论坛(LAMP):wordpress、discuz、phpMyAdmin 一、快速部署LAMP架构平台 1.CentOS 6系统部署 所需安装包:httpd, php, mysql-server, php-mysql ]# yum install -y  httpd php&n…

    Linux干货 2016-10-17
  • rsyslog+mysql+loganalyzer日志服务器搭建

    rsyslog+mysql+loganalyzer日志服务器搭建 环境 服务器端:192.168.25.129,centos7 客户机端:192.168.25.130,centos7 rsyslog+Mysql服务器端的配置: 准备好msql server或mariadb server ]# yum -y install&nbs…

    Linux干货 2016-11-07

评论列表(3条)

  • 马哥教育
    马哥教育 2018-03-06 22:27

    作业写的不错,继续加油。

    • koala
      koala 2018-03-11 02:12

      @马哥教育还有老师点赞啊,哈哈

    • 马哥教育
      马哥教育 2018-03-13 21:13

      @koala加油