Linux-Shell
Shell介绍:
- shell从内核解释命令和请求服务
- 和DOS相似,但DOS只有一套接口,而Linux可以选择不同的shell
- 不同的shell具有相似但不同的功能
- bash是Linux的默认值
- Linux的图形用户界面实际上是一个应用程序。在shell工作
大多数shell中可用的常用命令:
ls-显示当前目录中文件的名称
cd-更改目录,
cp-将一个文件复制到另一个文件
rm-删除文件
man-请求命令手册(或帮助)
pwd-显示当前目录的名称
cat-显示文本文件的内容
whoami-显示当前用户的用户名
全局正则表达式打印器-grep
句法:grep [OPTIONS] PATTERN [FILE...]
eg:关键工作查询:
grep 'word' filename --从某个文件查询关键字
root@fl-OMEN-by-HP-Laptop:/# grep 'aa' hello.txt aaaa root@fl-OMEN-by-HP-Laptop:/#
eg:递归查询:您可以递归搜索,即读取每个目录下的所有文件以查找字符串“192.168.1.5”:
grep -r "192.168.1.5" /etc/
eg:区分大小写匹配
root@lhctest[/root]#grep -i a a.sh
eg:数字查询
grep '[0-9]' test.sh
eg:字母查询
grep '[a-zA-Z]' test.sh
流编辑器-SED(基于行的工作)
语法:
sed OPTIONS... [SCRIPT] [INPUTFILE...]
eg:删除一些行:
sed '1d' filename --删除第一行
eg:展示一些行:
sed -n '1p' filename -- show first line --展示第一行
eg:添加一行
sed '1a drink tea' filename --添加“drink tea” 到第二行
eg:单词替换
sed ‘s/day/night/g ‘ old >new --把旧文件的“day”替换成新文件的“night”
awk-擅长处理基于列的文件
语法:
awk [options] 'script' var=value file(s)
或者
awk [options] -f scriptfile var=value file(s)
eg:获取一些列
awk '{print $1,$4}' log.txt - 获取第一列和第四列(按空格分隔) awk -F, '{print $1,$4}' log.txt - 获取第一列和第四列(用“,”分隔)
eg:过滤某些行
wk '/UUID/' /etc/fstab -- 获取包含/uuid/的行
查找-查找文件并执行操作
eg:罗列文件:
find./test--列出所有文件和子目录。
eg:根据名称搜索文件:
find./test-name“abc.txt”--在/test下查找名为abc.txt的文件 查找~-type f-name“.*”--查找隐藏文件
eg:根据修改日期和时间搜索文件和目录
find/-mtime 50--查找50天前修改过的所有文件
eg:根据大小搜索文件和目录
find/-size 50M--查找所有50MB文件
eg:查找文件并执行以下命令:
find/tmp -type f-name“*.txt”-exec rm-f \;--在tmp目录中删除所有映射*.txt格式的文件
vi - 强大的文本编辑器
vi有三种编辑模式
- 编辑模式
- 正常模式
- 最后一行模式
正常模式
使用:vi文件名命令时,第一个输入模式为正常模式,在正常模式下,您可以:
1)上下移动光标
2)搜索。例如:输入/生成
然后按“n”键进入下一个映射位置,“n”键进入最后一个映射位置
3)换行:
x | 删除当前字符 |
dd | 删除当前行 |
dw | 删除到当前单词的结尾 |
gg | 跳过文件顶部 |
GG | 跳到文件末尾 |
4)在正常模式下,无法编辑文本
编辑模式
- 要将正常模式更改为编辑模式,可以按以下键进入差异输入方式:
i-字符出现在当前光标位置
A-字符出现在当前光标位置之后
o-在当前行之后插入新行 - 在编辑模式下,您可以在文本中输入任何单词
- 要从编辑模式更改为正常模式,只需按“Esc”键。
最后一行模式
我们可以通过按冒号键进入最后一行模式,“:”
:q! | 强制推出不保存 |
:w filename | 以filename为文件保存 |
:x | 保存修改后的文件并退出编辑器 |
:e filename | 编辑(加载)文件名 |
:u | 撤消上一个编辑命令 |
:set ic | 设置不区分大小写 |
:set nu | 显示行号 |
:set list | 显示结束字符 |
Shell脚本
shell为您提供了Linux/Unix系统的接口。它聚集在一起,从您输入并基于该输入执行程序。当A程序完成执行,显示该程序的输出。
shell是一个我们可以运行命令、程序的环境和shell脚本。有不同种类的Shell,就像有一样不同风格的操作系统。每种Shell都有自己的一套已识别的命令和函数。
Shell提示
提示$,称为命令提示,由shell发出。显示提示时,可以键入命令。
按Enter键后,shell读取您的输入。它决定了命令
您希望通过查看输入的第一个字来执行。一个词就是
完整的字符集。空格和制表符分隔单词。
Shell脚本
shell脚本的基本概念是命令列表,其中包括按执行顺序列出。一个好的shell脚本以磅符号#开头的注释,描述步骤。
有条件测试,如A值大于B值,循环允许我们通过大量的数据、文件读取和存储数据,以及用于读取和存储数据的变量,以及脚本可能包含函数。
外壳脚本和函数都是解释的。这意味着他们是未编译的。
脚本示例
假设我们创建了一个test.sh脚本。注意,所有脚本都有.sh扩展名。以前如果在脚本中添加任何其他内容,则需要通知系统shell脚本是正在启动。这是使用shebang构造完成的。
#!/bin/sh
这告诉系统以下命令将由Shell执行。它被称为shebang,因为#符号被称为散列,并且这个!符号被称为“砰”。要创建包含这些命令的脚本,请先放置shebang行,然后添加命令:
#!/bin/sh pwd ls
Shell 注释
#!/bin/bash # Author : aaaaa # Copyright (c) ..... pwd ls
现在保存上述内容并制作此脚本为可执行文件如下:
chmod +x test1111.sh
现在,您已经准备好执行shell脚本,如下所示:
# ./tst1111.sh
扩展Shell脚本
shell脚本有几个必需的构造,告诉shell环境做什么,什么时候做。当然,大多数脚本比上面的脚本更复杂。
毕竟,shell是一种真正的编程语言,包含变量和控件结构等等。不管脚本有多复杂,它仍然是只是按顺序执行的命令列表。
下面的脚本使用从键盘接收输入的read命令并将其指定为变量person的值,最后在stdout上打印。
#!/bin/sh echo "hahahhah" read -p "ssss" name echo "hello,$name"