Shell 基础总结

参考链接:Shell编程总结

/*Shell 基礎學習*/

http://c.biancheng.net/shell/

易忘記的記錄: 

特殊變量

---------------------------------------------------------------------------------------------------------
$0             |当前脚本的文件名。
$n(n≥1)|传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。
$#             |传递给脚本或函数的参数个数。
$*              |传递给脚本或函数的所有参数。
$@            |传递给脚本或函数的所有参数。
$?              |上个命令的退出状态,或函数的返回值
$$              |当前 Shell 进程 ID。
----------------------------------------------------------------------------------------------------------


$*·$@加上 "" 的區別
------------------------------------------------------------------------
"$*"            |会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
------------------------------------------------------------------------
"$@"          |仍然将每个参数都看作一份数据,彼此之间是独立的。
------------------------------------------------------------------------

刪除
unset

将命令的输出结果赋值给变量
---------------------------------
var_name=`command`   |
var_name=$(command) |
---------------------------------

數學計算
----------------------------
整數計算 (()) 或 led  |

小數計算 bc             |
----------------------------

 

test 或 []
------------------------------------------------------------------------
                            文件类型判断
------------------------------------------------------------------------
选 项            |               作 用
------------------------------------------------------------------------
-b filename    判断文件是否存在,并且是否为块设备文件。
-c filename    判断文件是否存在,并且是否为字符设备文件。
-d filename    判断文件是否存在,并且是否为目录文件。
-e filename    判断文件是否存在。
-f filename    判断文件是否存在,井且是否为普通文件。
-L filename    判断文件是否存在,并且是否为符号链接文件。
-p filename    判断文件是否存在,并且是否为管道文件。
-s filename    判断文件是否存在,并且是否为非空。
-S filename    判断该文件是否存在,并且是否为套接字文件。
------------------------------------------------------------------------
                           文件权限判断
------------------------------------------------------------------------
选 项           |               作 用
------------------------------------------------------------------------
-r filename    判断文件是否存在,并且是否拥有读权限。
-w filename    判断文件是否存在,并且是否拥有写权限。
-x filename    判断文件是否存在,并且是否拥有执行权限。
-u filename    判断文件是否存在,并且是否拥有 SUID 权限。
-g filename    判断文件是否存在,并且是否拥有 SGID 权限。
-k filename    判断该文件是否存在,并且是否拥有 SBIT 权限。
-----------------------------------------------------------------------
                            文件比较
-----------------------------------------------------------------------
选 项           |               作 用
------------------------------------------------------------------------
filename1 -nt filename2    | 判断 filename1 的修改时间是否比 filename2 的新。
------------------------------------------------------------------------
filename -ot filename2      | 判断 filename1 的修改时间是否比 filename2 的旧。
------------------------------------------------------------------------
filename1 -ef filename2    | 判断 filename1 是否和 filename2 的 inode 号一致,
                                         | 可以理解为两个文件是否为同一个文件。这个判断用于
                                         | 判断硬链接是很好的方法。
------------------------------------------------------------------------

                     数值比较相关选项列表:(test 只能用来比较整数)
------------------------------------------------------------------------
选 项                          作 用
------------------------------------------------------------------------
num1 -eq num2    判断 num1 是否和 num2 相等。
num1 -ne num2    判断 num1 是否和 num2 不相等。
num1 -gt num2    判断 num1 是否大于 num2 。
num1 -lt num2    判断 num1 是否小于 num2。
num1 -ge num2    判断 num1 是否大于等于 num2。
num1 -le num2    判断 num1 是否小于等于 num2。
------------------------------------------------------------------------

                    字符串判断相关选项列表
------------------------------------------------------------------------
选 项                        作 用
------------------------------------------------------------------------
-z str    判断字符串 str 是否为空。
-n str    判断宇符串 str 是否为非空。
------------------------------------------------------------------------
str1 = str2
str1 == str2    =和==是等价的,都用来判断 str1 是否和 str2 相等。
------------------------------------------------------------------------
str1 != str2    判断 str1 是否和 str2 不相等。
str1 \> str2    判断 str1 是否大于 str2。\>是>的转义字符,这样写是为了防止>被误认为成重定向运算符。
str1 \< str2    判断 str1 是否小于 str2。同样,\<也是转义字符。
------------------------------------------------------------------------

                    逻辑运算相关选项列表
----------------------------------------------------------------------------------
选 项                         作 用
----------------------------------------------------------------------------------
expression1 -a expression    逻辑与,表达式 expression1 和 expression2 都成立,最终的结果才是成立的。
expression1 -o expression2    逻辑或,表达式 expression1 和 expression2 有一个成立,最终的结果就成立。
!expression                    逻辑非,对 expression 进行取反。
----------------------------------------------------------------------------------

在 test 命令中使用变量时,强烈建议将变量用双引号""包围起来,这样能避免变量为空值时导致的很多奇葩问题。

对于整型数字的比较,建议大家使用 (())。

几乎完全兼容 test ,并且比 test 更加强大,比 test 更加灵活的是[[ ]];[[ ]]不是命令,而是 Shell 关键字。

[[ ]] 不需要注意某些细枝末节
1.不需要把变量名用双引号""包围起来,即使变量是空值,也不会出错。
2.不需要、也不能对 >、< 进行转义,转义后会出错。
3.[[ ]] 剔除了 test 命令的-o和-a选项,只能使用 || 和 &&。

建議大家使用 if 判断条件时,用 (()) 来处理整型数字,用 [[ ]] 来处理字符串或者文件。


                    重定向
------------------------------------------------------------------------------------------------------------------
   类 型                   符 号                 作 用
------------------------------------------------------------------------------------------------------------------
                           |命令 > 文件    以覆盖的方式,把命令的正确输出结果输出到指定的文件或设备中。
标准输出重定向  |--------------------------------------------------------------------------------------------------
                           |命令 >> 文件    以追加的方式,把命令的正确输出结果输出到指定的文件或设备中。
------------------------------------------------------------------------------------------------------------------
                                 |命令 2> 文件    以覆盖的方式,把命令的错误信息输出到指定的文件或设备中。
标准错误输出重定向 |    ------------------------------------------------------------------------------------------
                                 |命令 2>> 文件    以追加的方式,把命令的错误信息输出到指定的文件或设备中。
------------------------------------------------------------------------------------------------------------------
                                                  |命令 > 文件 2> &1    以覆盖的方式,把正确输出和错误信息同时保存到同一个文件中。
                                                  |----------------------------------------------------------------------------------
                                                  |命令 >> 文件 2> &1    以追加的方式,把正确输出和错误信息同时保存到同一个文件中。
                            |                     |----------------------------------------------------------------------------------
正确输出和错误信息同时保存    |命令 &> 文件    以覆盖的方式,把正确输出和错误信息同时保存到同一个文件中。
                                                  |----------------------------------------------------------------------------------
                                                  |命令 &>> 文件    以追加的方式,把正确输出和错误信息同时保存到同一个文件中。
                                                  | ----------------------------------------------------------------------------------
                                                  |命令 >> 文件1  2>> 文件2    把正确的输出追加到文件1中,把错误信息追加到文件2中。
-------------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值