linux基础 - SHELL1

news2024/9/25 23:22:52

目录

一、基础

1.test测试语句

2.逻辑运算

3.类型判断

4.数值判断

5.字符串比较

6.计算表达式

二、shell数组

1.单行定义

2.多行定义

3.单元素定义

4.查看元素

5.基于内容找索引

6.增删改

三、shell高级

1.重定向

2.其他符号

3.信息符号

4.if语句

5.else

6.case语句

7.for语句

8.while语句

10.函数

三、核心命令

1.grep命令

2.正则数组

3.一些常用的命令

结语


一、基础

1.test测试语句

echo $?为0代表上个语句执行成功

echo $?为1代表上个语句执行失败

test 1 = 1
echo $?

test 1 = 2
echo $?

2.逻辑运算

&& 与

[ 1 = 1 ] && [ 2 = 2 ] 
[ 1 = 2 ] && [ 2 = 2 ] 

|| 或

[ 1 = 1 ] || [ 2 = 2 ] 
echo $?

[ 1 = 2 ] || [ 2 = 2 ] 
echo $?

3.类型判断

判断输入的是否是个文件

如果1.txt存在就查看

[ -f 1.txt ] && cat 1.txt

如果o目录存在就进入并输出里面存在的文件

[ -d o ] && cd o && ls -l

判断输入内容是否可以执行

[root@localhost o]# [ -x 1.txt ] && echo "can excute"
[root@localhost o]# chmod 777 1.txt
[root@localhost o]# [ -x 1.txt ] && echo "can excute"

4.数值判断

[ 2 -eq 1 ]
echo $?
[ 2 -eq 2 ]
echo $?
[ 2 -lt 2 ]
echo $?

[ 2 -gt 2 ]
echo $?

[ 2 -ne 1 ]
echo $?

5.字符串比较

[root@localhost o]# str2="asdqewqr"
[root@localhost o]# str1="asdsad"
[root@localhost o]# [ str1 == str2 ]
[root@localhost o]# echo $?

[root@localhost o]# [ str1 != str2 ]
[root@localhost o]# echo $?

6.计算表达式

[root@localhost o]# echo $((1+3))


[root@localhost o]# echo $((1+3))

[root@localhost o]# a=$((1+3))
[root@localhost o]# echo a
[root@localhost o]# echo $a

[root@localhost o]# echo $((a*3))

[root@localhost o]# echo let a

[root@localhost o]# echo let a*2

[root@localhost o]# let a = a*2
[root@localhost o]# let a=a*2
[root@localhost o]# echo $a


二、shell数组

1.单行定义

[root@localhost o]# arr=(1 2 3 4 5 6) 
[root@localhost o]# echo $arr

2.多行定义

[root@localhost o]# arr2=( 
> 1 
> 2 
> 3 
> 4 
> 5 
> 6 
> 7 
> ) 
[root@localhost o]# echo arr2

3.单元素定义

arr2[2]=10
arr2[3]=10
arr2[4]=10

4.查看元素

[root@localhost o]# echo ${arr2[2]}
[root@localhost o]# echo ${arr2[3]}
[root@localhost o]# echo ${arr2[4]}
[root@localhost o]# echo ${arr1[4]}
[root@localhost o]# echo ${arr1[1]} 
[root@localhost o]# echo ${arr[1]}

5.基于内容找索引

当不知道内容是什么的时候,可以查看所有下标

[root@localhost o]# echo ${!arr[*]}
[root@localhost o]# echo ${!arr[@]}
[root@localhost o]# echo ${!arr2[@]}

不加!可以看内容

6.增删改

获取元素

root@ou-virtual-machine:~# arr=(10000 200000 30000 40000 500000 600000) 
root@ou-virtual-machine:~# echo ${arr[0]:0:2}

root@ou-virtual-machine:~# echo ${arr[3]:0:2}

root@ou-virtual-machine:~# echo ${arr[3]:0:4}

更改元素

root@ou-virtual-machine:~# echo ${arr[3]}

root@ou-virtual-machine:~# arr[3]=900000
root@ou-virtual-machine:~# echo ${arr[3]}

root@ou-virtual-machine:~# echo ${arr[3]}

root@ou-virtual-machine:~# arr[3]=900000
root@ou-virtual-machine:~# echo ${arr[3]}

删除数组

unset删除单个数组元素

root@ou-virtual-machine:~# echo ${arr[*]}

root@ou-virtual-machine:~# unset arr[1]
root@ou-virtual-machine:~# echo ${arr[*]}

删除整个数组

unset 数组名

三、shell高级

1.重定向

>覆盖

>>追加

管道符

netstat -ano | grep 22

2.其他符号

&就是将一个命令从前台转到后台执行

3.信息符号

1 表示正确输出的信息

2 表示错误输出的信息

2>&1表示所有输出的信息

root@ou-virtual-machine:~# cat a.txt 1>> zhengque.txt
root@ou-virtual-machine:~# cat zhengque.txt 

root@ou-virtual-machine:~# asdasfad 2>> errfile.txt
root@ou-virtual-machine:~# cat errfile.txt 

写一个shell文件里面有正确的shell语句和错误的

root@ou-virtual-machine:~# bash shell.exe 1>zhengque.txt 2>cuowu.txt
root@ou-virtual-machine:~# cat zhengque.txt 
asdsad
root@ou-virtual-machine:~# cat cuowu.txt 
shell.exe: line 3: asdlkalsf: command not found

/dev/zero #输出无数个0

/dev/null #垃圾桶文件

所有信息进入垃圾桶文件,所有进程后台运行

cat cuowu.txt >> /dev/null 2>&1 &

4.if语句

#!/bin/bash
if [ $1 == 'nan' ]
then
    echo "your sex is man"
fi

5.else

#!/bin/bash
if [ $1 == 'nan' ]
then
    echo "your sex is man"
else
    echo "error!"
fi
~      

6.case语句

#!/bin/bash
case "$1" in
        "start")
                echo "server running start..."
                ;;
        "stop") 
                echo "server stop..."
                ;;
        "restart")
                echo "server restarting..."
                ;;
        *)      
                echo "*******************"
                ;;
esac            
               

7.for语句

遍历文件

#!/bin/bash
for i in $(ls /root)
do
        echo "${i}"
done

遍历数组

#!/bin/bash
arr=(1 2 3 11 421 1424124123 13213 1231 2312 412 11111)
for i in ${arr[*]}
do
        echo "${i}"
done

8.while语句

#!/bin/bash
arr=(1 2 3 11 421 1424124123 13213 1231 2312 412 11111)
a=0
while [ ${a} -lt 11 ]
do
        echo "${arr[${a}]}"
        a=$((${a} + 1))
done

9.break语句

#!/bin/bash
arr=(1 2 3 11 421 1424124123 13213 1231 2312 412 11111)
a=0
while [ ${a} -lt 11 ]
do
        echo "${arr[${a}]}"
        read num
        if [ $num == 'a' ]
        then
                break
        fi
        a=$((${a} + 1))
done

break n 跳出第n个循环(由内向外)

#!/bin/bash
for var1 in {1..5}
do
        for var2 in {10..14}
        do
                if [ $var1 -eq 2 ] && [ $var2 -eq 10 ]
                then
                        break 2
                else
                        echo "$var1 $var2"
                fi
        done
done

还有两个简单的我就不演示了

10.函数

#!/bin/bash

#define a function
hanshu(){
        echo "hello i am a func!"
}

#use function
hanshu

简单传参

#!/bin/bash

#define a function
hanshu(){
        n=$1
        echo "hello i am a func! ${n}"
}

#use function
hanshu aaa
hanshu bbb
hanshu ou


三、核心命令

1.grep命令

-c 匹配内容 文件名 #计算匹配内容在文件里面有多少次出现

root@ou-virtual-machine:~# grep -c aaaa a.txt 

root@ou-virtual-machine:~# cat a.txt 

2.正则数组

{数组开头..数组结尾..步长}

echo {1..10..2}
echo {001..100..2}
echo {01..100..2}

3.一些常用的命令

alias

unalias

history查看命令输入记录

!行号

使用history里面对应的命令

!!上一次输入的命令

快捷键


结语

最近可能比较多的会更新linux和网络相关的博客,希望大家多支持我,多多关注、点赞。

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

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

相关文章

unity --- DoTween插件安装与使用

目录 一.简介 1.1 插件下载 1.2 官方文档 二.导入和设置 三.示例代码 1 循环动画:SetLoops(-1 , loopType ) 2. 动画循环次数:SetLoops( count ) 3. 动画事件监听与回调:OnStart \ OnComplete 4. 动画延迟回调:SetDelay …

Java8特性:函数式接口与Stream流

1、 函数式接口 &#xff08;1&#xff09;四大函数式接口 &#xff08;2&#xff09;代码01 //void accept(T t);消费型接口&#xff0c;有参数&#xff0c;无返回 Consumer<String> consumer t->{System.out.println(t); }; consumer.accept("a"); //…

DAY42:动态规划(二)斐波那契数列+爬楼梯+最小花费爬楼梯

文章目录 509.斐波那契数列思路&#xff1a;动规五步确定dp数组和数组下标含义递推公式DP数组初始化遍历顺序打印DP数组 完整版debug测试 空间复杂度优化版优化思路 70.爬楼梯思路DP数组的含义以及下标含义递推公式DP数组初始化遍历顺序打印DP数组 完整版debug测试 空间复杂度优…

10.24UEC++、事件

1. 类内部声明事件类型&#xff1a; 生成actor 绑定到事件上 实现&#xff1a; 移除&#xff1a;

使用docker安装redis并使用redis deskTop manager连接

使用docker安装redis 提前准备环境 linux、 docker环境 # 使用命令查看docker环境是否正常docker images(任何一个docker命令就可以&#xff0c;不一定必须这个) 下载redis镜像 # 使用命令下载镜像文件docker pull redis 确认镜像 # 使用命令查看镜像docker images使用redis d…

功能测试的测试流程是什么样的?

概述 本流程是描述软件功能自动化测试过程中的步骤、内容与方法&#xff0c;明确各阶段的职责、活动与产出物。 流程活动图 活动说明 测试计划&#xff08;可选&#xff09; 与以前的测试计划过程一致&#xff0c;只是在原来的测试计划中&#xff0c;添加对项目实施自动化测试…

Qt窗体全屏与复原,子窗体全屏与复原

QT QWidget窗体全屏时&#xff0c;全屏与最大化的区别时最大化有标题框全屏没有框&#xff0c;可以使用自带的函数&#xff1a; showFullScreen(); 复原时也有专门的函数&#xff1a; showNormal(); 如果我想在点击最大化按钮时&#xff0c;让窗体全屏。这个时候最好有线程…

学好工作汇报,你离升职加薪也就不远了

在职场中&#xff0c;工作汇报是展示你的价值和成果的重要环节。无论你是想要升职还是加薪&#xff0c;一个出色的工作汇报能够给你带来巨大的竞争优势。然而&#xff0c;许多人对于如何进行有效的工作汇报感到困惑。在本文中&#xff0c;我们将向您介绍一些关键技巧和策略&…

路径规划算法:基于骑手优化优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于骑手优化优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于骑手优化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Linux学习之vim在光标所在处写入内容,保存退出

vim insertTest使用vim打开一个叫做insertTest新文件。 输入命令之后&#xff0c;按下Enter&#xff08;回车键&#xff09;&#xff0c;就可以进入下边的操作页面。 按i在当前光标位置处&#xff0c;就可以插入内容了。 接下来写入内容跟记事本里边是差不多的。 按一下…

【Spring】Spring基础知识 Java开发必看

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前专攻C/C、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL、蓝桥杯&am…

vue拼接html中onclick的触发方式,模版字符串拼接点击事件在vue项目中不生效问题

模版字符串拼接点击事件在vue项目中不生效问题 下面的点击事件没有任何效果&#xff0c;但是如果换成onclick绑定事件则会提示没有该方法。主要原因是&#xff1a; 模版字符串中拼接的html片段中的方法调不到vue中this.methods里的东西&#xff0c;因为methods里的代码是编译…

物体识别(香蕉)

✨✨✨ 感谢优秀的你打开了小白的文章 “希望在看文章的你今天又进步了一点点&#xff0c;生活更加美好&#xff01;”&#x1f308;&#x1f308;&#x1f308; 目录 1.数据集下载 2.数据集导入 3.结果 1.数据集下载 包含所有图像和CSV标签文件的香蕉检测数据集可以直接从互…

day1-二分查找

二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解…

单片机基于stm32单片机的数字温度计设计_kaic

摘 要 古往今来,陶瓷在我们的生活中一直都是不可或缺的物品,而随着当今社会经济的快速发展,人们对于这些高档陶瓷产品的使用性能和产品质量上的要求也愈加严格。那么在陶瓷品的生产过程中,想要提高陶瓷品的品质和合格率,能够随时监测温度的温度计是必不可少的。 本课题的研究是…

什么是IP地址定位技术

IP地址定位是一种技术手段&#xff0c;可以通过获取设备的IP地址精确定位设备的地理位置。它在现代社会的许多方面都有广泛的应用&#xff0c;包括网络安全、广告投放市场调研等。 在互联网时代&#xff0c;人们越来越依赖于网络而IP地址作为网络连接的基石扮演着重要的角色。…

什么软件支持快速批量处理大量视频素材呢

在视频剪辑的过程中&#xff0c;有时候为了满足视频时长的需求&#xff0c;或者为了实现视频与音频的同步操作&#xff0c;我们可能需要对视频的播放速度进行调整。如果需要处理大量的视频文件&#xff0c;传统的手动一个个调整的方法就显得有点落后了&#xff0c;今天小编要与…

JDBC事务特性

1、 事务的四种特性&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;原子性是指事务是一个不可分割的执行单元或者叫工作单位&#xff0c;事务中的操作&#xff0c;要么都发生&#xff0c;要么都不发生。 一致性&#xff08;Consistency&am…

centos7.9 安装redis5.0.7记录

参考自己之前写的安装5.0.3 centos7安装redis5.0.3详细步骤_lanren312的博客-CSDN博客 一开始大意了&#xff0c;没有安装gcc&#xff0c;直接就make [rootlocalhost redis-5.0.7]# make cd src && make all make[1]: Entering directory /opt/redis-5.0.7/srcLINK re…

Docker 多架构镜像介绍和最佳实践

Docker 多架构镜像介绍和最佳实践> 更多云原生相关技术分享请关注公众号&#xff1a;CloudNativeOps &#xff1b; 添加微信 GoOps888&#xff0c;备注 ‘加群’ 可加入云原生技术交流群。 一、多架构镜像介绍 在 Docker 中&#xff0c;同一个 Docker 镜像可以在不同的平台…