标签: alias

我应该将函数放在 .bashrc、.bash_aliases 或 .profile 中吗

我已经读过这篇关于在哪里放置别名的帖子。

现在,假设我的自定义命令非常复杂(在输入中接受参数,由几个相继运行的命令组成,为了清楚起见,我想将其保留为多行,涉及引号、双引号等),所以我想将它定义为一个函数,例如

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 中将功能添加为自定义命令的最佳实践是什么?

command-line bash alias functions bashrc

7
推荐指数
2
解决办法
973
查看次数

我可以在键盘快捷键中使用 Bash 别名吗?

是否可以在自定义快捷方式中使用别名?

例如,假设我有别名

alias cal="google-chrome --new-window calendar.google.com"
Run Code Online (Sandbox Code Playgroud)

我可以创建一个自定义快捷键结合Ctrl+ Alt+Ccal

我试过了,但似乎不起作用。

bash shortcut-keys alias

6
推荐指数
2
解决办法
4453
查看次数

.bash_aliases 命令自动完成?

我有一大堆别名命令 .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

这两种情况中的任何一种都可能吗?

command-line bash alias auto-completion

6
推荐指数
1
解决办法
2438
查看次数

有没有办法通过别名缩短(而不是删除)终端中显示的路径

我想要这样的东西:

"vivek@grishma:~/xxx/yyy/zzz/src$" 显示为

"vivek@grishma:datasource$" 我会以某种方式预定义“数据源”作为上面长路径的别名。

使用别名命令作为

" alias datasource='~/xxx/yyy/zzz/src'"

对导航很有用,但它不会在提示中取出长路径。

这可能吗?

PS- 我不希望它只是“vivek@grishma:”,因为每次我应该运行 pwd 以了解我的工作目录时。

command-line bash gnome-terminal alias

6
推荐指数
1
解决办法
516
查看次数

如何在自己的别名中镜像自动完成功能(在 14.04 中)

我在 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 命令定义的自动完成规则中?

bash alias auto-completion 14.04

6
推荐指数
1
解决办法
808
查看次数

为别名创建可点击的桌面快捷方式

例如,假设我在 my 下定义了一个别名.bash_aliases

alias gotoheaven="xdg-open /path/to/heaven"
Run Code Online (Sandbox Code Playgroud)

现在我想在桌面上为它创建一个可点击的图标。[我知道make link要创建文件夹快捷方式,但我所要求的只是一个示例,以便我可以扩展它以创建任何其他类型的快捷方式]。编辑:快捷方式绑定到别名。类似的东西open Terminal and run gotoheaven。这样我就不必将别名重新写入 Exec 条目。

unity alias

6
推荐指数
2
解决办法
4273
查看次数

将一个变量添加到别名的多个部分?alias nd='mkdir $1' 有效但之后无法添加任何内容,为什么?

我有别名

alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
Run Code Online (Sandbox Code Playgroud)

但我不太确定我做错了什么。
任何帮助将非常感激。

我正在尝试在键入时创建别名 moveit pdf

  1. 创建一个pdf在当前工作目录中调用的目录。
  2. pdf在工作目录及其所有子目录中搜索名称中包含的所有文件。
  3. 将那些找到的文件移动到名为pdf.

我知道这pdf会返回不是pdfs 的其他文件。我基本上是在尝试创建一个自动排序脚本。

我有文件叫:

alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
Run Code Online (Sandbox Code Playgroud)

我想将这些文件分类到名为pdftxt和 的文件夹中rtf,所有这些都在一个脚本中,或者现在至少一次一个。

command-line bash alias find

6
推荐指数
1
解决办法
171
查看次数

是否可以为端口号起别名?

我想在自定义端口上运行服务(例如 8080 上的 jenkins),并且我更喜欢通过浏览器使用我记得的名称来访问它,例如,http://localhost:jenkins这将是http://localhost:8080

  1. 这样的事可能吗?
  2. 如果是这样,它只是一个 HTTP 东西,还是所有网络协议都会知道这个别名?
  3. 另外,如果 (1) 为真,则其他操作系统(centos、windows 等)是否支持此功能

编辑:

  1. 从我输入地址的那一刻到问题得到解决,有哪些活动部分?我猜测浏览器解析器,因此可能有一个浏览器支持我的请求。之后,解析后的 url 可能会传递到操作系统进程,该操作系统进程反过来也可以实现我的请求并接受 str 而不是 int...这些部分中的任何一个都可以以这样的方式进行配置以满足我的需求吗?

networking alias ip

6
推荐指数
3
解决办法
4543
查看次数

在调用 `source .profile` 之前无法识别 `.profile` 中的 `alias` 命令

我的.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)

alias .profile

5
推荐指数
1
解决办法
837
查看次数

“watch”命令不适用于别名

watch命令不适用于别名命令。

\n

没有别名:

\n
\xe2\x9e\x9c  scrcpy git:(master) git -P branch\n* master\n\xe2\x9e\x9c  scrcpy git:(master) watch git branch\n
Run 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\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

alias watch-command 20.04

5
推荐指数
1
解决办法
2648
查看次数