首页 > 解决方案 > 如何编辑这些自定义终端命令来解决我的问题?

问题描述

我试图在终端中编译fortran1.f95文件~/夹中的文件,因此我运行了gfortran -x f95 -o fortran1 ~/fortran1.f95. 我做了几个终端alias,这里有:

alias e1f95c="gfortran -x f95 -o fortran1 ~/fortran1.f95"

alias e1f95cr="gfortran -x f95 -o fortran1 ~/fortran1.f95; open ~/fortran1"

alias e1f95e="open ~/fortran1.f95"

alias e1f95r="open ~/fortran1"

我写e1来代表'exercise1',f95代表编译语言规范并c, r, cr, e代表'编译,运行,编译和运行,编辑'。

这是我的问题:我不知道如何为何时添加更多文件创建一个灵活的别名,例如,当我创建一个名为fortran2我想运行e2f95cr并获得相同结果的新文件时。

我尝试了什么:发现有一个名为的文件.bashrc,可以将其编码为我想做的事情,但是我找不到它,并且打开它后不知道如何继续。

非常感谢您的阅读。

标签: bashterminalalias

解决方案


.bashrc文件位于您的主目录中。试试ls -la ~——如果你没有看到它,那是因为它不存在,所以创建一个就可以了。

在某些情况下,bash 不会处理该文件,因此您可以将此行放在您的~/.bash_profileor中~/.profile(无论哪个存在)

[[ -r ~/.bashrc ]] && . ~/.bashrc

现在,关于您的别名问题:我可能会做这样的事情

# a function
do_f95() {
    local action=$1 exercise=$2
    if [[ -z $exercise ]]; then
        echo "error: specify the exercise number" >&2
        echo "usage: $FUNCNAME action exerciseNum" >&2
        return 1
    fi
    local filebase="$HOME/fortran${exercise}"
    local compile=false run=false
    case "$action" in 
        e) open "$filebase.f95"; return ;;
        c) compile=true ;;
        r) run=true ;;
        cr) compile=true; run=true ;;
        *) echo "error: unknown action" >&2; return 1 ;;
    esac
    $compile && gfortran -x f95 -o "$filebase" "$filebase.f95"
    $run && open "$filebase"
}

# some aliases
alias fc='do_f95 c'
alias fcr='do_f95 cr'
alias fr='do_f95 r'
alias fe='do_f95 e'

然后你会像这样使用它:

fe 1         # to edit ~/fortran1.f95
fc 1         # to compile it
fr 1         # to run it

您可以指定任何练习编号,它将使用适当的~/fortranN.f95文件


推荐阅读