zoukankan      html  css  js  c++  java
  • Linux学习基础篇(shell、命令及vi使用)

    1、shell

    1.1、简介

    shell的本意是“壳”的意思,是围绕在Linux内核之外的一个“壳”程序,用户在操作系统上完成的所有任务都是通过shell与Linux系统内核的交互来实现的。

    Linux下除了默认的Bourne again shell(bash),还有很多其他的shell,例如C shell(csh)、Korn shell(ksh)、Bourne shell(sh)和Tenex C shell(tcsh)等。每个版本的shell功能基本相同,现在的Linux系统发行版一般都以bash作为默认的shell。

    为了加快命令的运行,同时更有效地定制shell程序,shell中定义了一些内置的命令,一般我们把shell自身解释执行的命令称为内置命令,例如cd、pwd、exit和echo等命令,都是属于bash的内置命令。

    除了内置命令,Linux系统上还有很多可执行文件,这些可执行文件也可以作为shell命令来执行。其实Linux上很多命令都不是shell的内置命令,例如ls就是一个可执行文件,存放在/bin/ls中。这些命令与shell内置命令不同,只有当它们被调用时,才由系统装入内存执行。

    shell执行命令解释的具体过程为:用户在命令行输入命令提交后,shell程序首先检测是否为内置命令,如果是,就通过shell内部的解释器将命令解释为系统调用,然后提交给内核执行;如果不是shell内置的命令,那么shell会按照用户给出的路径或者根据系统环境变量的配置信息在硬盘寻找对应的命令,然后将其调入内存,最后再将其解释为系统调用,提交给内核执行。

    1.2、shell基本语法

    1.2.1、shell命令一般格式

    用户登录系统后,shell命令行启动。shell遵循一定的语法格式将用户输入的命令进行分析解释并传递给系统内核。shell命令的一般格式为:

    command [options] [arguments]
    
    # -- command:命令的名称
    # -- options:命令的选项
    # -- arguments:命令的参数
    
    # 在命令行中,选项是包含一个或多个字母的代码,主要用于改变命令的执行方式,一般在选项前有一个“-”用于区别参数

    根据习惯,我们一般把具有以上格式的字符串称为命令行。命令行是用户与shell之间对话的基本单位。

    1.2.2、shell中的通配符

    通配符主要是为了方便用户对文件或者目录的描述,例如用户仅仅需要以“.sh”结尾的文件时,使用通配符就能很方便地实现。各个版本的shell都有通配符,这些通配符是一些特殊的字符,用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。

    • “*”:匹配任意一个或多个字符
    • “?”:匹配任意单一字符
    • “[]”:匹配任何包含在方括号内的单字符

    例如:

    [root@localhost ~]# ls *.sh
    # 匹配以.sh结尾的文件
    
    [root@localhost ~]# ls ?.sh
    # 匹配文件名只有一个字符的.sh文件
    
    [root@localhost ~]# ls [xyz].sh
    # 匹配文件名为x.sh或y.sh或z.sh的文件

    1.2.3、shell重定向

    执行一个shell命令时,通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘输入;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件通常都对应终端的屏幕。

    所谓的重定向,就是不使用系统默认的标准输入输出,而是重新指定,因此重定向分为输入重定向、输出重定向和错误输出重定向,shell根据重定向操作符来决定重定向操作。

    输入重定向

    输入重定向用于改变命令的输入源,利用输入重定向,就可以将一个文件的内容作为命令的输入,而不从键盘输入。用于输入重定向的操作符有“<”和“<<”。

    例如:

    [root@localhost ~]# wc < install.log

    将文件install.log作为wc命令的输入。

    输出重定向

    输出重定向是将命令的输出结果不在屏幕输出,而是输出到一个指定文件中。用于输出重定向的操作符有“>”和“>>”。

    例如:

    [root@localhost ~]# ls -sh > a.txt

    将命令ls的输出保存到文件a.txt中。

    “>”跟“>>”的区别:使用”>”时,如果文件存在,则文件原有的内容将被覆盖,”>>”可以保存文件原有的内容。

    技巧:使用输出重定向可以整合两个文件,使用cat命令

    [root@localhost ~]# cat a.txt b.txt > c.txt

    将a.txt和b.txt文件中的内容整合到c.txt文件中。

    错误输出重定向

    错误输出重定向将命令运行中产生的错误输出到一个指定的文件中。用于错误输出重定向的操作符有”2>”和”2>>”,两个操作符的区别与输出重定向一样。

    例如:

    [root@localhost ~]# tar -zxvf a.tar.gz 2> error.txt

    将tar命令执行产生的错误保存到文件error.txt中。

    1.2.4、shell管道

    管道可以把多个命令连接起来,把前面一个命令的输出当作后面一个命令的输入,而不用经过任何的中间文件。使用管道符”|”可以建立一个管道。

    例如:

    [root@localhost ~]# rpm -qa|grep python

    从系统软件包中过滤出带有”python”的软件包。

    1.2.5、shell的引用

    在bash中有很多特殊字符,这些字符本身就具有特殊含义。如果在shell的参数中使用它们,就会出现问题。Linux中使用了“引用”技术来忽略这些字符的特殊含义,引用技术就是通知shell将这些特殊字符当作普通字符处理。shell中用于引用的字符有转义字符 “\”、单引号”’”、双引号 “ ””。

    转义字符”\”

    如果将”\”放在特殊字符前面,则shell将忽略这些特殊字符的含义,而把它当成普通字符对待。

    例如:

    要创建c:\abc这个目录,如果运行以下命令:

    [root@localhost ~]# mkdir c:\abc

    创建的是c:abc目录,加上转义字符运行以下命令:

    [root@localhost ~]# mkdir c:\\abc

    此时创建的就是c:\abc目录。

    单引号”’”

    将字符串放到一对”’”中,那么这一串字符串中的所有特殊字符将被忽略。

    双引号”””

    效果与”’”相同,但在”””中某些特殊字符仍保留自己的特殊含义,如”$”、”\”和”’”。

    2、系统常用命令

    命令在执行时,有些命令执行成功会在屏幕上返回信息,而有些命令成功执行则无返回信息。其实所有命令的执行都存在返回码,如果返回码为0则表示命令执行成功,非0则表示命令执行失败,使用以下命令可以查看命令的返回码:

    echo $?

    2.1、系统管理与维护命令

    2.1.1、ls命令

    显示指定工作目录下的内容,列出工作目录所含的文件及子目录。语法如下:

    ls [选项] [路径或文件]

    常用选项:

    • -a:显示指定目录下的所有文件以及子目录,包含隐藏文件(Linux下将“.”开头的文件或者目录视为隐藏文档)
    • -l:除文件名称外,同时将文件或者子目录的权限、使用者和大小等信息详细列出,ls –l可以简写为ll
    • -s:以块数形式显示每个文件分配的尺寸
    • -S:以文件大小排序
    • -p:对目录加上表示符号”/”
    • -F:在每个文件名后附上一个字符以说明该文件的类型。“*”表示可执行的普通文件,“/”表示目录, “@”表示符号链接,“|”表示FIFOs,“=”表示套接字(sockets)
    • -h:以易于阅读的格式输出文件大小(大部分命令的-h参数都具有该功能,如df -h)
    • -i:显示文件的inode号

    2.1.2、passwd命令

    用于设置用户口令。语法如下:

    passwd [选项] [用户名]

    一些选项:

    • -k:保持身份验证令牌不过期
    • -d:删除已命名帐号的密码(只有根用户才能进行此操作)
    • -l:锁定指名帐户的密码(仅限 root 用户)
    • -u:解锁指名账户的密码(仅限 root 用户)
    • -e:终止指名帐户的密码(仅限 root 用户)
    • -f:强制执行操作
    • -x:密码的最长有效时限(只有根用户才能进行此操作)
    • -n:密码的最短有效时限(只有根用户才能进行此操作)
    • -w:在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
    • -i:当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
    • -S:报告已命名帐号的密码状态(只有根用户才能进行此操作)
    • --stdin:从标准输入读取令牌(只有根用户才能进行此操作)

    2.1.3、su命令

    用于改变用户身份,语法如下:

    su [选项] [用户名]

    常用选项:

    • - or –l:加载相应用户下的环境变量并使目前的shell成为改变身份后用户的默认shell
    • -c:改变身份运行一个命令后结束

    注意:使用su时,如果没有使用-选项改变环境变量,则即使改变用户可能有些命令也无法运行,因为环境变量没有改变。

    2.1.4、dmesg命令

    显示开机信息。内核会将开机信息存储在系统缓冲区(ring buffer),如果开始时来不及查看,可以使用该命令查看。语法如下:

    dmesg [选项]

    常用选项:

    • -c:显示开机信息后清除ring buffer
    • -s:设置缓冲区的大小,默认8192

    注意:该命令经常用于系统异常诊断,当系统出问题时,异常信息将会写入dmesg内存中。另外,/var/log/dmesg中也保存开机信息,但该信息为系统上一次启动时的信息。

    2.1.5、free命令

    free命令用来显示系统内存状态,具体包括物理内存、虚拟内存、共享内存和系统缓存。语法如下:

    free [选项]

    常用选项:

    • -b:以Byte为单位显示内存使用情况
    • -m:以MB为单位显示内存使用情况
    • -k:以kb为单位显示内存使用情况
    • -s:根据指定的间隔秒数持续显示内存使用情况

    free命令显示信息详解

    在CentOS 6.x版本与CentOS 7.x版本中,free命令返回的结果有些不同。

    CentOS 6.x版本详解:

    6free

    CentOS 7.x版本详解:

    7free

    2.1.6、ps命令

    显示系统进程在瞬间的运行状态。语法如下:

    ps [选项]

    常用选项:

    • -a:显示所有用户的进程,包含每个程序的完整路径
    • -x:显示所有系统进程,包括那些没有终端的程序
    • -u:显示使用者的名称和起始时间
    • -f:详细显示程序执行的路径
    • -e:将除内核以外所有进程的信息显示在标准输出

    ps -ef命令显示信息详解

    ps -ef

    ps -aux命令显示信息详解

    ps -aux

    STAT栏进程状态详解

    • D:不可中断进程
    • R:正在运行,或在队列中的进程
    • S:处于休眠状态的进程
    • T:停止或被追踪的进程
    • I:空闲状态的进程
    • Z:僵尸进程
    • P:等待交换页的进程
    • X:死掉的进程
    • <:高优先级进程
    • N:低优先级进程
    • s:包含子进程
    • +:位于后台的进程组

    2.1.7、top命令

    top命令提供了实时的对系统处理器状态的监控,它能够实时显示系统中各个进程的资源占用状况。该命令可以按照对CPU的使用、内存使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。语法如下:

    top

    top命令显示信息详解

    top

    以下是每行详细解析:

    top-1

    top-2

    top-3top-4

    top-5

    2.1.8、pwd命令

    显示当前所在的工作目录的绝对路径名称,语法如下:

    pwd

    2.1.9、cd命令

    改变当前的工作目录,语法如下:

    cd [目录]

    一些用法:

    • cd or cd ~:返回当前用户的默认工作目录
    • cd ~用户名:返回指定用户的默认工作目录
    • cd .. or cd ../:返回上级目录

    2.1.10、date命令

    显示或修改系统时间,语法如下:

    date [选项] [显示的时间格式(以+开头,后面加时间格式)]

    常用选项:

    • -d:显示当前时间之前或之后的时间
    • -s:修改当前时间,只有root有权限

    例如:

    # 按指定格式显示日期
    [root@localhost ~]# date '+%Y/%m/%d'
    2018/06/30
    
    # 显示两天前的时间
    [root@localhost ~]# date -d '2 days ago'
    2018年 06月 28日 星期四 14:31:06 CST
    
    # 显示两天后的时间
    [root@localhost ~]# date -d '2 days'
    2018年 07月 02日 星期一 14:31:28 CST

    2.1.11、who/w命令

    显示当前登录到系统的用户,语法如下:

    who
    
    w

    2.1.12、whoami命令

    显示当前正在操作的用户,语法如下:

    whoami

    2.1.13、uname命令

    显示操作系统相关信息,语法如下:

    uname [选项]

    常用选项:

    • -a:输出所有信息

    2.1.14、uptime命令

    显示系统运行时长及系统平均负载,语法如下:

    uptime

    2.1.15、last命令

    列出目前与过去登入系统的用户相关信息。当执行last指令时,它会默认读取位于/var/log目录下名称为wtmp的文件,并把该给文件记录的登入系统的用户名单全部显示出来。语法如下:

    last

    2.1.16、fuser命令

    显示哪些进程使用命名文件、套接字或者文件系统,语法如下:

    fuser 命名文件/套接字/文件系统

    2.2、文件管理与编辑命令

    2.2.1、rm命令

    用于删除文件或者目录,删除目录时将删除该目录下的所有文件及子目录。对于链接文件,只是断开链接,原文件保持不变。语法如下:

    rm [选项] 文件或目录
    • -r:递归的删除所有文件及目录,不加该选项则rm命令无法删除目录
    • -f:不提示直接删除
    • -i:交互式删除,在删除时给出提示

    注意:rm后不加选项,则默认未rm -i交互式删除。如果不想交互式删除又想rm后不加选项,则使用\rm,取消其默认行为,该方法适合有默认选项的命令。

    2.2.2、ln命令

    ln命令用来在文件或目录之间创建链接。Linux下的链接有两种,一种是硬链接(Hard Link),一种是符号链接(Symbolic Link),默认情况下ln命令产生的是硬链接。

    • 硬链接:通过文件的索引节点(inode号)来进行链接,链接文件和源文件的inode号相同。
    • 符号链接:软链接,类似于Windows的快捷方式。

    命令语法如下:

    ln [选项] 源文件 目标链接名

    常用选项:

    • -s:创建符号链接

    2.2.3、cp命令

    用来拷贝文件或目录,语法如下:

    cp [选项] 源文件或目录 目标文件或目录

    常用选项:

    • -a:在拷贝目录时使用。它保留所有的信息,包含文件链接、文件属性,并递归地拷贝目录
    • -r:若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
    • -p:保留文件的修改时间和存取权限
    • -i:如果已有相同文件名的目标文件存在,则提示用户是否覆盖,cp命令的默认参数

    2.2.4、find命令

    用来在指定的路径下查找指定的文件,语法如下:

    find [路径] [选项]

    常用选项:

    • -amin/cmin/mmin:查找在指定时间被存取/更改/更改过的文件或目录,单位以分钟计算
    • -atime/ctime/mtime:查找在指定时间被存取/更改/更改过的文件或目录,单位以24小时计算
    • -name:查找指定的文件名
    • -path:指定目录
    • -prune:排除前面设定的内容
    • -size:查找指定大小的文件
    • -type:查找指定类型的文件
    • -user:查找指定用户的文件
    • -print:将搜索结果输出到标准输出
    • -exec:对搜索出符合条件的文件执行所给定的命令,而不询问用户是否执行该命令。执行命令的格式为-exec 命令 {} \;。注意:这里的{}表示符合条件的文件
    • -ok:对搜索出符合条件的文件执行所给定的命令,询问用户是否执行。命令格式同-exec

    例如:

    # 查找/var/log下文件名为.log,两天前的,属于root用户的普通文件并拷贝到/tmp目录下
    find /var/log -name '*.log' -mtime +2 -user root -type f -exec cp {} /tmp \;
    
    # 在系统根目录下查找不在/var/log和/usr/bin目录下的文件名为main.c的文件。
    find /  \( -path /var/log -o -path /usr/bin \) -prune -o -name “main.c”

    2.2.5、whereis命令

    用于在特定目录中查找符合条件的二进制文件/源代码文件/帮助文件。语法如下:

    whereis [选项] 文件名

    常用选项:

    • -b:只查找二进制文件
    • -B <目录>:在指定目录下查找二进制文件
    • -f:不显示文件名前的路径
    • -m:只查找帮助文件
    • -M <目录>:在指定目录下查找帮助文件
    • -s:只查找源代码文件
    • -S <目录>:在指定目录下查找源代码文件
    • -u:查找不包含指定类型的文件

    2.2.6、file/stat命令

    file命令用于显示文件的类型,对于长度为0的文件,将识别为空文件;对于符号链接文件,缺省情况下将显示符号链接引用的真实文件路径。语法如下:

    file 文件名

    stat命令用于查看文件的详细状态。语法如下:

    stat 文件名

    2.2.7、grep命令

    grep命令是Linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容;该命令也可以用于过滤命令执行后的返回内容。语法如下:

    grep [选项] 查找的字符串 文件名

    常用选项:

    • -c:只显示符合条件的行数,而不显示被匹配到的内容
    • -i:搜索时忽略大小写
    • -n:在显示的搜索结果上显示行号
    • -E:支持扩展的正则表达式
    • -w:被匹配的文本只能是单词,而不能是单词中的某一部分
    • -v:只打印没有匹配到的内容

    grep家族的三个命令:

    • grep:标准grep命令,支持基本正则表达式
    • egrep:扩展grep命令,支持基本和扩展正则表达式,等价于grep –E
    • fgrep:快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配,等价于grep –F

    2.2.8、diff命令

    用来以逐行的方式比较文本文件的异同,语法如下:

    diff [选项] 文件1 文件2

    diff命令执行后,会将比较后的不同之处以指定的形式列出,如下所示:

    n1 a n3,n4

    n1,n2 d n3

    n1,n2 c n3,n4

    其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号,"n3"、"n4"表示在文件2中的行号。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以<开始的行属于文件1,以>开始的行属于文件2。

    2.2.9、mv命令

    用于将文件或目录重命名或将文件移动到另一个目录。如果源类型和目标类型都是文件或者目录时,mv将进行目录重命名。如果源类型为文件,而目标类型为目录时,mv将进行文件的移动。如果源类型为目录,则目标类型只能是目录,不能是文件,此时完成目录重命名。语法如下:

    mv [选项] 源文件或目录 目标文件或目录

    常用选项:

    • -i:交互式操作,如果已存在文件或目录时,将会询问是否覆盖
    • -f:强制执行,如果已存在文件或目录时,不询问即覆盖
    • -b:在覆盖文件前进行备份

    2.2.10、more命令

    如果一个文本文件比较长,一屏无法显示完毕,就需要使用more命令。more命令读取文本文件时,每次一屏显示,并且在每屏后暂停,同时在屏幕底部显示单词“More”。如果此时按“Enter”键,more命令就会接着再显示文本的一行,依此类推;如果按空格键,more命令就继续显示文本文件的另一屏信息。语法如下:

    more [选项] 文件

    2.2.11、cat命令

    cat命令用来将文件的内容打印到标准输出,语法如下:

    cat [选项] 文件名

    2.2.12、touch命令

    touch命令用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。该命令可以用来创建文件,语法如下:

    touch [选项] [设定的时间] 文件

    2.2.13、mkdir命令

    用于创建目录,语法如下:

    mkdir [选项] 目录名

    常用选项:

    • -p:可以递归的创建目录,如果上级目录不存在则也会被创建

    2.2.14、rmdir命令

    用于删除空目录,如果目录非空则无法删除,语法如下:

    rmdir [选项] 目录名

    2.2.15、wc命令

    用于计算数字。利用该命令可以计算文件的Byte数、字数或是列数,若不指定文件,或是给予的文件名为-,则表示从标准输入设备读取数据,语法如下:

    wc [选项] [文件]

    常用选项:

    • -c:显示Bytes数
    • -l:显示列数
    • -w:显示字数

    2.3、压缩与解压缩命令

    2.3.1、gzip/gunzip命令

    对文件进行压缩或者解压。压缩文件预设的扩展名为“.gz”,gunzip是gzip的硬链接,因此无论是压缩或者解压都可以通过gzip来实现。注意:gzip只能对文件进行压缩,不能压缩目录,即使指定压缩的目录,也只能压缩目录内的所有文件。语法如下:

    gzip [选项] 文件

    常用选项:

    • -d:对压缩文档进行解压缩
    • -t:检查压缩文档的完整性
    • -l:显示压缩文件的压缩信息,显示字段为压缩文档大小、未压缩文档大小、压缩比和未压缩文档名称

    注意:使用gzip压缩文件时,在完成压缩后源文件将不存在;在解压压缩文档时,解压完成后压缩文档不存在。

    2.3.2、bzip2/bunzip2命令

    对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2其实是bzip2的符号链接,即软链接,因此压缩解压都可以通过bzip2实现。语法如下:

    bzip2 [选项] 文件

    常用选项:

    • -d:对压缩文档进行解压缩
    • -k:压缩/解压缩完成后保留源文件
    • -t:测试压缩文档的完整性

    2.3.3、tar命令

    对文件或目录进行打包归档,是Linux下常用的归档命令。该命令将文件或目录归档成一个包,但并不进行压缩,需要压缩时可使用选项调用gzip或者bzip2进行压缩,语法如下:

    tar [选项] 文件或目录

    常用选项:

    • -c:创建新的归档文件
    • -t:列出档案文件中已经归档的文件列表
    • -x:从打包的档案文件中还原文件,即解开tar包
    • -z:调用gzip在文件归档打包的过程中进行压缩/解压缩
    • -j:调用bzip2在文件归档打包的过程中进行压缩/解压缩
    • -f:后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名;如果是磁带,只需指定磁带设备名即可。注意,在“-f”选项之后不能再跟任何其他选项,也就是说“-f”必须是tar命令的最后一个选项
    • -v:在创建或解开归档文件的过程中,显示各归档文件的名称
    • -p:在文件归档的过程中保持文件的属性不发生变化
    • --exclude file:在归档的过程中,不将指定的file文件归档

    例如:

    # 打包当前目录下的a目录并使用gzip压缩,归档文件保存在/tmp目录下
    tar -zcvf /tmp/a.tar.gz a
    
    # 将/tmp下的a.tar.gz包解压缩到/etc目录下
    tar -zxvf /tmp/a.tar.gz -C /etc
    
    # 在/opt目录下,仅解开/opt/etc.tar.gz压缩文件中的/etc/inittab文件。
    tar -zxvf /opt/etc.tar.gz  -C /opt etc/inittab
    
    # 将/etc目录打包压缩后直接解压到/opt目录下,而不生成打包的档案文件。
    tar -zcvf - /etc | tar –zxvf -  -C /opt

    2.3.4、zip/unzip命令

    用于对文件或者目录进行压缩或者解压,默认生成以“.zip”为后缀的压缩包。语法如下:

    zip [选项] 压缩文件名 需要压缩的文件或目录
    unzip [选项] 压缩文件

    2.4、磁盘管理与维护命令

    2.4.1、df命令

    用于查看磁盘空间占用情况,语法如下:

    df [选项]

    常用选项:

    • -h:以容易理解的格式输出文件系统分区占用情况
    • -k:以kB大小为单位输出文件系统分区占用情况
    • -m:以MB大小为单位输出文件系统分区占用情况
    • -i:列出文件系统分区的inodes信息
    • -T:显示磁盘分区的文件系统类型

    2.4.2、du命令

    用来显示文件或目录所占用的磁盘空间情况,语法如下:

    du [选项] 文件或目录

    常用选项:

    • -h:以人性化的格式显示文件或者目录大小
    • -k:以MB为单位显示文件或者目录大小
    • -s:仅显示每个参数的总数,例如du –h /etc将显示etc目录下每个文件的大小,du –sh /etc则显示的是整个etc目录的大小

    2.4.3、fsck命令

    用于检查文件系统并尝试修复文件系统的错误。注意:在执行fsck命令修复某个文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是极为不安全的,数据可能遭到破坏,也有可能损坏磁盘。语法如下:

    fsck [选项] 设备名

    常用选项:

    • -t:指定要检查的文件系统类型。一般情况下可不添加此选项
    • -y:如果出现需要手动确认修复的,将自动输入yes进行修复

    在CentOS 7.x中,使用xfs_repair命令用于修复xfs文件系统。

    2.4.4、mount/umount命令

    mount命令用于挂载指定的文件系统,umount命令用于卸载指定的文件系统,语法如下:

    mount [选项] [-L <标签>] [-o <选项>] [-t <文件系统类型>] 设备名 挂载点
    umount 挂载点

    常用选项:

    • -r:以只读方式加载设备
    • -w:以可读写模式加载设备,mount的默认选项
    • -a:加载文件/etc/fstab中指定的所有设备
    • -L <标签>:标签其实就是磁盘分区标识的别名,标签可以随便起名,这样便于记忆,在Linux下磁盘分区的设备名比较难记,利用标签代替设备名,简单易记
    • -o <选项>:指定加载文件系统时的选项。 ro,以只读模式加载;rw,以可读写模式加载
    • -t <文件系统类型>:指定设备的文件系统类型,一般不用加在选项,mount会自动识别设备的文件系统类型

    2.5、网络设置与维护命令

    2.5.1、ifconfig命令

    用于显示当前网络接口状态或配置网络,注意:使用ifconfig命令配置的信息将在系统重启后丢失。语法如下:

    ifconfig [选项] [interface] [inet|up|down|netmask|addr|broaddcast]

    一些例子:

    # 在网卡enp0s3上配置两个IP地址,分别为192.168.60.136192.168.66.138,子网掩码为255.255.255.0
    [root@centos7 ~]# ifconfig enp0s3 192.168.60.136 netmask 255.255.255.0
    [root@centos7 ~]# ifconfig enp0s3:0 192.168.66.138 netmask 255.255.255.0
    
    # 修改网卡的MAC地址为新的MAC地址,使用以下命令:
    [root@centos7 ~]#ifconfig enp0s3 hw ether xx:xx:xx:xx:xx:xx
    
    # 将网卡enp0s3禁用后再启用,使用以下命令:
    [root@centos7 ~]# ifconfig enp0s3 down
    [root@centos7 ~]# ifconfig enp0s3 up

    在CentOS 7.x中建议使用ip命令代替ifconfig。

    2.5.2、ip命令

    该命令同ifconfig,正在取代ifconfig。

    # 设置IP地址
    [root@localhost ~]# ip addr add 192.168.100.193/24 dev enp0s3
    
    # 查看IP地址
    [root@localhost ~]#ip addr show enp0s3
    
    # 删除IP地址,只需用del代替add
    [root@localhost ~]#ip addr del 192.168.100.193/24 dev enp0s3
    
    # 列出路由表条目
    [root@localhost ~]#ip route show
    
    # 查看路由包来自的接口
    [root@localhost ~]#ip route get 172.16.213.51
    
    # 激活网络接口
    [root@localhost ~]# ip link set eth0 up
    
    # 停止网络接口
    [root@localhost ~]# ip link set eth0 down
    
    # 监控netlink消息
    [root@localhost ~]# ip monitor all
    
    # 显示网络统计信息
    [root@localhost ~]# ip -s link
    
    # 设置默认网关
    [root@localhost ~]# ip route add default via 192.168.1.254

    2.5.3、scp命令

    scp就是secure copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。语法如下:

    # 从远程服务器上下载文件
    scp [选项] 远程系统用户名@IP地址:文件存放的绝对路径 本地文件路径
    
    # 将文件推送到远程服务器上
    scp [选项] 本地文件路径 远程系统用户名@IP地址:文件存放的绝对路径

    常用选项:

    • -r:拷贝目录
    • -P:指定远程服务器SSH端口号

    2.5.4、traceroute命令

    用于显示网络数据包传输到指定主机的路由信息,追踪数据传输的路由状况,默认数据包大小38Bytes。traceroute利用ICMP协议,有些网络设备可能会屏蔽ICMP数据包,因此也会出现节点没有回应的状态,如果在指定的时间内(时间可以设置),traceroute检测不到某个路由节点的回应信息,就在屏幕输出“*”,表示此节点无法通过。语法如下:

    traceroute [选项] 远程主机名或IP地址 [数据包大小]

    常用选项:

    • -i :使用指定接口发送数据包
    • -w:设置等待远程主机回应的时间
    • -s:设置本地主机发送数据包的IP地址

    2.5.5、mtr命令

    mtr是Linux下一个非常好用的网络连通性判断工具,结合了ping、traceroute、nslookup的相关特性。语法如下:

    mtr 主机名或IP地址
    mtr

    2.5.6、wget命令

    用于从网络上下载内容,语法如下:

    wget [选项] 网址

    常用选项:

    • -c:断点续传
    • -O:下载并以不同的文件名保存
    • -b:后台下载
    • --limit-rate:限速下载
    • --no-cookies:不使用cookie
    • --no-check-certificate:不要验证服务器的证书

    --no-cookies --no-check-certificate在下载HTTPS链接出现问题时配合使用,不验证服务器证书和不使用cookie。

    2.5.7、telnet命令

    用于通过telnet协议与远程主机通信或者获取远程主机对应端口的信息。语法如下:

    telnet [主机名或IP地址] [端口]

    2.5.8、netstat命令

    用于显示本机网络连接、运行端口和路由表等信息。语法如下:

    netstat [选项]

    常用选项:

    • -a:显示本机所有连接和监听端口
    • -n:以IP地址的形式显示当前建立的有效连接和端口
    • -r:显示路由表信息
    • -s:显示按协议的统计信息。默认地,将显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6的统计信息
    • -v:显示当前的有效连接,与“-n”选项类似
    • -t:显示所有的TCP协议连接情况
    • -u:显示所有的UDP协议连接情况
    • -i:显示自动配置接口的状态
    • -l:仅显示连接状态为“LISTEN”的服务的网络状态
    • -p:显示连接对应的PID与Program name

    常用组合:netstat –antlp 、netstat -i、netstat –r

    3、vi/vim

    3.1、简介

    vi是Linux下标准的文本编辑工具,是一款功能强大、高度可定制的文本编辑器。vim是vi的功能增强版,在vi的基础上改进和增加了很多特性。

    vi编辑器有两种工作模式,即命令模式和文本输入模式。在命令模式下,输入的字符被解释为vi命令,就是这些命令组合形成了vi的强大功能,通过vi命令可以转换到文本输入模式;在文本输入模式下,输入的字符被作为正在编辑的文件的正文内容来接受,如果按“Esc”键则切换到vi命令模式。

    vi命令模式下的命令选项,主要分为移动光标类命令、屏幕翻滚类命令、插入删除文本类命令、搜索及替换类命令和保存退出类命令。

    3.2、vi/vim常用命令

    vi/vim命令是在当编辑器处于命令模式下通过键盘上的对应按键或者输入命令来实现vi/vim的某个功能。

    3.2.1、插入删除文本类命令

    • i:在光标前输入文字
    • a:在光标后输入文字
    • o:在当前行之下新开一行
    • O:在当前行之上新开一行
    • p:将剪贴板的内容粘贴到文件
    • dd:删除光标所在的行,删除后的内容自动保存在剪贴板上
    • yy:将光标所在的行拷贝到剪贴板,如果在yy前加上数字,可复制多行

    3.2.2、搜索即替换类命令

    • /:在光标所在行向下查找字符串
    • ?:在光标所在行向上查找字符串
    • n:在同一方向重复上次的搜索命令
    • :s/a1/a2/g:将当前光标所在行中所有的a1替换成a2
    • :n1,n2s/a1/a2/g:将文件中第n1至n2行中所有的a1替换成a2
    • :g/a1/s//a2/g:将文件中所有的a1替换成a2
    • :set nu:给文件中的每行加上行号

    3.2.3、保存退出类命令

    • :wq:保存并退出编辑器,:wq!表示保存并强制退出
    • :q:不保存退出编辑器,:q!表示不保存强制退出
    • :w:保存当不退出编辑器,:w!表示强制保存,:w 文件名,另存文件
    • :x!:保存并退出编辑器,同:wq
  • 相关阅读:
    session笔记-韩顺平
    带宽
    cookie-韩顺平
    分层模式开发+MVC模式开发--韩顺平雇员数据库管理
    韩顺平-雇员管理系统-学习小结
    常用的PHP数据库操作方法(MYSQL版)
    使用Three.js 基本组件以及流程
    three.js 相机
    多线程的操作与数据绑定
    矩阵-
  • 原文地址:https://www.cnblogs.com/yu2006070/p/9243328.html
Copyright © 2011-2022 走看看