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
【第十期读书会学习整理】
- 点赞
- 收藏
- 关注作者
评论(0)