shell基础使用及vim的常用快捷键

news2025/1/13 22:58:15

一、shell简介

参考博文1

参考博文2——shell语法及应用

参考博文3——vi的使用

linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是 / b in/ b a s h  ,流行的shell有ash、bash、ksh、csh、zsh等

#!/bin/bash			#这一行被称为shebang 行	[指定告知系统当前这个脚本要使用的shell解释器]

1.1 shell常用的命令和概念

(1)echo:用于在屏幕上显示文本或变量的值

echo "Hello, World!"

(2)read:用于从用户那里读取输入并将其赋值给变量

read -p "Enter your name: " name
echo "Hello, $name"

(3)if:条件判断语句,用于根据条件执行不同的命令

if [ $num -gt 10 ]; then
    echo "Number is greater than 10"
else
    echo "Number is less than or equal to 10"
fi

(4)for:循环语句,用于重复执行一系列命令。

for i in 1 2 3 4 5; do
    echo "Welcome $i times"
done

for i in {1..10};do   #遍历1-10,并输出
        echo $i
done

(5)while:循环语句,只要条件为真就继续执行

while [ $num -lt 10 ]; do
    echo $num
    num=$((num+1))
done

 (6)case:多条件判断语句,用于根据不同的条件执行不同的命令。

case $choice in
    1) echo "Option 1 selected";;
    2) echo "Option 2 selected";;
    *) echo "Invalid option";;
esac

 1.2shell脚本的写入和运行

1.写入的4种方式

shell脚本的写入方式
1.cat > test.sh
"hello world"
"hello boys"   #键入写入test.sh的内容,写完后按CTRL+D退出

2.echo "hello world" > test.sh  #写入test.sh并覆盖原有内容
3.echo "hello world" >> test.sh  #写入test.sh的末尾,不覆盖原有内容
4.vi test.sh     #使用vi编辑

#在文件指定行写入内容

sed -i "5i 写入内容" test.sh    #在第5行写入内容

注意执行前先给shell脚本可执行的权限:chmod +x test.sh(最开始创建的test.sh只是一个文本文件,必须给权限后才可运行)

#3种方式均可运行sh脚本
bash test.sh  
sh test.sh
./test.sh      #注意!!! 不可忽略./

2.输入/输出重定向

linux标准输入输出:

  • 0:键盘(/dev/stdin)——标准输入
  • 1:显示器(/dev/stdout)——标准输出
  • 2:显示器(/dev/stderr)——标准错误输出

输入重定向:不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。(使用 “<”符来修改标准输入设备)

echo "today is $(date)"    #输出Today id 2024年 05月 20日 星期一 14:26:59 CST
echo " today is $(date)" >> test.sh   #将输出内容写到test.sh文件的末尾

常用的转义字符:\n:换行        \t:制表符        \\反斜杠        \" 双引号       \'单引号

3.shell变量

注意事项!!!

1.等号两侧不能有空格,如:name="john"

2.环境变量建议大写

3.单引号(全引用):单引号括起的内容不管是常量还是变量都不会发生替换(引用的即输出的)

4.双引号(部分引用):变量发生替换,常量保持不变

5.无引号:字符串不能包含空白字符(space/tab),一般连续的字符串、数字、路径等可以不加引号

字符串常量使用单引号括起来,如果字符串含有变量命令等使用双引号括起来,不建议不加引号

命令执行:必须用反引号(`命令`)或$(命令):如:echo `ls` 或者echo $(ls)  ,才会输出ls命令执行结果(也即显示当前目录下的文件)

#单引号使用
var=double
echo '$var'     #输出:$var

#双引号使用
var=double
echo "$var"    #输出:double

#无引号使用
str1="test1",str2='test2',str3=teststring
echo $str1,$str2,$str3     #输出test1,str2=test2,str3=teststring

3.1变量分类

  1. 自定义变量:户自由定义变量名和变量的值
  2. 环境变量:保存和系统操作环境相关的数据
  3. .位置参数变量:向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
  4. 预定义变量:Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
#变量的调用
[root@root scripts]# name="shen zhen"
[root@root scripts]# echo $name
shen zhen

3.2变量查看

set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。

set [+-abCdefhHklmnpPtuvx]

unset name    #删除变量
env            #查看系统默认环境变量
 3.2.1位置参数变量

$n: n为数字,$0表示当前 Shell 脚本程序的名称,$1-9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 ,如{10}

$*:代表命令行中所有的参数,$把所有的参数看成一个整体

$@:代表命令行中所有的参数,不过$@把每个参数区分对待

$#:代表命令行中所有参数的个数

#! /bin/bash

echo "shell脚本本身的名字:$0"     #输出:shell脚本本身的名字:test.sh
echo "传给shell的第一个参数:$1"    #输出:传给shell的第一个参数:1
echo "传给shell的第二个参数:$2"    #输出:传给shell的第二个参数:2
3.2.2预定义变量

$?:  最后一次执行命令的返回状态。为0则命令执行成功,反之,不成功

$$:  当前进程的进程号PID

$!:  后台运行的最后一个进程的进程号

1.cat:用于查看和连接文件

'>'用于创建文件, '>>'用于追加内容(不覆盖原内容)

cat file  #查看文件
cat > test.py # 将标准输入到重定向文件,覆盖该文件内容
cat >> test.py #将标准输入写到文件末尾

cat file1 file2 > file3  #将file1和file2的内容合并写到file3(若file3有内容,则会被覆盖)
cat file1 file2 > file3  #将file1和file2的内容合并写到file3(若file3有内容,则会写到文件后)

cat file1 file2    #显示多个文件内容
cat filename | command  #将cat命令的输出作为另一个命令的输入
cat -n textfile1 > textfile2  # textfile1 的文档内容加上行号后输入 textfile2 
cat filename | tail -n 10  #显示file的最后10行

nl filename      #显示行号(包括空白行)
cat -n filename  #显示行号(包括空白行)   
cat -b filename  #显示行号(不包括空白行)
cat -e filename  #在每行结尾处添加符号"$"

cat /dev/null > /etc/tsst.txt  #清空 /etc/test.txt 文档内容
cat /dev/fd0 > OUTFILE    #制作镜像文件,如要制作 软盘的镜像文件OUTFILE,将软盘放好后,使用此命令
cat /IMG_FILE > /dev/fd0   #相反的,如果想把 image file镜像文件 写到软盘,使用此命令

2.more 文件内容或输出查看工具

more /root/test.py     #查看文件内容,同cat,并可分页显示文件内容
    参数如下:
    +num   从第num行开始显示;
    -num   只显示前num行;
    +/pattern   从pattern 前两行开始显示;
    -c   从顶部清屏然后显示;
    -d   提示Press space to continue, 'q' to quit.(按空格键继续,按q键退出),禁用响铃功能;
    -l    忽略Ctrl+l (换页)字符;
    -p    通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;
    -s    把连续的多个空行显示为一行;
    -u    把文件内容中的下划线去掉退出more的动作指令是q

more -dc test.sh     #清屏查看当前文件
ls -l /etc |more     #通过管道与more结合(当要显示的内容很多时,cat直接打印了所有内容,可能会看不到前面部分的内容,就可利用more分屏显示)

#查看大文件时,有以下常用快捷键:
    Enter:    向下1行(默认,可修改多行)
    Ctrl+f:   向下滚动1屏;
    空格键:    向下滚动1屏;
    Ctrl+b:   返回上一屏;
    = :       输出当前行的行号;
    :f:       输出文件名和当前行的行号;
    v:        调用vi编辑器;
    ! :       调用Shell,并执行命令;
    q :       退出more当我们查看某一文件时,想调用vi来编辑它,不要忘记了v动作指令,这是比较方便的;

3.less查看文件

less test.sh
常用参数

-c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
-f 强制打开文件,二进制文件显示时,不提示警告;
-i 搜索时忽略大小写;除非搜索串中包含大写字母;
-I 搜索时忽略大小写,除非搜索串中包含小写字母;
-m 显示读取文件的百分比;
-M 显法读取文件的百分比、行号及总行数;
-N 在每行前输出行号;
-p pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
-s 把连续多个空白行作为一个空白行显示;
-Q 在终端下不响铃;


man less     #查看less 使用

head -n 5  /var/log/msg  #显示msg文件的前5行

tail -n 5  /var/log/msg  #显示msg文件的最后5行
tail -f    /var/log/msg  #实时显示msg文件

二、shell运算符

在shell中,常见的有算数运算符、关系运算符、逻辑运算符、字符串运算符、文件测试运算符等

2.1算术运算符

# bash不支持简单的数学运算,但是可以通过其他命令来实现,利用awk 、expr(常用)完成表达式的计算

条件表达式:

= |赋值| a=$b 将把变量 b 的值赋给 a。
==| 相等。用于比较两个数字,相同则返回 true(真)。| [ $a == $b ] 返回 false(假)。
!= |不相等。用于比较两个数字,不相同则返回 true。 |[ $a != $b ] 返回 true。

注意:条件表达式要放在方括号之间,并且要有空格,如: [ $a == $b ]、[ $a != $b ]

a=30
b=10
echo "$a"
echo "$b"
echo "a + b = " `expr $a + $b`  #输出40
echo "a - b = " `expr $a - $b`  #输出20
echo "a * b = " `expr $a \* $b` #输出300
echo "a / b = " `expr $a / $b`  #输出3
echo "a % b = " `expr $a % b`   #输出
--------------------------------------------
if [$a == $b]
then
    ech和b相等"
else
    echo "a和b不等"     #输出a和b不等
fi

2.2关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

四、vim的使用

        Vim是vi的增强版,继承了vi的基本使用,新增了语法高亮、多窗口编辑、撤销与重做 。

        目前大部分版本都以 vim 取代 vi 的功能了,如果你使用 vi 后,却看到画面的右下角有显示目前光标所在的行列号码,表明 vi 已经被 vim 所取代

  1. 进入编辑模式:键入按键aori(AORI),进入insert模式,即可编辑文档
  2. 命令行模式:  键入按键:/?(任意一个)即可移动光标到文档最下方
  3. 常用指令:’:wq’(保存并退出)、’:q’(不保存退出)、’:q!’(不保存强制退出)
  • 移动光标到文件顶部:gg
  • 移动光标到文件底部:G
  • 移动光标到指定行数:ngg(如:移动到第5行:5gg)
  • 撤销上一步操作:进入命令行模式(esc+ u)u 或 :undo
  • 恢复撤销的操作:Ctrl + r 或 :redo
  • 选择文本:Ctrl+v(进入可视块模式,移动光标选择文本)
  • 选择文本进行复制:Ctrl+v +y +p(选择+复制+粘贴)
  • 复制整行:进入命令行模式(esc+ yy)  -----(复制5行:5yy)
  • 粘贴:进入命令行模式(esc)+ p
  • 删除:进入命令行模式(esc)+ dd/D
  • 指定行编辑:vim filename  +n
  • 控制光标移动方向:hjkl分别对应:左下上右
  • 光标每次移动一个单词:w(word):向后移动一个单词;b(back):向前移动一个单词

    屏幕移动:Ctrl+b:向上翻页 ; Ctrl+f:向下翻页; H / M / L:屏幕顶部/中间底部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Data Elasticsearch简介

一、Spring Data Elasticsearch简介 1 SpringData ElasticSearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。 Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通…

【巨实用】Git客户端基本操作

本文主要分享Git的一些基本常规操作&#xff0c;手把手教你如何配置~ ● 一个文件夹中初始化Git git init ● 为了方便以后提交代码需要对git进行配置&#xff08;第一次使用或者需求变更的时候&#xff09;&#xff0c;告诉git未来是谁在提交代码 git config --global user.na…

有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗

近期&#xff0c;有多名开发者反馈&#xff0c;收到来自腾讯科技 (深圳) 有限公司委托北京的一家**诚律师事务所卞&#xff0c;写给AppStore的投诉邮件。 邮件内容主要说的是&#xff0c;腾讯注册了【水印相机】这四个字的商标&#xff0c;所以你们这些在AppStore上的app&…

导出文件,能够导出但是文件打不开

背景&#xff1a; 在项目开发中&#xff0c;对于列表的查询&#xff0c;而后会有导出功能&#xff0c;这里导出的是一个excell表格。实现了两种&#xff0c;1.导出的文件&#xff0c;命名是前端传输过去的&#xff1b;2.导出的文件&#xff0c;命名是根据后端返回的文件名获取的…

Redis 源码分析-内部数据结构 dict

Redis 源码分析-内部数据结构 dict 在上一篇 Redis 数据库源码分析 提到了 Redis 其实用了全局的 hash 表来存储所有的键值对&#xff0c;即下方图示的 dict&#xff0c;dict 中有两个数组&#xff0c;其中 ht[1] 只在 rehash 时候才真正用到&#xff0c;平时都是指向 null&am…

010:传统计算机视觉之大津算法初探

本文为合集收录&#xff0c;欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 上一节学习了利用 Canny 算法来完成一个图片的边缘检测&#xff0c;从而可以区分出图像的边缘。 本节再了解一个计算机视觉中更常见的应用&#xff0c;那就是把图片的前景和…

使用Cilium/eBPF实现大规模云原生网络和安全

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 目录 抽象 1 Trip.com 云基础设施 1.1 分层架构 1.2 更多细节 2 纤毛在 Trip.com 2.1 推出时间表 2.2 自定义 2.3 优化和调整 2.3.1 解耦安装 2.3.2 避免重试/重启风暴 2.3.3 稳定性优先 2…

怎么把word试题转成excel?

在教育行业、学校管理以及在线学习平台中&#xff0c;试题库的高效管理是一项核心任务。许多教育工作者和系统开发人员常常面临将 Word 中的试题批量导入 Excel 的需求。本文将详细介绍如何快速将试题从 Word 转换为 Excel&#xff0c;帮助您轻松解决繁琐的数据整理问题&#x…

css盒子水平垂直居中

目录 1采用flex弹性布局&#xff1a; 2子绝父相margin&#xff1a;负值&#xff1a; 3.子绝父相margin:auto&#xff1a; 4子绝父相transform&#xff1a; 5通过伪元素 6table布局 7grid弹性布局 文字 水平垂直居中链接&#xff1a;文字水平垂直居中-CSDN博客 以下为盒子…

Spring 项目 基于 Tomcat容器进行部署

文章目录 一、前置知识二、项目部署1. 将写好的 Spring 项目先打包成 war 包2. 查看项目工件&#xff08;Artifact&#xff09;是否存在3. 配置 Tomcat3.1 添加一个本地 Tomcat 容器3.2 将项目部署到 Tomcat 4. 运行项目 尽管市场上许多新项目都已经转向 Spring Boot&#xff0…

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)

【Web安全】SQL 注入攻击技巧详解&#xff1a;UNION 注入&#xff08;UNION SQL Injection&#xff09; 引言 UNION注入是一种利用SQL的UNION操作符进行注入攻击的技术。攻击者通过合并两个或多个SELECT语句的结果集&#xff0c;可以获取数据库中未授权的数据。这种注入技术要…

docker安装rabbit后访问报错最佳的几种解决方案

错误通常是由于RabbitMQ的安全配置导致的&#xff0c;RabbitMQ默认配置允许的用户仅能通过localhost访问。这通常出现在RabbitMQ的guest用户上&#xff0c;guest用户默认只能从localhost登录&#xff0c;而无法从其他IP地址进行远程访问。 解决方法&#xff1a; 1. **创建一个…

计科高可用服务器架构实训(防火墙、双机热备,VRRP、MSTP、DHCP、OSPF)

一、项目介绍 需求分析&#xff1a; &#xff08;1&#xff09;总部和分部要求网络拓扑简单&#xff0c;方便维护&#xff0c;网络有扩展和冗余性&#xff1b; &#xff08;2&#xff09;总部分财务部&#xff0c;人事部&#xff0c;工程部&#xff0c;技术部&#xff0c;提供…

spark汇总

目录 描述运行模式1. Windows模式代码示例 2. Local模式3. Standalone模式 RDD描述特性RDD创建代码示例&#xff08;并行化创建&#xff09;代码示例&#xff08;读取外部数据&#xff09;代码示例&#xff08;读取目录下的所有文件&#xff09; 算子DAGSparkSQLSparkStreaming…

Linux - 什么是线程和线程的操作

线程概念 什么是线程: 线程&#xff08;Thread&#xff09;是操作系统能够进行运算调度的最小单位. 它被包含在进程之中, 是进程中的实际运作单位. 一个进程可以包含多个线程. 进程 : 线程 1 : n (n > 1). 进程是系统分配资源的基本单位. 线程则是系统调度的基本单位. 在…

基于YOLOv8的高空无人机小目标检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型

目标检测系统【环境搭建过程】&#xff08;GPU版本&#xff09;-CSDN博客 摘要 本文提出了一种基于YOLOv8算法的高空无人机小目标检测系统&#xff0c;利用VisDrone数据集中的7765张图片&#xff08;6903张训练集&#xff0c;862张验证集&#xff09;进行模型训练&#xff0c;…

apollo内置eureka dashboard授权登录

要确保访问Eureka Server时要求输入账户和密码&#xff0c;需要确保以下几点&#xff1a; 确保 eurekaSecurityEnabled 配置为 true&#xff1a;这个配置项控制是否启用Eureka的安全认证。如果它被设置为 false&#xff0c;即使配置了用户名和密码&#xff0c;也不会启用安全认…

一学就废|Python基础碎片,文件读写

文件处理是指通过编程接口对文件执行诸如创建、打开、读取、写入和关闭等操作的过程。它涉及管理程序与存储设备上的文件系统之间的数据流&#xff0c;确保数据得到安全高效的处理。 Python 中的文件模式 打开文件时&#xff0c;我们必须指定我们想要的模式&#xff0c;该模式…

【计算机网络】lab7 TCP协议

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…

Ollama VS LocalAI:本地大语言模型的深度对比与选择指南

随着人工智能技术的快速发展&#xff0c;大语言模型逐渐成为多个行业的重要工具。从生成内容到智能问答&#xff0c;大模型展现了强大的应用潜力。然而&#xff0c;云端模型的隐私性、使用成本和网络依赖等问题也促使更多用户关注本地化解决方案。Ollama 和 LocalAI 是近年来备…