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"