Вы можете создать его, используя новую функцию 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
}
Расширяйте его по своему усмотрению - каждое =~
соответствует регулярному выражению , поэтому не стесняйтесь использовать любые регулярные выражения, которые вы хотите.
Обратите внимание, что это конфликтует с command-not-found
пакетами Debian и Ubuntu, поэтому вам может потребоваться удалить или иным образом ограничить этот пакет для получения надежных результатов. (Просто убедитесь, что эта функция определена в вашем * ~/.bashrc
или ~/.bash_profile
файле после общесистемных /etc/bash*
файлов, и она должна просто работать.)