Linux基础知识(一)

写在前面:

    博客书写牢记5W1H法则:What,Why,When,Where,Who,How。


linux操作系统发行版是由kernel和application组成的。而用户需要通过特定程序操控kernel来完成对系统操作,这个特定程序在linux上称为shell


Shell程序分为二个大类:

GUI:图形用户界面。典型的有GNOME、KDE、XFCE等。

CLI:命令行接口。典型的有bash、zsh、fish、sh、csh、tcsh、ksh。

其中zsh比bash出现的晚,但更加强大;fish功能则比zsh更强大。


linux文件系统采用的是倒置树状结构,如图:

windows文件系统采用的是多根倒置树状结构,每一个分区都是一个树型结构的根,其根用“\”表示;linux采用的是单根倒置树状结构,根是唯一的,其根用“/”表示,所有的分区只能通过挂载到树状结构的某一个目录来进行访问。


linux终端(terminal)类型

物理终端(physical terminal):/dev/console。即连接到主机上的物理显示器。

虚拟终端:/dev/tty#,[1,6]。是物理终端在系统上模拟的设备文件,依赖物理终端存在。

图形终端:/dev/tty7。运行图形界面的虚拟终端。

串口终端:/dev/ttyS#。是使用计算机串行端口连接的终端设备

伪终端:/dev/pts/#,如ssh、telnet等登陆,图形界面下打开的命令行接口。


linux命令提示符(prompt)含义

每个用户在被建立时都有属于其的默认shell设定,已经登陆的用户可以使用echo $SHELL命令来查看。bash的默认用户提示符格式及含义如下:

[root@localhost ~]# 

root:当前登录的用户名;

localhost:当前的主机的主机名(hostname),非完整显示,默认只显示主机名的第一个“.”之前的内容。

~:当前用户所在的工作目录,非完整显示,默认只显示路径基名(basename),即路径的最后一个路径分隔符“/”之后的内容。

#:命令提示符。管理员默认为“#”,普通用户为“$”。

补充,linux命令提示符的格式是通过变量PS1来确定的,默认PS1=[\u@\h \W]\$,可以通过man bash来查看其含义。


ssh协议:secure shell

欲远程登陆linux以方便操作,可以按照以下步骤:

        (1)查看ssh服务是否启动,centOS安装完成后默认安装并启动。

            ss �tnl查看是否监听了22号tcp端口;

        (2)查看主机IP地址信息:

            ip addr list

            或ifconfig 

        (3)确保防火墙处于关闭状态

            iptables �L �n

            关闭防火墙并确保下次开机不自启:

            centOS7:

                systemctl disable firewalld.service

                systemctl stop firewalld.service

            centOS6:

                service iptables stop

                chkconfig iptables off


linux典型哲学思想:

    1、一切皆文件。

        把几乎所有资源都抽象为文件形式,包括硬件、通讯接口等,这样的方式使得linux在底层操作变得简单,执行类似的open()、read()、write()、close()等操作即可。

    2、程序只完成简单功能。

        linux程序只完成一件事,并且做好;通过组合小程序完成复杂任务。

    3、尽量避免与用户交互。易于以变成的方式来实现自动化任务,没有消息就是最好的消息。

    4、使用纯文本文件来保存程序配置信息。

        管理员只需要一款简单的文本编辑软件即可完成复杂的软件配置操作。


linux文件系统:

目录:是路径的映射,目录也是文件。所以在同一目录下,不可能有名字相同的目录和文件同时存在。

文件:磁盘上的一段存储空间中存储的数据;基于文件名应用文件,按名存取。而文件在磁盘上的存取可分为以下两个部分:

元数据:表示文件属性信息(实际数据存储位置、文件名、大小、权限、创建时间、归属等);

数据:实际文件内容。

文件的路径表示方法:

绝对路径:由根开始的路径。如/var/log/message。

相对路径:从当前目录开始的路径。当前目录用“.”表示;当前目录的上级目录用“..”表示。


linux文件命名规则:

    1、严格区分大小写。file1、File1、FILE1是不同文件。

    2、目录也是文件。同一路径下,两个文件不能同名。

    3、文件名支持使用除”/”以外的所有字符。但不建议使用特殊字符命名文件。

    4、文件名不能超过255个字符。

    5、以“.”开头的文件为隐藏文件。

家目录概念:

家目录为用户的起始目录,即用户刚登录系统时所处的目录。

普通用户家目录默认在/home/USERENAME;而root用户的默认家目录在/root。

用户家目录用特殊字符“~”表示。

工作目录:working directory,current directory

路径划分:

路径名(dirname):如/PATH/TO/SOMEFILE中的/PATH/TO;

基名(basename):如/PATH/TO/SOMEFILE中的SOMEFILE;


linux命令通用语法格式:

$ COMMAND OPTIONS ARGUMENTS

COMMAND:

为可执行文件,二进制格式程序文件或脚本程序文件,脚本程序文件需要有解释器解释运行。

运行一个命令的过程是将磁盘上的程序文件加载到内存中,创建出进程的过程。进程是运行中的程序,有生命周期,运行完成后自动关闭。

大部分程序文件都存放在以下目录:/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin。bin为binary的缩写,bin目录的程序普通用户可以运行;sbin为管理命令,需要管理员权限运行。程序文件的存放目录可以使用echo $PATH命令来查看。

程序运行可能依赖于.so(shared object)格式的库文件。库文件也是可执行程序格式,但其不能直接运行,需要通过其他程序调用才能运行。库文件一般存放于/lib、/lib64、/usr/lib、/usr/lib64目录。

linux命令分为两大类别:内建命令(builtin)和外部命令。外部命令为独立的可执行文件,命令即程序文件名。判断命令种类可使用以下命令:type COMMAND。

shell是独特的程序。可以查找并解析命令,向内核提交命令运行进程,解析路径,提供自动化命令运行环境等。命令运行过程中的语法分析、词法分析并不是命令本身完成的,这是命令解释器的功能,即shell来完成。

$PATH环境变量保存了查找外部命令对应的程序文件路径,路径之间用“;”分割。查找方式为自左向右,当查找到某一命令后会将查找结果缓存到hash表中,可使用hash命令查看已缓存的命令即命中次数。

OPTIONS:选项

调用命令的运行特性,标示了运行程序中的哪些代码。linux发展借鉴了UNIX和BSD两种风格,所以有些选项使用“-”来连接,有些则省略了“-”。根据不同程序需要自行选择。

大部分linux程序选项需要使用“-”连接,这样的选项有两种形式:

短选项:-CHAR,例如-l,-h,-d等。多数情况下,不带参数的短选项可以合并,如-l,-h可以合并为-lh。

长选项:--WORD,例如--long,--heman-readable

ARGUMENTS:参数

命令的作用对象,命令的作用范围。多个参数需要使用空白字符(空格或tab)分隔。


获取命令使用帮助:

内建命令:

        1、help COMMAND,获取命令的简要使用帮助

        2、man COMMAND,内建命令使用man命令会跳转到bash的man手册页,内建命令在其中按照字母顺序排列,按空格翻到下一页,b键翻到上一页进行快速定位即可。

    外部命令:

        1、命令自带的简要格式的使用帮助:

            COMMAND --help

        2、使用命令手册:

            man KEYWORD

         外部命令的使用手册(manual)大部分存储在/usr/share/man目录。查看其目录内容可以看到,man分为man1,man2……man8等章节,其中的文件都是gzip压缩格式,节约了磁盘空间。

man手册不同章节对应不同类型的内容说明:

        1    可执行程序或shell命令

        2系统调用(内核提供的功能)

        3库调用(程序库中的函数)

        4特殊文件(通常在/dev下)

        5文件格式,如/etc/passwd

        6游戏

        7杂项

        8系统管理员命令(通常为root)

        9内核例程(非标准化)

        #p表示符合POSIX(可移植操作系统接口)标准的接口


man 章节的基本格式如下:

SECTION

NAME:名称及简要功能描述;

SYNOPSIS:命令使用格式摘要;

DESCRIPTION:详细描述信息;

OPTIONS:选项详细说明;

AUTHOR:作者;

BUGS:报告程序bug途径;

EXAMPLES:使用示例;

SEE ALSO:额外参考;

FILES:相关配置文件;

SYNOPSIS中部分符号含义:

[]:可选内容;

{}:分组内容;

<>:必选内容;

a|b|c:多选一;

...:同类内容可以出现多次;

查看某关键字在哪些章节下有手册:

whatis KEYWORD

man -f KEYWORD

注意以上两个命令的执行过程是通过查询系统内部数据库进行的,手动更新数据库使用makewhatis命令。

注意:man手册是通过压缩工具解压帮助手册为临时文件,而后显示帮助内容是通过调用less命令实现的。


man页面常见操作,键入h获取操作帮助,如下:

翻屏:

    space/f:向文件尾部翻一屏;

b:向文件首部翻一屏;

d:向文件尾部翻半屏;

u:向文件首部翻半屏;

Enter:向文件尾部翻一行;

y/k:向文件首部翻一行;

G:直接跳转到最后一行;

#G:跳转到第#行;

关键字搜索:

/KEYWORD:向文件尾部搜索;

?KEYWORD:向文件尾部搜索;

n:与查找命令方向相同的下一个;

N:与查找命令方向相反的下一个;

退出:

q:quit

man命令会到很多路径下查找使用命令的文件,这些路径是由配置文件/etc/man_db_conf文件中的“MANPATH”指令定义的。也可以使用man -M /PATH/TO/SOMEDIR KEYWORD来手动指定man手册路径进行查找,注意这里的路径必须是man1、man2等文件所在的目录,而不能是指向man#目录本身,也就是man#的父目录。

man -k KEYWORD命令可以关键字搜索使用手册

    3、info COMMAND

        获取命令在线文档

     4、查找应用自带的帮助文档:

        /usr/share/doc/APPLICATION_NAME-VERSION/

        README:程序的相关信息;

        INSTALL:程序安装帮助;

        CHANGES:版本更新信息;

    5、程序主站上的文档

        Document

        wiki:超文本系统

        FAQ:Frequently Asked Questions常用问题解答

    6、发行版主站文档

        如RedHat:http://www.readhat.com/docs

    7、搜索引擎:

        如Google,KEYWORD filetype:TYPE

        KEYWORD site:DOMAIN.TLD


你可能感兴趣的:(命令,文件系统,man)