我们如何创建别名或快捷命令来在 Ubuntu 中运行程序,我必须启动 intelliJ 和 eclipse 的多个会话,每次重新启动计算机时,我都必须进入每个目录并从那里启动 eclipse。我想要一个可以从任何目录的终端运行的单个命令来启动这些程序。
答案1
我认为最简单的方法是启动一个为您执行此操作的脚本。
像这样的东西(第一行是必要的,它不是注释):
#!/bin/bash
echo "Running 1st app..."
$HOME/path_to_1st/app & # this runs an app from user's home directory
# the ampersand makes the app `fork`
# it means it'll start in the background
# and the script will continue to execute
echo "Running eclipse..."
cd directory/project1/
eclipse -param1 -param2 path/to/something &
echo "Running 2nd app..."
cd directory/project2
other_app_executable &
该$HOME
变量代表用户的主目录。请注意,运行脚本的是用户,而不一定是您。将上面的内容另存为startmyapps.sh
并更改权限以使其可执行:
chmod u+x startmyapps.sh
办法u+x
:
u
-你塞尔+
-添加允许x
-eX可执行的
要从任何工作目录在终端中运行startmyapps.sh
,您可以创建一个指向其绝对路径的别名(/home/username/path/to/startmyapps.sh
整个事情;在别名上查看其他响应),或者需要将其放入$PATH
.最常见的方法是将其保存在您的$HOME/bin/
目录中,然后在您的目录末尾添加此行$HOME/.bashrc
(或者.zshrc
其他什么,取决于您使用的 shell,AFAIKbash
在 Ubuntu 中是默认的):
export PATH=$PATH:$HOME/bin
意义:
export
- 使变量可供该终端的子项使用PATH
- 处理名为的变量PATH
=
- 为其分配一个新值,即$PATH
- 旧值:
- 一个分隔符$HOME/bin
- 以及您新创建的bin
目录
附加功能
作为旁注,我想提到它在虚拟环境中工作的常见方式作为分离项目和冻结依赖关系的一种方式,例如python
创建项目的方式是调用python -m venv new_env_name
.通常,此环境带有类似的扩展workon
,可以为您激活给定的环境,无论您在目录树中的任何位置(例如:您不必在项目的目录中,只需调用workon new_env_name
)。所有这些扩展所做的都是调用启动脚本new_env_name/bin/activate
- 因此您可以在此处添加必要的调用来启动应用程序。
答案2
要添加自定义键盘板快捷方式,请打开“系统设置”并选择键盘->快捷方式选项卡->自定义快捷键。
打开任何应用程序(例如 Eclipse),然后签入系统监视器应用程序以查找从终端启动该应用程序的命令名称。例如,启动 Eclipse 的命令是
eclipse
。点击+快捷方式窗格左下角的按钮可添加新的键盘快捷方式。
一个新的小自定义快捷方式窗口将会打开。在它说的地方之后姓名:类型
Eclipse
。在它说的地方之后命令:键入eclipse
小写 e。单击“应用”按钮应用新的键盘快捷键。还可以自定义该命令
eclipse
以使用自定义命令行参数打开 eclipse。单击您添加到自定义快捷方式列表中的 Eclipse 快捷方式残疾人,这将使新加速器...出现在 Eclipse 而不是的地方之后残疾人。按任意键盘快捷键组合将其分配给 Eclipse。
要撤消现有键盘快捷键,请单击快捷键列表中的现有键盘快捷键,然后使用Backspace键撤消它。
答案3
您可以在您的中使用别名命令.bashrc
来简化命令(示例):
alias toclip='xclip -sel clip'
它使用 xclip 将输出通过管道传输到剪贴板。因此,为了更接近您的问题,这可能是:
alias startup='eclipse /path/to/project'
或者,如果一行不足以启动您需要的所有内容,您可以在.bashrc
(示例)中定义一个函数:
function extract {
if [ -z "$1" ]; then
# display usage if no parameters given
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
else
if [ -f $1 ] ; then
# NAME=${1%.*}
# mkdir $NAME && cd $NAME
case $1 in
*.tar.bz2) tar xvjf ../$1 ;;
*.tar.gz) tar xvzf ../$1 ;;
*.tar.xz) tar xvJf ../$1 ;;
*.lzma) unlzma ../$1 ;;
*.bz2) bunzip2 ../$1 ;;
*.rar) unrar x -ad ../$1 ;;
*.gz) gunzip ../$1 ;;
*.tar) tar xvf ../$1 ;;
*.tbz2) tar xvjf ../$1 ;;
*.tgz) tar xvzf ../$1 ;;
*.zip) unzip ../$1 ;;
*.Z) uncompress ../$1 ;;
*.7z) 7z x ../$1 ;;
*.xz) unxz ../$1 ;;
*.exe) cabextract ../$1 ;;
*) echo "extract: '$1' - unknown archive method" ;;
esac
else
echo "$1 - file does not exist"
fi
fi
}
例如,它定义了一个函数 extract,它接受任何类型的文件名并尝试提取它。因此,为了使其更符合您想要的内容,请举一个小例子:
function startup {
eclipse /path/to/a/AFile
eclipse /path/to/a/BFile
eclipse /path/to/a/CFile
eclipse /path/to/a/DFile
}
这种方法的好处是您不必担心路径变量等,只需在启动终端时即可以这种方式获取它们。上面的只是示例,您可以将任何您想要的内容放入您的别名或函数中,只要它符合 bash 即可。
答案4
您可以使用此命令创建快捷方式(短链接),所以简单:
ln -s /path/to/file /path/to/symlink
祝你好运!