Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – bash中的后缀别名大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

后缀别名是我虑切换到ZSH但我想坚持使用bash的唯一原因.那么在bash中可能有类似后缀别名的东西吗? 对于那些不知道后缀别名是什么的人,在ZSH中有以下内容 $alias -s cpp=vi $filename.cpp 将以filename.cpp作为第一个参数运行vi. 请注意,像xdg-open或gnome-open这样的东西是不够的.我希望bash在输入文件名时执行命令. 完成对我来说
后缀别名是我虑切换到ZSH但我想坚持使用bash的唯一原因.那么在bash中可能有类似后缀别名的东西吗?

对于那些不知道后缀别名是什么的人,在ZSH中有以下内容

$alias -s cpp=vi
$filename.cpp

将以filename.cpp作为第一个参数运行vi.

请注意,像xdg-open或gnome-open这样的东西是不够的.我希望bash在输入文件名时执行命令.

完成对我来说非常重要.因此,如果输入文件名的开头,那么当按下TAB键时,如果完成文件名的其余部分将会很好.

解决方法

您可以使用新的 command_not_found_handle()功能构建一个.获得zsh后缀别名的完整功能需要比我这里的简单示例更多的工作;但我的简单例子可能足以满足您的需求:

$command_not_found_handle() { if [[ $1 =~ .*.cpp ]]; then vi $1 ; elif [[ $1 =~ .*.java ]]; then cat $1 ; fi ; }
$splice.cpp  # started vi on splice.cpp
$Year.java
import java.util.ScAnner;

class Year {
    public static void main(String[] args) {
        ScAnner yearenter = new ScAnner(system.in); 
        System.out.println("Enter year ");
        int year = yearenter.nexTint();     
        System.out.print("Year " + year + " is ..");
        if (year % 400!=0 || year % 4 != 0 && year % 100==0)
            System.out.println(" not a leapyear"); 
        else
            System.out.println(" a leapyear"); 

    }    
} 
$

这里的功能扩展到足够清晰:

command_not_found_handle()
{
    if [[ $1 =~ .*.cpp ]]
    then
        vi "$1"
    elif [[ $1 =~ .*.java ]]
    then
        cat "$1"
    fi
}

根据您的需要扩展它 – 每个=~ is a regular expression match,所以随意使用您想要的任何正则表达式.

请注意,这与命令未找到的Debian和Ubuntu软件包冲突,因此您可能需要卸载或以其他方式取消限制此软件包以获得可靠的结果. (只需确保在包含系统范围的/ etc / bash *文件之后,在您自己的〜/ .bashrc或〜/ .bash_profile文件中定义此函数,它应该正常工作.)

大佬总结

以上是大佬教程为你收集整理的linux – bash中的后缀别名全部内容,希望文章能够帮你解决linux – bash中的后缀别名所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。