带有检查目录的 Linux 别名

标签 linux bash

我如何做别名来检查我是否在目录“python27”中,如果不在目录中,它将转到该目录,运行一些脚本并返回主目录?当我在“python27”目录中时,它应该只运行脚本并返回主目录。我的意思是这样的:

alias p="if [ pwd != /home/myname ] then cd python27 && python $1 && cd ~ else python $1 && cd ~ fi"

最佳答案

不要使用别名,而是使用函数。

你不需要检查你是否在python27目录中,只需cd在那里,运行脚本,然后cd回家。

像这样,只需要最少的检查:

p() {
    if [[ -z $1 ]]; then
        echo >&2 "need an argument"
        return 1
    fi
    if ! cd /full/path/to/python27; then
        echo >&2 "can't cd to python27"
        return 1
    fi
    python "$1"
    cd ~
}

如果您需要传递更多参数(例如,选项),您也可以使用 python "$@" 而不是 python "$1"

关于带有检查目录的 Linux 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481061/

相关文章:

java - keytool 在 Ubuntu : incorrect magic 中不工作

linux - 如何在 Bash 脚本中打印文件的大小(以千字节为单位)?

Linux:更新基于前缀的文件夹中已有的数百万张图像的目录结构

linux - 并行进程: appending outputs to an array in a zsh script

regex - 正则表达式模式中 bash 变量包含的转义字符

bash - 如果 telnet 输出包含某些执行操作

bash - 并发 curl POST 请求

bash - 给定 IP 地址和网络掩码,如何使用 bash 计算子网范围?

linux - Windows 的文件系统如何保持文件和文件夹之间的关联

c++ - 奇怪的 malloc 行为不允许在 64 位进程上分配超过 2GB 的内存