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)
上一篇 2018-02-28 20:15
下一篇 2018-03-01 10:57

相关推荐

  • iptables, sudo N28

    2018/2/25 17:14 第十二周

    2018-02-25
  • 初识正则表达式

    正则表达式是个什么东东? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。在很多文本编辑器里、命令中,通常要使用检索、替换、放行和拒绝那些符合某个模式的文本。而正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。  摘自《正则表达式之…

    Linux干货 2015-03-27
  • N22-第二周作业

    1、文件管理类命令有:cp,mv,rm    cp:复制命令      用法:cp [OPTION]… SOURCE… DEST        如果DEST不存在,则先创建此文件并复制源…

    Linux干货 2016-08-29
  • N26-第六周

    请详细总结vim编辑器的使用 vim 模式化的编辑器 vim的三种模式:1.编辑模式(命令模式)                          2.输入模式          …

    Linux干货 2017-03-13
  • 马哥教育21期网络班—第10周课程+练习—-成长进行时–不退步

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) POST –> Boot Sequence(BIOS) –> Boot Loader (MBR) –> Kernel(ramdisk) –> …

    Linux干货 2016-09-15
  • nl命令使用解析

    nl    命令功用: nl – number lines of files 显示文件内容,并列出行号   命令样式: nl [OPTION]… [FILE]…   命令选项: -b:正文行号,参数为样式style -n:行号格式,参数为格式format -w:设定行号所占位数,参数为…

    Linux干货 2016-10-20

评论列表(3条)

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

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

    • koala
      koala 2018-03-11 02:12

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

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

      @koala加油