首页 > 系统相关 >Shell 避免无限递归

Shell 避免无限递归

时间:2024-02-02 22:55:07浏览次数:22  
标签:脚本 Shell 递归 别名 无限 sh ls foo

在编写 Shell 脚本时,有时会产生我们不期望的递归。

比如说,我曾经写过一个脚本,名为 foo.sh

foo.sh 的内容如下:

function foo {
  # TODO
}

foo

然后我在 .zshrc 里设置了别名:

alias foo="source ~/foo.sh"

现在,当我在终端运行 foo 时,就会得到如下错误:

/Users/undefined443/foo.sh:source:5: too many open files: /Users/undefined443/foo.sh

现在,每当你键入 ls 时,实际上你运行的是 ls --color=auto。如果要临时回避这个别名,使用原始的 ls 命令(没有颜色),你可以在 ls 命令前加上 \,像这样:

\ls

这样做会忽略别名,直接运行原始 ls 命令。这在脚本编写中尤其有用,因为它允许脚本忽略用户定义的别名,确保脚本的行为是一致和预期的。


标签:脚本,Shell,递归,别名,无限,sh,ls,foo
From: https://www.cnblogs.com/Undefined443/p/18004163

相关文章

  • Shell 脚本实现上下键选择文本
    #!/bin/bash#函数:显示选择列表并返回用户选择的选项#参数:# $1-选项数组#返回值:# 用户选择的选项#定义选择函数select_option(){ choices=("$@") #将选项数组声明为全局变量 selected=0   #初始化选择索引 whiletrue;do  clear......
  • Linux基础47 Ansible之ad-hoc, 命令模块(command, shell, script), 软件管理模块(yum,
    Ansible之ad-hoc一、什么是ad-hoc1.什么是ad-hocad-hoc简而言之就是“临时命令”,执行完即结束,并不会保存2.ad-hoc使用场景可以用作查看远程机器的进程,或者磁盘,或者拷贝文件3.ad-hoc命令使用[root@m01~]#ansibleweb01-mshell-a'free-m'web01|CHANGED|rc=......
  • Shell中set -e和if语句的组合使用
    shell脚本开头加上set-e命令后,在运行过程中如果出现返回值为非零,整个脚本就可以立刻退出。假如脚本中有if判断,很可能if条件的返回值是不为0的。一开始我是把hadoopfs-test-d$hdfs_folder单独写一行的,由于folder不存在,所以脚本直接退出。所以遇到这种情况,需要把有可能是结......
  • 跟着微软官方学习Powershell-在 PowerShell 中发现命令
    1、说明PowerShell预安装了大量命令。若要有效地使用PowerShell命令,您需要了解它们的工作原理。例如,你需要知道命令所采用的参数,以及可以使用多种方法来调用命令。它还有助于了解命令返回的内容、返回的类型以及命令的属性。通过了解这些事项,你可以配置如何显示帮助。此外,还......
  • mozhe靶场: WebShell文件上传漏洞分析溯源(第5题) 题解(使用哥斯拉)
    哥斯拉由java编写,可以在linux上使用.个人认为比冰蝎好用,用冰蝎连不上这个靶场,但是哥斯拉可以连的上.github搜哥斯拉就能下载首先登陆后台,弱口令adminadmin点击添加文章,尝试上传一句话木马(一句话木马可以点击哥斯拉的生成)webshell.asp<%evalrequest("pass")%>......
  • phpMyAdmin 未授权Getshell
    前言做渗透测试的时候偶然发现,phpmyadmin少见的打法,以下就用靶场进行演示了。0x01漏洞发现环境搭建使用metasploitable2,可在网上搜索下载,搭建很简单这里不多说了。发现phpmyadmin,如果这个时候无法登陆,且也没有前台的漏洞,可以继续在这个phpmyadmin目录下做文章。发现setup......
  • shell语句快捷用法
    bat去掉文件名字中的(1)@echooffsetlocalenabledelayedexpansionset"search=(1)"set"replace="for%%fin(*)do(set"filename=%%~nf"set"extension=%%~xf"set"newfilename=!filename:%search%=%replace%!"ren&......
  • shell编程
    1.在/tmp下新建一个名为missing的文件夹。mkdir/tmp/missing2.用man查看程序touch的使用手册mantouch3.用touch在missing文件夹中新建一个叫semester的文件touch用于修改文件的时间属性,如果没有目标文件,则会新建一个目标文件touch/tmp/missing/semest......
  • linux 之 shell脚本实现SFTP下载、上传文件、执行sftp命令
    需求需求方通过sftp不定时的上传一批用户(SBXDS_ACC_M_任务ID_yyyymmddHHMMSS.csv),需要我们从这些用户中找出满足条件的用户。然后把这些结果用户通过文件的形式上传到ftp。环境说明ip1能连接hive库环境,不能连接sftp。ip2不能连接hive库环境,能连接sftp。ip1和ip2是共享盘,能同时......
  • linux中9个常用的shell脚本
    注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四个空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。5)有两个命令能帮助我调试脚本:set-e遇到执行非0时退出脚本,set......