我已经读过这篇关于在哪里放置别名的帖子。
现在,假设我的自定义命令非常复杂(在输入中接受参数,由几个相继运行的命令组成,为了清楚起见,我想将其保留为多行,涉及引号、双引号等),所以我想将它定义为一个函数,例如
sshdev_system_loop () {
while true; do
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Trying to log into ststem $2 as user $1 ."
timeout 10 ssh $1@$2
done
}
Run Code Online (Sandbox Code Playgroud)
我应该把它放在.bash_aliases或 的末尾.bashrc或 中.profile吗?
一方面,我不想把它放进去,.bash_aliases因为它会“破坏”列表
alias alias_name='command/list of commands'
Run Code Online (Sandbox Code Playgroud)
另一方面,.bashrc它看起来像是操作系统管理的文件,所以我不想向其中添加内容。
那么在 Ubuntu 中将功能添加为自定义命令的最佳实践是什么?
是否可以在自定义快捷方式中使用别名?
例如,假设我有别名
alias cal="google-chrome --new-window calendar.google.com"
Run Code Online (Sandbox Code Playgroud)
我可以创建一个自定义快捷键结合Ctrl+ Alt+C来cal?
我试过了,但似乎不起作用。
我有一大堆别名命令 .bash_aliases
最通用的例子是
alias apt-update="sudo apt-get update"
alias apt-upgrade="sudo apt-get dist-upgrade"
Run Code Online (Sandbox Code Playgroud)
但我也有
alias apt-install="sudo apt-get install "
alias a2avail="/etc/apache2/sites-available"
Run Code Online (Sandbox Code Playgroud)
前两个没问题,后两个我想做更强大的;
特别是apt-install我希望自动完成工作。
对于 a2avail,我希望能够输入类似的内容sudo cp a2avail/default a2avail/new并将其作为sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/new
这两种情况中的任何一种都可能吗?
我想要这样的东西:
"vivek@grishma:~/xxx/yyy/zzz/src$" 显示为
"vivek@grishma:datasource$" 我会以某种方式预定义“数据源”作为上面长路径的别名。
使用别名命令作为
" alias datasource='~/xxx/yyy/zzz/src'"
对导航很有用,但它不会在提示中取出长路径。
这可能吗?
PS- 我不希望它只是“vivek@grishma:”,因为每次我应该运行 pwd 以了解我的工作目录时。
我在 12.04 机器上使用了一堆别名。
例子:
alias pssh="tsocks ssh"
alias pscp="tsocks scp"
alias prdp="tsocks xfreerdp ..........SOMETHING ...."
Run Code Online (Sandbox Code Playgroud)
这些别名是对常规 linux 命令(scp、ssh 等)的修改,因此我希望这些别名具有与其原始对应项相同的自动完成规则。我不想编写自己的规则,因为常规命令的规则非常好。
在 12.04 中,以下内容完美运行:
complete -F _ssh pssh
complete -F _scp pscp
complete -F _ssh prdp
Run Code Online (Sandbox Code Playgroud)
这在 14.04 中不起作用。如果我尝试自动完成,我会收到以下错误:
bash: completion: function `_ssh' not found
Run Code Online (Sandbox Code Playgroud)
如果我在尝试 pssh 之前在 ssh 上自动完成,一切正常。据我所知,这是因为自动完成规则在使用之前没有加载。在加载 ssh 的自动完成规则之前,我的规则无效并导致错误。
如何解决此问题,如何正确地将别名挂接到为常规 linux 命令定义的自动完成规则中?
例如,假设我在 my 下定义了一个别名.bash_aliases,
alias gotoheaven="xdg-open /path/to/heaven"
Run Code Online (Sandbox Code Playgroud)
现在我想在桌面上为它创建一个可点击的图标。[我知道make link要创建文件夹快捷方式,但我所要求的只是一个示例,以便我可以扩展它以创建任何其他类型的快捷方式]。编辑:快捷方式绑定到别名。类似的东西open Terminal and run gotoheaven。这样我就不必将别名重新写入 Exec 条目。
我有别名
alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
Run Code Online (Sandbox Code Playgroud)
但我不太确定我做错了什么。
任何帮助将非常感激。
我正在尝试在键入时创建别名 moveit pdf
pdf在当前工作目录中调用的目录。pdf在工作目录及其所有子目录中搜索名称中包含的所有文件。pdf.我知道这pdf会返回不是pdfs 的其他文件。我基本上是在尝试创建一个自动排序脚本。
我有文件叫:
alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
Run Code Online (Sandbox Code Playgroud)
我想将这些文件分类到名为pdf、txt和 的文件夹中rtf,所有这些都在一个脚本中,或者现在至少一次一个。
我想在自定义端口上运行服务(例如 8080 上的 jenkins),并且我更喜欢通过浏览器使用我记得的名称来访问它,例如,http://localhost:jenkins这将是http://localhost:8080
编辑:
我的.profile主目录中的文件中有以下行:
alias flux='redshift -O 2500'
但是每当我登录并输入时,flux我都会得到一个flux is not a recognized command.
然后我再次输入source .profile并输入flux,它完美地工作。
我在 Ubuntu 20.04
为什么aliasin my.profile不工作,除非我做 a source .profile?
编辑:我现在明白这.profile不是放置它的正确位置。
我最终.bashrc使用以下source命令从文件中加载别名:
for file in ~/.dotfiles/.{exports,aliases}; do
[ -r "$file" ] && source "$file"
done
unset file
Run Code Online (Sandbox Code Playgroud) watch命令不适用于别名命令。
没有别名:
\n\xe2\x9e\x9c scrcpy git:(master) git -P branch\n* master\n\xe2\x9e\x9c scrcpy git:(master) watch git branch\nRun Code Online (Sandbox Code Playgroud)\n\n有别名
\n\xe2\x9e\x9c scrcpy git:(master) which gb\ngb: aliased to git branch\n\xe2\x9e\x9c scrcpy git:(master) watch gb\nRun Code Online (Sandbox Code Playgroud)\n\n