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

一、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 ]; thenecho "Number is greater than 10"
elseecho "Number is less than or equal to 10"
fi

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

for i in 1 2 3 4 5; doecho "Welcome $i times"
donefor i in {1..10};do   #遍历1-10,并输出echo $i
done

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

while [ $num -lt 10 ]; doecho $numnum=$((num+1))
done

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

case $choice in1) 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/bashecho "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的动作指令是qmore -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]
thenech和b相等"
elseecho "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.rhkb.cn/news/247.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】:删除回文子数组【困难】

class Solution { public:// 思考:能否用滚动数组进行优化int minimumMoves(vector<int>& arr) {// 定义状态dp[i][j]为i-j的最小步数int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把这 1 次理解为一种 最小操作单…

极大似然估计笔记

一、原理 我们拿到样本数据需要进行有参估计时&#xff0c;需要假设样本的服从某一分布&#xff0c;因此通过给定某种样本的分布&#xff0c;利用样本来拟合分布参数的过程就是极大似然法。给定一个概率分布 D&#xff0c;假定概率密度函数为 f &#xff0c;以及一个分布参数 θ…

计算机网络(二)——物理层和数据链路层

一、物理层 1.作用 实现相信计算机节点之间比特流的透明传输&#xff0c;尽可能屏蔽具体传输介质和物理设备的差异。 2.数据传输单位 比特。 3.相关通信概念 ①信源和信宿&#xff1a;即信号的发送方和接收方。 ②数据&#xff1a;即信息的实体&#xff0c;比如图像、视频等&am…

《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知&#xff0c;乃至可以使用感知结果直接构建鸟瞰图&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 则依赖离线地图。 高精地…

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…

unity 播放 序列帧图片 动画

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、方法一&#xff1a;代码控制播放序列帧1、设置图片属性2、创建Image组件3、简单的代码控制4、挂载代码并赋值 二、方法二&#xff1a;直接使用1.Image上添加…

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏&#xff0c;打开VBA开发工具录制宏,相当于excel自动写代码&#xff08;两个表格内容完全一致才可以&#xff09; 查看宏代码保持含有宏程序的文件xlsm后缀&#xff08;注意很容易有病毒&#xff09;宏文件安全设置 使…

深度学习与计算机视觉 (博士)

文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结&#xff1a;不同…

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1Tzr9Y3EQ7/ 《安富莱嵌入式周报》第348期&#xff1a;开源低功…

Linux通过ISCSI连接StarWind共享存储

文章目录 StarWind安装配置StarWind ISCSI添加StarWind Server添加Target 添加Device存储盘Linux通过ISCSI连接StarWind共享存储Linux客户端安装ISCSI搜索服务端ISCSI Target连接服务端ISCSI共享存储Linux客户端查看共享存储 StarWind安装 配置StarWind ISCSI 添加StarWind Se…

unity学习12:地图相关的一些基础2, 增加layer种草种树

目录 参考学习 1 地图设置 1.1 上次制作的地图&#xff0c;稍微加点地形完善下. 1.2 调整下camera 1.3 摄像机camera的移动速度 1.4 地图属性&#xff0c;terrain settings 1.5 但是&#xff0c;地图看起来像沙漠一样&#xff0c;很单调 2 paint terrain / paint textu…

Uniapp Android 本地离线打包(详细流程)

一、简介 App 离线 SDK 暂时不支持 Kotlin&#xff0c;未来不清楚。 uniapp 提供了 云打包 与 本地打包 两种方案&#xff0c;云打包 需要排队且还有次数限制&#xff0c;本地打包 则就没有这些限制&#xff0c;而且会 本地打包 对开发 原生插件 有很大的帮助。 细节&#x…

JavaEE之线程池

前面我们了解了多个任务可以通过创建多个线程去处理&#xff0c;达到节约时间的效果&#xff0c;但是每一次的线程创建和销毁也是会消耗计算机资源的&#xff0c;那么我们是否可以将线程进阶一下&#xff0c;让消耗计算机的资源尽可能缩小呢&#xff1f;线程池可以达到此效果&a…

【MySQL数据库】基础总结

目录 前言 一、概述 二、 SQL 1. SQL通用语法 2. SQL分类 3. DDL 3.1 数据库操作 3.2 表操作 4. DML 5. DQL 5.1 基础查询 5.2 条件查询 5.3 聚合函数 5.4 分组查询 5.5 排序查询 5.6 分页查询 6. DCL 6.1 管理用户 6.2 权限控制 三、数据类型 1. 数值类…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新&#xff0c;就想着更新看看&#xff08;能否冲掉问题&#xff09;4、更新没成功&#xff0c;自动重启电脑5、风险文件&#xff08;好家伙命名还挺规范&#xff0c;一看名字就知道出问题了&#xff09;6、开机有一些注册表…

请求方式(基于注解实现)

1.编写web.xml文件配置启动信息 <!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app><display-name>Archetype Created Web Application</di…

golang单元测试

单元测试 类型前缀签名用途测试函数Testfunc TestXxx(t *testing.T)功能测试、验证逻辑正确性基准函数Benchmarkfunc BenchmarkXxx(b *testing.B)性能测试、效率评估示例函数Examplefunc ExampleXxx()用法展示、生成文档 testing框架 文件名以_test.go结尾&#xff0c;放在与…

【2024年华为OD机试】 (A卷,100分)- 总最快检测效率(Java JS PythonC/C++)

一、问题描述 题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为 N 人/小时。由于外界变化&#xff0c;采样员的效率会以 M 人/小时为粒度发生变化&#xff0c;M 为采样效率浮动粒度&#xf…

【AI日记】25.01.11 Weights Biases | AI 笔记 notion

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales笔记&#xff1a;我的 AI 笔记主要记在两个地方 有道云笔记&#xff1a;数学公式和符号比较多的笔记notion&#xff1a;没什么数学公式的…

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…