Linux命令行界面和shell脚本学习

主要学习执行效率较高的Linux命令操作,包括Shell的启动、命令格式及Shell的高级应用,以及vi编辑器的使用

课程学习通过华为云服务器使用CloudShell登录

1Shell命令概述

1.1shell简介

shell是Linux的一个特殊程序,是内核与用户的接口,它是命令语言、命令解释程序及程序设计语言的统称。Shell是一个命令语言解释器,它拥有自己内建的Shell命令集,Shell也能被系统中其他应用程序所调用。

当用户成功登录Linux系统后,即开始了与Shell的对话交互过程,此时,不论何时键入一个命令,都被Shell解释执行。有一些命令,比如改变工作目录命令cd,是包含在Shell内部的,只要处在Shell命令行下就可以执行。还有一些命令,例如复制命令cp和移动命令mv,是独立的应用程序,必须存在于文件系统中某个目录下才能执行。对用户而言,不必关心一个命令是建立在Shell内部还是一个单独的程序。

1.2Linux命令行的格式

Linux命令的通用命令格式

  • 命令字 [选项] [参数]

选项及参数的含义

选项:用于调节命令的具体功能

  • 以“-”引导短格式选项(单个字符),例如“-l"
  • 以“--”引导长格式选项(多个字符),例如“--color"
  • 多个短格式选项可以写在一起,只用一个“-”引导,例如“-al"

参数:命令操作的对象,如文件、目录名等

Linux命令行的格式

命令行编辑的几个辅助操作

  • Tab键:自动补齐
  • 反斜杠 “\”:强制换行
  • 快捷键 Ctrl+U:清空至行首
  • 快捷键 Ctrl+K:清空至行尾
  • 快捷键 Ctrl+L:清屏
  • 快捷键 Ctrl+C:取消本次命令编辑
  • Home:跳到行首
  • End:跳到行尾

1.3获得命令帮助

内部命令help

  • 查看Bash内部命令的帮助信息

命令的“--help”选项

  • 适用于大多数外部命令

使用man命令阅读手册页

  • man -k [关键字]
  • 使用"↑"、"↓"键滚动文本
  • 使用Page Up和Page Down键翻页
  • 按Q或q键退出阅读环境、按"/ ”键后查找内容

1.4文件和目录管理

  • 目录操作命令pwd、cd、s、 mkdir
  • 文件操作命令 touch、cp、rm、mv、find
  • 文件内容操作命令cat、less、grep
  • 归档及压缩命令 tar

1.5目录操作命令-pwd、cd、ls、mkdir

  • pwd命令——用途:查看工作目录

  • cd命令——用途:切换工作目录    格式:cd [目录位置] 

  • mkdir命令——用途:创建新的目录   格式:mkdir [-p] [/路径/]目录名


1.6文件操作命令-ls、touch、cp、rm、mv、find

ls命令

  • 用途:列表(List)显示目录内容
  • 格式:ls[选项].…[目录或文件名]
  • 常用命令选项
    -l:以长格式显示
    -a:显示所有子目录和文件的信息,包括隐藏文件
    -d:显示目录本身的属性
    -lh:大小以k为单位显示
    --color:以颜色来区分不同类型文件

touch命令

  • 用途:新建空文件,或更新文件时间标记
  • 格式:touch 文件名...

cp命令

  • 用途:复制(Copy)文件或目录
  • 格式:cp [选项]... 源文件或目录... 目标文件或目录
  • 常用命令选项
    -r:递归复制整个目录树

rm命令

  • 用途:删除(Remove)文件或目录
  • 格式:rm [选项]... 文件或目录
  • 常用命令选项
    -r:递归删除整个目录树
    -f:强制删除,不进行提示

rmdir命令

  • 用途:删除(directory)目录

mv命令

  • 用途:移动(Move)文件或目录,若如果目标位置与源位置相同,则相当于改名
  • 格式:mv [选项]... 源文件或目录.. 目标文件或目录

find命令

  • 用途:用于查找文件或目录
  • 格式:find [查找范围] [查找条件]
  • 常用查找条件
    name:按文件名称查找
    user:按文件属主查找
    type:按文件类型查找
          f    查找文件
          d   查找目录
          l    链接
          p   管道
    -size:按大小查找

1.7文件内容操作命令-cat、less、grep

cat命令

  • 用途:显示出文件的全部内容
  • 格式:cat目标文件

less命令

  • 用途:全屏方式分页显示文件内容
  • 交互操作方法:
    按Enter键向下逐行滚动
    按空格键向下翻一屏、按b键向上翻一屏
    按q键退出

grep命令

  • 用途:在文件中查找并显示包含指定字符串的行
  • 格式:grep [选项] 查找条件 目标文件
  • 常用命令选项
    -i:查找时忽略大小写
    -V:反转查找,输出与查找条件不相符的行
  • 查找条件设置
    要查找的字符串以双引号括起来
    ^……”表示……开头,“……$”表示以……结尾
    ^$”表示空行

1.8归档及压缩命令 -tar

tar命令

  • 用途:制作归档文件、释放归档文件
  • 格式:tar [选项]... 归档文件名 源文件或目录
              tar [选项]... 归档文件名 [-C 目标目录]

常用命令

  • 打包:
    tar-czvf[存放路径]归档文件名tar.gz源文件或目录
    或tar-cjvf[存放路径]归档文件名tar.bz2源文件或目录
    或 tar cJvf[存放路径]归档文件名tar.xz源文件或目录
  • 解包:
    tar-xzvf[存放路径]归档文件名tar.gz[-C解压目录]
    或tar-xjvf[存放路径]归档文件名tar.bz2[-C解压目录]
    或 tar xJvf[存放路径]归档文件名tar.xz[-C解压目录]

2Bash的应用

2.1Bash的命令历史

  • 命令历史-保存用户曾经执行过的命令操作
  • 查看历史命令-使用↑、↓按键逐条翻看,允许编辑并重复执行、执行: history
  • 清除历史命令-执行: history -c
  • 调用历史命令-!n:执行历史记录中的第n条命令

2.2Bash的命令别名

  • 命令别名-为使用频率较高的复杂命令行设置简短的调用名称
  • 查看命令别名-  格式: alias [别名]
  • 设置命令别名-  执行: alias 别名='实际执行的命令'
  • 取消已设置的命令别名-  格式:unalias别名、unalias -a
  • 使别名永久生效- 将设置命令保存到~/.bashrc文件中

2.3重定向

重定向:将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上

  • 重定向标准输出
    >将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上
    >>将命令执行的结果追加输出到指定文件
  • 重定向标准错误
    2>清空指定文件的内容,并将标准错误信息保存到该文件中
    2>>将标准错误信息追加输出到指定的文件中
  • 重定向标准输出和标准错误
    &>将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上

2.4输出重定向实例

将命令输出重定向到文件

  •  将标准输出重定向到文件
        $ ls /etc/ > etcdir
  •  将标准输出重定向追加到文件
        $ 1s /etc/sysconfig/ >> etcdir
  •  将错误输出重定向到文件
       $ nocmd 2> errfile
  •  将标准输出和错误输出重定向到文件
        $ ls afile bfile &> errfile

3程序编辑器vim

3.1vim文本编辑器

  • 文本编辑器的作用
    维护 Linux系统中的各种配置文件
    编写 shell脚本

3.2vim编辑器的工作模式

  • 三种工作模式
    命令模式、输入模式、末行模式
  • 不同模式之间的切换

3.3命令模式的基本操作

控制光标移动,对文本进行复制、粘贴、删除等工作

用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符

强调一下:这些快捷键必须在命令模式下使用

光标移动

复制、粘贴、删除

查找匹配字符串

撤销编辑及保存退出

3.4末行模式中的基本操作

保存文件及退出vi编辑器

打开新文件或读入其他文件内容

文件内容替换

4Shell脚本

4.1shell脚本的概念

Shell脚本

  • 用途:完成特定的、较复杂的系统管理任务
  • 格式:集中保存多条 Linux命令,普通文本文件
  • 执行方式:按照预设的顺序依次解释执行

4.2编写可执行的shell脚本

  • 在脚本文件的各组成部分中,只有可执行语句是必不可少的(否则就不叫程序了)
  • 当缺省运行环境设置时,会自动由当前加载该脚本的 Shell解释器负责解释执行
  • Shell脚本文件的扩展名并无严格的约束,不一定非得是".sh"结尾的

4.3运行shell的脚本程序

  • 直接执行具有"x"权限的脚本文件
    例如:./repboot.sh
  • 使用指定的解释器程序执行脚本内容
    例如: bash repboot.sh、 sh repboot.sh
  • 通过 source命令(或.)读取脚本内容执行
    例如: soucre repboot.sh或 ./hello.sh

4.4shell脚本

  • #!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
  • echo命令用于向窗口输出文本。
    #!/bin/bash
    echo "hello, world!!"

4.5shell脚本应用示例

如果/boot分区的空间使用超过80%,输出报警信息

#!/bin/bash
RATE=`df -hT | grep "/boot" | awk '{print $6}' | cut -d "%" -f1 `
if [ $RATE -gt 80 ]
then
    echo "Warning, DISK is full !"
fi

批量添加20个系统用户账号,用户名依次为“stu1”、“stu2”、......、“stu20”

#!/bin/bash
i=1
while [ $i -le 20 ]
do
    useradd stu$i
    echo "123456" | passwd --stdin stu$i &> /dev/null
    let i++
done

删除用户

#!/bin/bash
i=1
while [ $i -le 20 ]
do
  userdel -r stu$i
  i=`expr $i + 1` 
done

九九乘法表的输出显示

#!/bin/bash

for (( i = 1; i <= 9; i ++ )) do
    for (( j = 1; j <= i; j ++ )) do
    let "temp = i * j"
    echo -n "$i*$j=$temp "
    done
printf "\n"
done

【第十期读书会学习整理】

(完)