马哥教育网络20期+第一周练习博客

一、计算机的组成及其功能

        众所周知,现代计算机设备是由五大部分组成,分别为:运算器、控制器、存储器、输入设备、输出设备,也就是现实生活中可以直观看到的CPU、内存、硬盘、主板、鼠标、键盘、显示器等设备。那么,这五大部分与现实生活中看到的硬件设备是怎样的对应关系呢?下面我会一一说明。

 
CPU:中央处理器(Central Processing Unit),是一块超大规模的集成电路,包括了运算单元、控制单元与寄存器,运算单元主要是指算术逻
     辑运算单元,控制单元也就是CPU指令,指令又分为特权指令与普通指令两种,寄存器怎是用来保存指令执行过程中临时需要存放的数据。运
     算器、控制器、寄存器三者共同构成了CPU。 
内存:Memory,是一个编制存储设备,是CPU能直接寻址的存储空间,是由一些电路板、芯片、金手指组成,用于暂时存放CPU中的运算数据以及与
     硬盘等外部存储设备进行数据交换,在计算机运行过程中,CPU会把需要运算的数据存储到内存中,运算时直接从内存中进行调用数据,运算
     完成后,再把结果输出到内存当中。 
硬盘:计算机的主要存储媒介之一,用来保存计算机运行所需要的程序。当今,硬盘基本分为两大类:机械硬盘(HDD)与固态硬盘(SDD),HDD
     采用磁性碟片的方式来存储数据,SDD则采用闪存颗粒来存储数据。 
主板:MainBoard,主要用于将CPU、内存、硬盘、外设等设备进行连接。主板上最重要的构成组件是芯片组,芯片组通常是由南桥和北桥组成,北
     桥芯片提供对CPU的类型和主频、内存的类型和最大容量、PCI/AGP/ISA插槽等支持,南桥芯片则是提供对键盘控制、时钟控制、总线控制等
     支持。 
鼠标、键盘:输入设备 
显示器:输出设备

二、Linux各个发行版之间的联系与区别

Linux发行版主要有slackware、debian、redhat、ArchLinux、Gentoo等。
        
slackware:主流发行版为S.u.S.E,基于S.u.S.E的二次发行版则是openS.u.S.E 
debian:主流发行版为ubuntu,基于ubuntu的二次发行版为mint 
redhat:主流发行版为RHEL(RedHat Enterprise Linux),CentOS则是RHEL的克隆版,并且完全免费试用,但RHEL不提供任何的技术支持;Fedora
    则是RHEL的实验版本,每次更新都会合入新的功能,测试成功的功能则会合入到RHEL的版本中 
ArchLinux:是一个轻量简洁的发行版 
Gentoo:据说是一款非高手不可玩的自由操作系统

三、Linux哲学思想

一切皆文件
由众多单一目的的小程序组成,组合小程序来完成复杂的任务
尽量避免跟用户交互
使用纯文本文件保存配置信息

四、命令使用格式以及常用命令介绍

COMMAND [OPTIONS...] [ARGUMENTS...]    
    选项:用于启用或关闭命令的某个或某些功能;
        短选项:-c, 例如:-l, -h
            多个短选项可命令使用,例如-l -h, 可写作-lh;
        长选项:--word,例如:--long, --human-readable
    参数:命令的作用对象

详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用

ifconfig:configure a network interface(配置内核固有的网络接口)

命令格式:

ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address …

如果ifconfig没有给定参数,那么则会显示当前系统当中活动的网络接口的状态,例如

[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.2.99  netmask 255.255.255.0  broadcast 192.168.2.255
    inet6 fe80::20c:29ff:fe59:590b  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:59:59:0b  txqueuelen 1000  (Ethernet)
    RX packets 45596  bytes 20196166 (19.2 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 20734  bytes 3212158 (3.0 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 0  (Local Loopback)
    RX packets 16  bytes 1224 (1.1 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 16  bytes 1224 (1.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果给定的参数是一个接口,那么就会显示这个接口的状态

[root@localhost ~]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.2.99  netmask 255.255.255.0  broadcast 192.168.2.255
    inet6 fe80::20c:29ff:fe59:590b  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:59:59:0b  txqueuelen 1000  (Ethernet)
    RX packets 45596  bytes 20196166 (19.2 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 20734  bytes 3212158 (3.0 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果给定-a选项,则会显示内核当中所有的网络接口信息,包括down掉的网络接口,例如:              

[root@localhost ~]# ifconfig -a
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.2.99  netmask 255.255.255.0  broadcast 192.168.2.255
    inet6 fe80::20c:29ff:fe59:590b  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:59:59:0b  txqueuelen 1000  (Ethernet)
    RX packets 45717  bytes 20207023 (19.2 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 20798  bytes 3219966 (3.0 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 0  (Local Loopback)
    RX packets 16  bytes 1224 (1.1 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 16  bytes 1224 (1.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
    ether 52:54:00:f7:9e:82  txqueuelen 0  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
virbr0-nic: flags=4098<BROADCAST,MULTICAST>  mtu 1500
    ether 52:54:00:f7:9e:82  txqueuelen 500  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果给定-s选项,则会以简短的信息显示内核当中活动的网络接口信息,例如:

[root@localhost ~]# ifconfig -s
    Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    eno16777  1500    45758      0      0 0         20828      0      0      0 BMRU
    lo       65536       16      0      0 0            16      0      0      0 LRU
    virbr0    1500        0      0      0 0             0      0      0      0 BMU

使用up、down选项则会将指定的网络接口打开或关闭,例如:

[root@localhost ~]# ifconfig lo down
[root@localhost ~]# ifconfig lo up

echo:Echo the STRING(s) to standard output.(将字符串输出到标准输出) 

命令格式:

echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION

使用-n选项,则是在尾部继续输出,不启用新的行,例如:

[root@localhost ~]# echo -n /etc/issue
/etc/issue[root@localhost ~]#

使用-e选项,则允许使用反斜杠转义

使用-E选项,则不允许使用反斜杠转义(默认值)

在-e选项生效的情况下,可以使用反斜杠进行转义,来达到要实现的目的,例如:

\\  backslash  对反斜杠进行转义
\b  backspace  退格
\n  new line 新的一样
\r  carriage return 回车
\t   horizontal tab 水平制表符
\v  vertical tab 垂直制表符                
[root@localhost ~]# echo -e '\\abc\babc\n\raaa\tabc\vabc'
\ababc
aaa     abc
           abc

tty:print the file name of the terminal connected to standard input.(打印来自标准输入终端的文件名)

命令格式:

tty [OPTION]...

不给定任何参数,则直接输出当前终端的文件名称,例如:

[root@localhost ~]# tty
/dev/pts/2

-s选项,不打印任何东西,仅返回推出状态,例如:

[root@localhost ~]# tty -s
[root@localhost ~]# echo $?
0

startx:initialize an X session(初始化一个图形界面的会话)

命令格式:

startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]

举例:

[root@localhost ~]# startx -- --depth 16

export:set the export attribute for variables(设置属性变量)

命令格式:

export name[=word]...
export -p

显示当前属性变量:

[root@localhost ~]# export -p 
[root@localhost ~]# export

设置环境变量:

[root@localhost ~]# export PATH=/local/bin:$PATH

pwd:print name of current/working diretory(打印当前或工作目录的名称)

命令格式:

pwd [OPTION]... 
-L,--logical,使用PWD环境,即使包含符号链接
-P,--physical,避免所有的符号链接

history:管理历史命令

命令格式:

history [OPTION]...

-a: 追加本次会话新执行的命令历史列表至历史文件中

[root@localhost ~]# history -a

-d: 删除历史中指定的命令

[root@localhost ~]# history -d

-c: 清空命令历史;

[root@localhost ~]# history -c

快捷操作:

!#:调用历史命令中的第#条命令
!string:调用历史中最近一个以string开头的命令
!!:上一条命令

shutdown:halt,power-off or reboot the machine(停止、关闭电源、重启机器)

命令格式:

shutdown [OPTIONS...] [TIME] [WALL...]

-H,–halt:停止机器

[root@localhost ~]# shutdown -H

-P,–poweroff:关闭机器的电源

[root@localhost ~]# shutdown -P

-r,–reboot:重启机器

[root@localhost ~]# shutdown -r

-h:等同于poweroff,除非–halt被指定

[root@localhost ~]# shutdown -h

-k:不进行停止、关闭电源、重启的操作,只是发送这些消息

[root@localhost jobs]# shutdown -k
Shutdown scheduled for Sun 2016-06-19 20:14:19 CST, use 'shutdown -c' to cancel.
[root@localhost jobs]# 
Broadcast message from root@localhost.localdomain (Sun 2016-06-19 20:13:19 CST):
The system is going down for power-off at Sun 2016-06-19 20:14:19 CST!

poweroff:halt,power-off or reboot the machine(停止、关闭电源、重启机器)

命令格式:

halt [OPTIONS...]
poweroff [OPTIONS...]
reboot [OPTIONS...]

–halt:停止机器,不管是调用三个命令中的哪一个

[root@localhost jobs]#poweroff --halt

-P,poweroff:关闭机器的电源,不管是调用三个命令中的哪一个

[root@localhost jobs]#poweroff -P

–reboot:重启机器,不管是调用三个命令中的哪一个

[root@localhost jobs]#poweroff --reboot

reboot:与poweroff用法基本一样,此处不再赘述

hwclock:query or set the hardware clock(查询或者设置硬件时间)

命令格式:

hwclock [function] [option...]

-s,–hctosys:将硬件时间设置为系统时间

[root@localhost jobs]# hwclock -s

-w,–systohc:将系统时间设置为硬件时间

[root@localhost jobs]# hwclock -s

date:print or set the system date and time(打印或者设置系统日期和时间)

命令格式:

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

FORMAT: 格式符号

%D
%F
%T

date [MMDDhhmm[[CC]YY][.ss]]:设置

MM: 月分
DD:几号
hh: 小时
mm: 分钟
YY: 两位年份
CCYY: 四位年份
.ss: 秒钟

五、获取命令帮助     

内部命令

help  COMMAND

外部命令

获取命令位置

which、whereis

获取帮助:

1、COMMAND –help

COMMAND -h

2、使用手册manual

man COMMAND

手册页位于/usr/share/man目录下,分为man1、man2、……man8

man1:用户命令
man2:系统调用
man3:C库调用
man4:设备文件及特殊文件
man5:配置文件格式
man6:游戏
man7:杂项
man8:管理类命令

注意:有些帮助文档不止存在于一个章节中,查看指定的章节

man  #  COMMAND

man命令的配置文件:/etc/man.conf,指明新的手册文件搜索位置 MANPATH  /PATH/TO/SOMEWHERE

man -M /PATH/TO/SOMEWHERE COMMAND:到指定位置下搜索COMMAND命令的手册也并显示   

帮助手册的段落说明:

MANE:名称
SYNOPSIS:摘要
  []:可选内容
  <>: 必选内容
  a|b:二选一
  ...: 同一内容可出现多次
DESCRIPTION:描述
OPTIONS:选项
EXAMPLES:例子
AUTHOR:作者
REPORTING BUGS:提交BUGS
SEE ALSO:参考其他

man命令的操作方法:

Space, ^V, ^f, ^F: 向文件尾翻屏;
b, ^B: 向文件首部翻屏;
d, ^D: 向文件尾部翻半屏;
u, ^U: 向文件首部翻半屏;
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;
y or ^Y or ^P or k or ^K:向文件首部翻一行;
q: 退出;                            
#:跳转至第#行;
1G: 回到文件首部
G:翻至文件尾部

文件搜索:

/KEYWORD:以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
n: 下一个
N:上一个                        
?KEYWORD:  以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个

3、信息页

info COMMAND

4、程序自身的帮助文档

README、INSTALL、ChangLog

5、程序官方文档

Documentation

6、发行版的官方文档

7、Google

六、Linux发行版的基础目录名称命名法则以及功用规定 

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader、grub)都存放于此目录
/bin:供所有用户使用的基本命令,不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令,不能关联至独立分区,OS启动即会用到的程序
/lib:基本共享库文件,以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录(纯文本文件)
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点 cdrom usb
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
   b:block device,随机访问
   c:character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr:universal shared,read-only data
    /bin:保证系统拥有完整功能而提供的应用程序
    /sbin:管理类的基本命令
    /lib:基本共享库文件
    /lib64:专用于x86_64系统上的辅助共享库文件存放位置
    /include:C程序的头文件(header files)
    /share:结构化独立的数据,例如doc,man等
    /local:第三方应用程序的安装位置,包含/bin,/sbin,/lib,/lib64,/etc,/share
/var:variable data files
    /cache:应用程序缓存数据目录
    /lib:应用程序状态信息数据
    /local:专用于为/usr/local下的应用程序存储可变数据
    /lock:锁文件
    /log:日志目录及文件
    /opt:专用于为/opt下的应用程序存储可变数据
    /run:运行中的进程相关的数据,通常用于存储进程的pid文件
    /spool:应用程序数据池
    /tmp:保存系统两次重启之间产生的临时数据
/proc:用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统
/selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置

原创文章,作者:Anaconda,如若转载,请注明出处:http://www.178linux.com/16849

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 11:30

    写的太棒了,而且还有案例做辅助说明,非常好!