Linux 入门基础 及一些常见命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 入门基础 及一些常见命令相关的知识,希望对你有一定的参考价值。

计算机的组成及其各部分的功能

现代计算机的基本结构是由匈牙利-美国科学家冯· 诺依曼于1946年提出的。迄今为止所有进入实用的电子计算机  都是按冯· 诺依曼提出的结构体系和工作原理设计制造的,故又统称为“冯·诺依曼型计算机".

根据冯.诺依曼原理:计算机由运算器、控制器、存储器、输入设备、输出设备所组成.

运算器: 进行算术与逻辑运算.

控制器:  从内存中依次取出命令,产生控制信号,向其它部件发出指令,指挥整个运算过程.

运算器,控制器,缓存,寄存器组成CPU.

存储器: 分为内部存储和外部存储 .内部存储包括ROM(只读)和RAM(随机); 外部存储包括硬盘,软盘,磁带机,光盘.

输入设备:键盘,鼠标和扫描仪。主要功能:下指令,提供数据等.标准输入设备(键盘)

输出设备:显示器,打印机和绘图仪。主要功能:输出数据加工的结果.标准输入设备(显示器)

 

Linux 主要发行版及各版本的区别与联系

Linux发行版有数百种之多,这里介绍最主要的几种:

---Debian, Slackware, RedHat,Gentoo, ArchLinux
Debian: ubuntu,knopix,mint

Debian是社区类Linux的典范,最遵循GNU规范。 特点是界面非常友好,对硬件的支持非常全面,最适合做桌面系统的Linux发行版.

Slackware:S.u.S.E, OpenSUSE

OpenSUSE 最可定制的发行版

RedHat: Fedora ,CentOS

RHEL Red Hat系列:包括RHEL、Fedora Core、CentOS.可以说是国内使用最多的Linux发行版.

稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,只好用于桌面应用.

Arch Linux 最好的企业级系统;

Gentoo: 是一个基于 Linux 或 FreeBSD 的自由操作系统,它几乎能为任何应用程序或需求自动地作出优化和定制. 对极限的配置、性能的追求,以及顶尖的用户和开发者社区,都是 Gentoo 的显著特点.

联系:都基于linux 内核


Linux 哲学思想

             1、一切皆文件:
           把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;
           和操作一般意义上的文件一样,linux中对文件的操作只需要五个基本的函数:
           open(), read(), write(), close(), delete(), create()
           文件系统的第一级目录称为“根目录”,用 / 表示,所有其他的文件或目录都包含在其下,
           并且一层一层组织成树型结构.
    2、 由众多功能单一的程序组成;一个程序只做一件事,并且做好;
                   组合小程序完成复杂任务;可以通过管道等把各小程序组合起来,完成复杂任务.
    3、 尽量避免跟用户交互;
          目标:易于以编程的方式实现自动化任务;
    4、使用文本文件保存配置信息(只需要一个简单的文本编辑器就可以操作整个系统)


Linux系统上命令的使用格式和常见的几个命令

 命令的语法通用格式:         

# COMMAND OPTIONS ARGUMENTS

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

            命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;    
        
  命令分为两类:
                由shell程序的自带的命令:内置命令(builtin)
                独立的可执行程序文件,文件名即命令名:外部命令

              例:  [[email protected] ~]# type cd
                    cd is a shell builtin
                    [[email protected] ~]# type ls
                    ls is aliased to `ls --color=auto‘
                    [[email protected] ~]# which ls
                    alias ls=‘ls --color=auto‘
                    /usr/bin/ls

                    [[email protected] ~]# which --skip-alias ls
                    /usr/bin/ls
                --skip-alias 过滤掉别名


 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:
            命令的作用对象;命令对什么生效;

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

 

ifconfig:  - configure a network interface    配置网络接口;
1) 查看IP接口信息:

      ~]# ifconfig或ip addr list或ip addr show  (CentOS 7):查看活动接口的ip地址: 

           -a     display all interfaces which are currently available, even if down
                显示所有接口信息;即使接口处于关闭状态;   

            例: ~]#ifconfig -a
            -s     display a short list (like netstat -i)
               例:   [[email protected] ~]# ifconfig -s
  Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
  eno16777  1500      660      0      0 0           520      0      0      0 BMRU
  lo       65536      392      0      0 0           392      0      0      0 LRU
  virbr0    1500        0      0      0 0             0      0      0      0 BMU

  CentOS 5和 CentOS 6 查看的接口名称是eth0 ,CentOS 7上表现为eno16777736

  具体查看哪个接口听信息,例:~]# ifconfig eno16777736

2)修改网卡的IP地址,子网掩码:(当不指定子网掩码时,将使用IP地址所在分类的默认子网掩码)    
      以CentOS 7为例: 

                           ~]# ifconfig eno16777736 192.168.1.50/24 或                                                                                               ifconfig eno16777736  192.168.1.50  netmask  255.255.255.0

  此命令重启系统后失效,永久生效只能修改配置文件,CentOS 7为例: 完整路径如下 /etc/sysconfig/network-scripts/ifcfg-eno16777736

3)禁用,激活网络接口:

       需要临时禁用或重新激活指定的网络接口时,需要结合 "down",   "up" 选项。网络接口被禁用以后,将无法使用该网络接口与其他主机进行连接。例: 执行以下操作将会禁用网卡eno16777726

     ~]# ifconfig eno16777736 down

4) 为网卡绑定虚拟接口: 

      在对服务器网络进行测试时,有时需要临时在同一个网卡上使用一个新的IP地址,但又不能覆盖原有的IP地址,而导致服务器程序不可用。这时可以为网卡绑定一个虚拟的网络接口,然后再为虚拟接口设置新的IP地址(相当于一块网卡配多个IP)

    以CentOS 7 为例:

   ~]# ifconfig eno16777736:0 172.16.16.1


echo:      NAME  (回显)
       echo - display a line of text
SYNOPSIS
       echo [SHORT-OPTION]... [STRING]...

                   -n: 不进行换行;
                    -e:让转义符生效;
                        \n:换行
                        \t:制表符
                        \b: 退格

例: [[email protected] ~]# echo "hello world"
hello world
[[email protected] ~]# echo -n "hello world"
hello world[[email protected] ~]# echo -e "hello \tworld"
hello     world
[[email protected] ~]# echo -e "hello \bworld"
helloworld
[[email protected] ~]# echo -e "hello \nworld"
hello
world

tty:  NAME
       tty - print the file name of the terminal connected to standard input
例:  [[email protected] ~]# tty
/dev/pts/1
[[email protected] ~]# tty -s   (--quiet   print nothing, only return an exit status)

[[email protected] ~]# tty --help
  -s, --silent
      --help    
      --version 

startx:  - initialize an X session

startx命令用来启动X Window,实际上启动X Window的程序为xinit.


export: 功能说明:设置或显示环境变量.

语  法:export [-fnp][变量名称]=[变量设置值]

补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

  1. [[email protected] ~]# !echo
    echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [[email protected] ~]# export PATH=$PATH:/opt/au1200_rm/build_tools/bin
    [[email protected] ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/au1200_rm/build_tools/bin

    重新打开一个终端登录:

 Last login: Tue Sep 13 17:59:34 2016
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
可以验证: export的效力仅及于该此登陆操作

2.#vi /etc/profile

在适当位置添加 PATH=$PATH: /opt/au1200_rm/build_tools/bin(注意:= 即等号两边不能有任何空格)
这种方法最好,除非你手动强制修改PATH的值,否则将不会被改变

[[email protected] ~]# !echo
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# vim /etc/profile
[[email protected] ~]# !echo
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

3.#vi ~/.bash_profile
修改PATH行,把/opt/au1200_rm/build_tools/bin添加进去
这种方法是针对用户起作用的

注意:第2,3种方法若想改变PATH,必须重新登陆才能生效,以下方法可以简化工作:
如果修改了/etc/profile,那么编辑结束后执行source profile(source /etc/profile) 或 执行点命令 ./profile,PATH的值就会立即生效了。
这 个方法的原理就是再执行一次/etc/profile shell脚本,注意如果用sh /etc/profile是不行的,因为sh是在子shell进程中执行的,即使PATH改变了也不会反应到当前环境中,但是source是在当前 shell进程中执行的,所以我们能看到PATH的改变。

[[email protected] ~]# source /etc/profile
[[email protected] ~]# !echo
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/au1200_rm/build_tools/bin

pwd:  NAME  显示工作目录

       pwd - print name of current/working directory
     [[email protected] ~]# pwd
       /root


history:命令历史:

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

   清空了历史命令  

     [[email protected] ~]# echo $HISTSIZE
      1000
     [[email protected] ~]# cat -n .bash_history
         1    history
         2    vim .bash_history
           ...

     [[email protected] ~]# history -r
     [[email protected] ~]# history
     1  history
         ....

      实现了从文件读取命令历史到历史列表中

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

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

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

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

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

            控制命令历史记录的方式:
                环境变量:HISTCONTROL
                    ignoredups:忽略重复的命令;
                    ignorespace:忽略以空白字符开头的命令;
                    ignoreboth:以上两者同时生效;
           [[email protected] ~]# echo $HISTCONTROL
                   ignoredups
          [[email protected] ~]# echo HISTCONROL=ignoreboth
            HISTCONROL=ignoreboth
         [[email protected] ~]# !echo $
          echo HISTCONROL=ignoreboth $
          HISTCONROL=ignoreboth $
       修改变量的值:
                    NAME=‘VALUE‘


shutdown: NAME
       shutdown - Halt, power-off or reboot the machine

SYNOPSIS
       shutdown [OPTIONS...] [TIME] [WALL...]
       -H, --halt
       -P, --poweroff
        -r, --reboot
        -k
            just write wall message.

        --no-wall
           Do not send wall message before halt, power-off, reboot.
       -c
           Cancel a pending shutdown.  打开另一个终端输入shutdown -c,可取消关机命令


poweroff:  NAME
       halt, poweroff, reboot - Halt, power-off or reboot the machine

reboot:NAME
       halt, poweroff, reboot - Halt, power-off or reboot the machine

shutdown,poweroff,reboot都能实现关机,重启,定时关机等操作.

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

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


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

Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIO的"Standard Bios Feture"项中进行设置.                           

  date 命令查看的是系统时钟,hwclock查看的是硬件时钟;     

date:
                    显示日期时间:date [OPTION]… [+FORMAT]
                        FORMAT:格式符
                                                                 [[email protected] ~]# date
                                                                Sat Sep 17 21:17:52 CST 2016
                                                                 [[email protected] ~]# date +%F
                                                                 2016-09-17
                                                                [[email protected] ~]# date +%T
                                                                 21:18:13
                                                                [[email protected] ~]# date +%Y
                                                                 2016
                                                                [[email protected] ~]# date +%m
                                                                 09
                                                                [[email protected] ~]# date +%d
                                                                 17
                                                                [[email protected] ~]# date +%H
                                                                 21
                                                                [[email protected] ~]# date +%M
                                                                18
                                                                [[email protected] ~]# date +%S
                                                                 47
                                                                [[email protected] ~]# date +%s
                                                                1474118335

                            %F

                            %T

                            %Y
                            %m
                            %d
                            %H
                            %M
                            %S
                            %s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;
                            …

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

                    [[email protected] ~]# date 091721332016.48
                     Sat Sep 17 21:33:48 CST 2016
            

如何获取命令的帮助信息

获取命令的使用帮助:
        内部命令:
            help COMMAND
        外部命令:
            (1) 命令自带简要格式的使用帮助
                # COMMAND –help
            (2) 使用手册:manual
                位置:/usr/share/man
                # man COMMAND

先执行type COMMNAD 识别是内部命令还是外部命令

         (3) info COMMAND
                获取命令的在线文档;

            (4) 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
                README:程序的相关的信息;
                INSTALL: 安装帮助;
                CHANGES:版本迭代时的改动信息;

            (5) 主流发行版官方文档
                http://www.redhat.com/doc

            (6) 程序官方的文档:
                官方站点上的“Document”

            (7) 搜索引擎
                google 

                   keyword filetype:pdf   (输入文章类型更有针对性)
                    keyword site:domain.tld

man 文档章节如何划分

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

                        1:用户命令;  (普通用户和管理员)

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

     

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

FHS(Filesystem Hierarchy Standard)文件系统层次结构标准

             /bin:所有用户可用的基本命令程序文件;  如cat ,ls ,cd 等
            /sbin:供系统管理使用的工具程序; 如ip ,mount等
            /boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等
            /dev:存储特殊文件或设备文件;  如/dev/null
                设备有两种类型:字符设备(线性设备)、块设备(随机设备);
            /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  该spool主要用于存放将要被处理的任务,比如打印队列以及邮件外发队列

                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设备提供一种统一模型的的接口;

           




















以上是关于Linux 入门基础 及一些常见命令的主要内容,如果未能解决你的问题,请参考以下文章

shell入门基础&常见命令及用法

Linux入门基础之 下

学习计划20180918

学习Linux

linux学习路线图

Linux学习计划