从零开始的Linux学习Ⅰ

计算机的组成及其功能

在冯诺依曼体系中,计算机的组成部分有

控制器:负责指挥、协调计算机系统的操作
运算器:执行算术和逻辑运算操作
存储器:存储数据、指令和程序等信息,并在需要时提供
输入:将数据、指令等信息输入到计算机
输出: 将计算机的中间结果、最终结果及各种控制信号输出出来


常见的Linux发行版

基于Debian的发行版

软件数量丰富,包管理工具强大,系统稳定

Ubuntu:以桌面应用闻名

Knoppix:以安全软件著称

基于RedHat的发行版

RedHat Enterprise Linux:面向企业用户的的Linux系统,具有高度稳定性,支持个平台虚拟化

CentOS:针对收费版的RHEL而由社区二次开发的系统

Fedora:个人桌面版,基本每6个月发行一个版本

基于Slackware的发行版

Slackware:以简洁、安全、稳定闻名

S.u.S.E:

openSUSE:以界面华丽闻名

SLES:企业版SUSE系统,转为服务器,大型机设计

其它

Gentoo:对使用者有更高要求,支持定制,更加自由透明

ArchLinux:轻量简洁,追求代码最小化,软件更新速度快


Linux的哲学思想

一:一切皆文件:把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等

二:分工合作:由众多功能单一的程序组成;一个程序只做一件事,并且做好;组合小程序完成复杂任务;
三:自动化:尽量避免跟用户交互;目标:易于以编程的方式实现自动化任务;
四:文本:使用文本文件保存配置信息;


Linux系统上命令的使用格式

命令的语法通用格式:

COMMAND OPTIONS ARGUMENTS

COMMAND: 
    发起一命令:请求内核将某个二进制程序运行为一个进程;
        程序 --> 进程
        静态 --> 动态(有生命周期)

    命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
        多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
            普通命令:/bin, /usr/bin, /usr/local/bin
            管理命令:/sbin, /usr/sbin, /usr/local/sbin
        共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
            32bits的库:/lib, /usr/lib, /usr/local/lib
            64bits的库:/lib64, /usr/lib64, /usr/local/lib64

        注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件

    命令必须遵循特定格式规范:exe, msi, ELF(Linux)
        ~]# file /bin/ls

    命令分为两类:
        由shell程序的自带的命令:内置命令(builtin)
        独立的可执行程序文件,文件名即命令名:外部命令

    shell程序是独特的程序,负责解析用户提供的命令;
        环境变量:
            PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件;
                ~]# echo $PATH
                /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

                查找次序:自左而右;

    查看命令类型:
        type COMMAND

OPTIONS:
    指定命令的运行特性;

    选项有两种表现形式:
        短选项:-C, 例如-l, -d
            注意:有些命令的选项没有-;
            如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
        长选项:--word, 例如--help, --human-readable
            注意:长选项不能合并;

        注意:有些选项可以带参数,此称为选项参数;

ARGUMENTS:
    命令的作用对象;命令对什么生效;

    注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;

取消命令执行:Ctrl+c
例如:ls -ld /var /etc

  1. ifconfig使用详解
    通过man ifconfig我们可以看到ifconfig的使用方法和详细说明
    NAME名称
    ifconfig - configure a network interface 配置网络接口
    从零开始的Linux学习Ⅰ
    SYNOPSIS命令格式
    ifconfig [-v] [-a] [-s] [interface]
    ifconfig [-v] interface [aftype] options | address ...
    从零开始的Linux学习Ⅰ

OPTIONS选项
-a display all interfaces which are currently available, even if down
显示当前可用的所有接口,即使关闭
-s display a short list (like netstat -i)
显示一个短列表(如netstat -i)
-v be more verbose for some error conditions
对于某些错误条件,-v更详细

        interface
          The name of the interface.  This is usually a driver name followed by a unit number, for example eth0  for  the first  Ethernet  interface.  If your kernel supports alias interfaces, you can specify them with eth0:0 for the first alias of eth0. You can use them to assign a second address. To delete an  alias  interface  use  ifconfig eth0:0  down. Note: for every scope (i.e. same net with address/netmask combination) all aliases are deleted, if you delete the first (primary).
                        接口的名称。这通常是驱动程序名称后面跟一个单位号,例如eth0

第一个以太网接口。如果内核支持别名接口,则可以使用eth0:0指定别名接口
eth0的第一个别名。您可以使用它们来分配第二个地址。要删除别名界面,请使用ifconfig
eth0:0 down。注意:对于每个作用域(即具有地址/网络掩码组合的相同网络),如果删除第一个(主)所有别名都被删除。

   up     This flag causes the interface to be activated.  It is implicitly specified if an address is  assigned  to  the interface.这个标志会导致接口被激活。如果地址被分配给

接口。

   down   This flag causes the driver for this interface to be shut down.这个标志将导致此接口的驱动程序关闭。

         mtu N  This parameter sets the Maximum Transfer Unit (MTU) of an interface.这个参数设置了一个接口的最大传输单元(mtu)。

   dstaddr addr
          Set  the  remote  IP  address  for  a point-to-point link (such as PPP).  This keyword is now obsolete; use the pointopoint keyword instead.为点对点链路(如PPP)设置远程IP地址。这个关键字现在已经过时了;使用pointopoint关键字。

   netmask addr
          Set the IP network mask for this interface.  This value defaults to the usual class A, B or C network mask  (as derived from the interface IP address), but it can be set to any value.设置此接口的IP网络掩码。此值默认为通常的类A、B或C网络掩码(从接口IP地址派生而来),但可以设置为任何值。

   add addr/prefixlen
          Add an IPv6 address to an interface.向接口添加IPv6地址。

   del addr/prefixlen
          Remove an IPv6 address from an interface.从接口中删除IPv6地址。
         address
          The IP address to be assigned to this interface.分配给这个接口的IP地址。

2.echo 使用详解——回显
echo [SHORT-OPTION]... [STRING]...
-n: 不进行换行;
-e:让转义符生效;
\n:换行
\t:制表符
从零开始的Linux学习Ⅰ
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
~]# echo '$SHELL'
双引号:弱引用,变量引用会被替换;
~]# echo "$SHELL"

            注意:变量引用的正规符号    
                ${name} 
  1. tty使用详解 - print the file name of the terminal connected to standard input
    打印连接到标准输入的终端的文件名
    SYNOPSIS
    tty [OPTION]...

    -s, --silent, --quiet
    print nothing, only return an exit status不打印任何内容,只返回退出状态

    --help display this help and exit帮助显示此帮助并退出

    --version
    output version information and exit输出版本信息并退出

4.startx使用详解——启动图形界面
从零开始的Linux学习Ⅰ
从零开始的Linux学习Ⅰ
使用ctrl+c可以取消

5.export使用详解——用于设置环境变量
变量赋值export name=value

6.pwd使用详解—— printing working directory显示工作目录
从零开始的Linux学习Ⅰ

7.history使用详解
命令历史:shell进程会其会话中保存此前用户提交执行过的命令;
~]# history
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史的文件;
.bash_history
HISTFILESIZE:命令历史文件的大小;

        命令用法:
            history [-c] [-d 偏移量] [n] 
            或 history -anrw [文件名] 
            或 history -ps 参数 [参数...]

            -c: 清空命令历史;
            -d offset:删除指定命令历史
            -r: 从文件读取命令历史至历史列表中;
            -w:把历史列表中的命令追加至历史文件中;
            history #:显示最近的#条命令;

        调用命令历史列表中的命令:
            !#:再一次执行历史列表中的第#条命令;
            !!:再一次执行上一条命令;
            !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

                注意:命令的重复执行有时候需要依赖于幂等性;

        调用上一条命令的最后一个参数:
            快捷键:ESC, .
            字符串:!$

        控制命令历史记录的方式:
            环境变量:HISTCONTROL
                ignoredups:忽略重复的命令;
                ignorespace:忽略以空白字符开头的命令;
                ignoreboth:以上两者同时生效;

            修改变量的值:
                NAME='VALUE'

8.shutdown——关机或重启命令

shutdown [OPTIONS...] [TIME] [WALL...]
    OPTIONS:
        -h: halt
        -r:reboot
        -c:cancel

    TIME:
        now
        hh:mm
        +m
            +0

9.poweroff——关机命令
CentOS 7:
~]# systemctl poweroff
~]# systemctl reboot

        :
            ~]# poweroff
            ~]# halt
            ~]# reboot

10.reboot——重启

日期相关的命令:
Linux:系统启动时从硬件读取日期和时间信息;读取完成以后,就不再与硬件相关联;

hwclock, clock:硬件时钟
显示或设定硬件时钟
-s, --hctosys:以硬件为准,把系统调整为与硬件时间相同;
-w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;

date:系统时钟
显示日期时间:date [OPTION]... [+FORMAT]
FORMAT:格式符
%F
%T
%Y
%m
%d
%H
%M
%S
%s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;
...

设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]

Linux系统上获取命令的帮助信息

内部命令:
help COMMAND
外部命令:
(1) 命令自带简要格式的使用帮助

COMMAND --help

(2) 使用手册:manual
    位置:/usr/share/man

#man COMMAND

SECTION:
    NAME:功能性说明
    SYNOPSIS:语法格式
    DESCRIPTION:描述
    OPTIONS:选项
    EXAMPLES:使用示例
    AUTHOR: 作者
    BUGS: 报告程序bug的方式
    SEE ALSO: 参考
    ...

SYNOPSIS: 
    []:可选内容;
    <>:必须提供的内容;
    a|b|c:多选一;
    ...:同类内容可出现多个;

使用手册:压缩格式的文件,有章节之分;
    /usr/share/man
        man1, man2, ...

        1:用户命令;
        2:系统调用;
        3:C库调用;
        4:设备文件及特殊文件;
        5:文件格式;(配置文件格式)
        6:游戏使用帮助;
        7:杂项;
        8:管理工具及守护进行;

    ~]# man CHAPTER COMMAND

    注意:并非每个COMMAND在所有章节下都有手册;
        查看:
            ~]# whatis COMMAND

            注意:其执行过程是查询数据库进行的;
                手动更新数据库:
                    ~]# makewhatis

man命令打开手册以后的操作方法:
    翻屏:
        空格键:向文件尾翻一屏;
        b: 向文件首部翻一屏;
        Ctrl+d:向文件尾部翻半屏;
        Ctrl+u:向文件首部翻半屏;
        回车键:向文件尾部翻一行;
        k: 向文件首部翻一行;
        G:跳转至最后一行;
        #G: 跳转至指定行;
        1G:跳转至文件首部;

    文本搜索:
        /keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
        ?keyword:从文件尾部向文件首部依次查找;    
            n: 与查找命令方向相同;
            N: 与查找命令方向相反;

    退出:
        q: quit

选项:
    -M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开之;

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

FHS:Filesystem Hierarchy Standard 文件系统层级标准
/bin:所有用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
/root:管理员的家目录;可选;
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库;
ld:运行时链接器/加载器;
modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点,cdrom, floppy等;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
bin, sbin
lib, lib64
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另一个层级目录;
X11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots

        /proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
        /sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;

        参考:[sysfs 与 /sys] (https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/)

猜你喜欢

转载自blog.51cto.com/13975143/2281000