文章

Linux 基础(一)

Linux系统基础

  • 由目的单一的小程序组成,组合小程序完成复杂任务;
  • 一切皆文件;
  • 配置文件保存为纯文本格式。

1、shell

1.1 shell简介

Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

常见的shell有两种,一种是图形界面,即GUI,一种是命令行终端,即CLI。

常用的GUI:Graphic User Interface

  • Windows
  • X-Window
    • Gnome
    • KDE
    • Xfce

常用的CLI:Command Line Interface

  • bash
  • sh
  • csh
  • zsh
  • ksh
  • tcsh

Redhat 和 Centos使用的是:bash shell

1.2 命令行界面

命令行是可被用来输入指令到计算机系统中的基于文本的界面。 Linux的命令行是通过一个叫做shell程序提供。Redhat和Centos系统默认的shell为Bourne-Again Shell(bash)。 Bash是在类UNIX系统中,是Bourne shell(sh)使用的最成功的其中一个shell的改进版本。

当shell被交互使用时,它将显示一个字符串时,它从用户等待一个命令。这就是所谓的shell提示符。当一个普通用户启动一个shell,默认提示以$字符结束。

#管理员用户:
[root@localhost ~]#

#普通用户:
[hzz@localhost ~]$

2、Linux基础命令

2.1 命令格式

命令  [选项]  [参数]

选项:(可以有0个或多个)
    短选项:-
        多个选项可以组合: -a -b = -ab
    长选项:--
        长选项通常不能组合
        
参数:命令的作用对象(可以有0个或多个)

2.2 命令类型

Linux命令分为两种类型:

  • 内部命令:shell内置
  • 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
type    #显示指定命令属于哪种类型

[root@hzz ~]# type cd
cd 是 shell 内建

2.3 基础命令

目录管理命令

//目录管理

    ls      #列出目录内容
        -l      #长格式,详细信息
        #以长格式显示的第一段含义:
            第一个字符:文件类型
                -   #普通文件(f)
                d   #目录文件
                b   #块设备文件(block)
                c   #字符设备文件(character)
                l   #符号链接文件(symbolic link file)
                p   #命令管道(pipe)
                s   #套接字文件(socket)
            后面九位字符:文件权限
                9位,每3位一组,每一组:rwx(读,写,执行)
        #以长格式显示的第二段含义:文件硬链接的次数
        #以长格式显示的第三段含义:文件的属主(owner)
        #以长格式显示的第四段含义:文件的属组(group)
        #以长格式显示的第五段含义:文件大小(size),单位是字节
        #以长格式显示的第六,七,八段含义:
            时间戳(timestamp),最近一次被修改的时间
                访问      #access,访问的时间
                修改      #modify,文件内容被修改的时间
                改变      #change,metadata(元数据)变化的时间
        -h      #做单位转换
        -a      #显示以.开头的隐藏文件
            .       #表示当前目录
            ..      #表示父目录
        -d      #显示目录自身属性
        -i      #显示文件的inode(index node)
        -r      #逆序显示
        -R      #递归(recursive)显示

    cd          #切换目录

    pwd         #查看当前所在目录路径

    tree        #查看目录树
        -d          #只显示目录
        -L level    #指定显示的层级数目
        -P 字符串    #显示指定字符串匹配到的文件

文件管理命令

#文件管理

    mkdir       #创建目录
        -p          #创建目录时若父目录不存在则自动创建
        -v          #显示目录创建过程

    rmdir       #删除目录,只能删除空目录

    touch       #创建一个空文件,touch还有一个作用是修改文件的时间戮

    stat        #显示文件或文件系统的状态

    rm          #删除文件,删除命令默认会提示是否需要删除
                #如果要使用命令本身可以在命令前加一个\
                    例如:\rm,这样删除就不会有提示了
        -r      #递归删除,删除目录时必须使用此选项
        -f      #强制删除,不询问

    cp          #复制文件,一个文件到一个文件,多个文件到一个目录
        -r          #递归拷贝,拷贝目录时必须使用此选项
        -p          #拷贝时保留原权限
        -a          #相当于-rp

    mv          #移动文件

    install     #复制文件并且设置属性
        -m MODE	    #复制时修改权限
        -o OWNER    #复制时修改文件属主
        -g GROUP    #复制时修改属组

文本内容查看命令

    cat         #将文件内容输出至标准输出(屏幕)
        -n          #显示行号
                #注意:使用cat查看文件内容时会将文件的所有内容加载至内存,所以应避免使用cat打开巨大文件

    tac         #倒序打印文件内容至标准输出

    more        #全屏查看文本文件内容,只能从前往后,不能从后往前
                #文件内容显示完后自动退出

    less        #全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用

    head        #从头部开始打印文件内容,默认打印10行
        -n          #指定要打印的行数,-n 可以是15也可以是-15

    tail        #查看文本文件尾部内容
        -n          #指定要打印的行数,可以是-n 15也可以是-15
        -f          #实时监测文件末尾内容

主机管理命令

#主机名管理

    hostname    #查看或临时修改主机名,重开终端有效,重启失效

    hostnamectl #查看或永久修改主机名,重开终端生效,重启依然有效

    time        #显示命令的执行时间,例如time ls /etc

    clear       #清屏

    whoami      #显示当前登录用户
   
    who         #查看当前在线用户

    w           #显示当前在线用户并显示其在运行的命令

    which       #显示指定命令的绝对路径

    date        #显示或设置日期与时间
                #不带参数的date用于显示当前系统日期与时间
                #格式化输出时间:+
                    %Y      //年
                    %m      //月
                    %d      //日
                    %F      //年-月-日
                    %H      //时
                    %M      //分
                    %S      //秒
        -s          #以字符串方式设置时间

    cal         #打印日历
    
    bc          #Linux中的计算器
        -l          #使用标准数学库
                    #echo 'scale=2;5/2'|bc -l
                    #scale=2表示保留两位小数
        
    ldd         #查看指定程序有哪些依赖库文件
                #程序组成:二进制程序,库文件,配置文件,帮助文件

2.4 如何获取命令帮助

#内部命令
    help COMMAND
#外部命令
    COMMAND --help
#在线文档
    info COMMAND    
#命令手册  manual
    man COMMAND
#文档
    /usr/share/doc 
    
whatis COMMAND      #用于查看COMMAND出现在man的哪一章节中。
                    #查询man帮助中此命令的作用

#man是分章节的,以下是每一章节的内容介绍:
    1   用户命令(/bin,/usr/bin,/usr/local/bin);
    2   系统调用;
    3   库调用;
    4   特殊文件(设备文件);
    5   文件格式(配置文件 的语法);
    6   游戏;
    7   杂项(Miscellaneous);
    8   管理命令(/sbin,/usr/sbin,/usr/local/sbin)
    
#man手册注意事项:
    []              #可选
    <>              #必选
    ...             #可以出现多次
    |               #多选一
    {}              #分组
    NAME            #命令名称及功能简要说明
    SYNOPSIS        #用法说明,包括可用的选项
    DESCRIPTION     #命令功能的详尽说明,可能包括每一个选项的意义
    OPTIONS         #说明每一个选项的意义
    FILES           #此命令相关的配置文件
    BUGS            #报告bug
    EXAMPLES        #使用示例
    SEE ALSO        #另外参照
    
#man翻屏
    SPACE           #向后翻一屏
    b               #向前翻一屏
    enter           #向后翻一行
    k               #向前翻一行
    
#查找
    /text           #向后
    ?text           #向前
    n               #下一个
    N               #前一个
    q               #退出    

3、bash特性

bash支持以下特性:

  • 支持命令历史、命令补全
  • 支持管道、重定向
  • 支持命令别名
  • 支持命令行编辑
  • 支持命令行展开
  • 支持文件名通配
  • 支持变量
  • 支持编程

bash支持的引号

""          #双引号,弱引用,可以实现变量替换
''          #单引号,强引用,不完成变量替换
``          #反引号,键盘左上角Esc下面的键,用于命令替换
$()         #与反引号用法相同

bash常用操作

#光标跳转
    Ctrl+a          #跳到命令行首
    Ctrl+e          #跳到命令行尾
    Ctrl+u          #剪切光标至命令行首的内容
    Ctrl+k          #剪切光标至命令行尾的内容
    Ctrl+<-         #光标定位到离自己最近的一个单词前面
    Ctrl+p          #重复上一次命令
    Ctrl+w          #剪切前面的字符至上一个空格处
    Ctrl+y          #粘贴或者恢复上次的删除。
    Ctrl+l          #清屏
    Ctrl+s          #暂时冻结当前shell的输入
    Ctrl+q          #解冻

#tab键命令和路径补全
    #在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令,供用户选择。
    #在命令行输入文件路径时,如果忘记文件路径全称,则只需要输入文件路径开头几个字母,也可以使用tab键进行补全。
    
#命令行常见特殊符号
    ~               #展开为用户的家目录
    ~USERNAME       #展开为指定用户的家目录
    {}              #列表,可用于存放数据
    \               #转义,使得后面一个特殊字符没有任何特殊含义
    &&              #前面的命令执行成功后才执行后面的命令
    ||              #前面的命令执行失败后才执行后面的命令
    ;               #不管前面的命令执行成功还是失败都执行后面的命令

#文件名通配符
    *               #匹配任意长度的任意字符
    ?               #匹配任意单个字符
    []              #匹配指定范围内的任意单个字符
                    例如:[abc],[a-m],[0-9]
                    [[:space:]]	#表示空白字符
                    [[:punct:]] #表示标点符号
                    [[:lower:]]	#表示小写字母
                    [[:upper:]]	#表示大写字母
                    [[:alpha:]]	#表示大小写字母
                    [[:digit:]]	#表示数字
                    [[:alnum:]]	#表示数字和大小写字母
                    [^]         #匹配指定范围之外的任意单个字符

#环境变量
    PATH            #命令搜索路径
    HISTSIZE        #命令历史缓冲区大小
    SHELL           #当前shell
#bash内置变量
    RANDOM          #保存着0-32768之间的随机数

#命令历史
    history         #查看命令历史
        -c              #清空命令历史
        -d OFFSET [n]   #删除指定位置的命令历史
        -w              #保存命令历史至历史文件~/.bash_history中

    #命令历史的使用技巧
        !n              #执行命令历史中的第n条命令
        !-n             #执行命令历史中倒数第n条命令
        !!              #执行上一条命令
        !string         #执行命令历史中最近一个以指定字符串开头的命令
        !$              #引用前一个命令的最后一个参数
        esc .           #按下esc松开后按 ”.“ ,引用前一个命令的最后一个参数
License: