BASH-别名调用另一个别名或别名调用自身或递归别名

BASH-别名调用另一个别名或别名调用自身或递归别名,bash,recursion,alias,Bash,Recursion,Alias,在这里找到另一篇文章,我们可以在另一个别名中引用别名 Ex:以下两个别名都有效 [gigauser@somenode01_new ~]$ alias cls="clear; ll" [gigauser@somenode01_new ~]$ alias ccls='cd; cls' [gigauser@somenode01_new ~]$ cls total 12 -rw-r-----. 1 gigauser gigauser 879 Mar 30 22:24 aks1.tx

在这里找到另一篇文章,我们可以在另一个别名中引用别名

Ex:以下两个别名都有效

[gigauser@somenode01_new ~]$ alias cls="clear; ll"
[gigauser@somenode01_new ~]$ alias ccls='cd; cls'

[gigauser@somenode01_new ~]$ cls
total 12
-rw-r-----. 1 gigauser gigauser 879 Mar 30 22:24 aks1.txt
-rw-r-----. 1 gigauser gigauser 879 Mar 30 22:25 aks2.txt
-rwxr-x---. 1 gigauser gigauser 854 May  5 21:19 new-artifactory-license.json
drwxr-x---. 6 gigauser gigauser  64 Mar 30 21:21 tokens
[gigauser@somenode01_new ~]$ cd /tmp
[gigauser@somenode01_new tmp]$ pwd
/tmp

[gigauser@somenode01_new tmp]$ ccls
total 12
-rw-r-----. 1 gigauser gigauser 879 Mar 30 22:24 aks1.txt
-rw-r-----. 1 gigauser gigauser 879 Mar 30 22:25 aks2.txt
-rwxr-x---. 1 gigauser gigauser 854 May  5 21:19 new-artifactory-license.json
drwxr-x---. 6 gigauser gigauser  64 Mar 30 21:21 tokens
[gigauser@somenode01_new ~]$ pwd
/home/gigauser
类似地,我为自己创建了两个别名

第一个命令等待我,直到我按下^C(以打破循环),第二个命令只使用几个docker命令并输出预期的输出

alias dkm='while true; do echo -e "\n-- `date`: Waiting for the $USER to come back."; sleep 900; done'

alias dstuff='sudo docker ps -a; echo; sudo docker image ls;echo; sudo docker volume ls; echo;'
运行时,上面的别名为我提供:

-bash: syntax error near unexpected token `;'
dkm

-- Wed May 12 20:34:42 UTC 2021: Waiting for the gigauser to come back.
dstuff

CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                           NAMES
48c872e58b9b        artifactory-pro:latest   "/opt/giga/artifactor…"   2 days ago          Up 39 minutes       0.0.0.0:8081->8081/tcp                                          artifactory
cccb871ba620        postgresql:latest        "/usr/local/pgsql/po…"   2 days ago          Up 39 minutes       5432/tcp                                                        artifactorydb

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
postgresql          latest              b1bdb78f4bcc        12 months ago       300MB
artifactory-pro     latest              3e51966e3d56        12 months ago       800MB

DRIVER              VOLUME NAME
local               artifactory-data
local               artifactorydb-data
但是,当我想使用上面的2个别名创建另一个别名
dsc
时,为什么下面的别名不起作用呢

alias dsc='dstuff; dkm'
运行dsc可以让我:

-bash: syntax error near unexpected token `;'
另外,我想知道,别名是否可以指代它自己,也就是说,这可能吗

alias dsc='dstuff; dkm; dsc'

基本上,我想知道的是,一个别名是否可以调用自己并向我显示
dstuff
输出,然后等待一段时间(aka
dkm
dont kill me命令),然后它再次调用自己。是的,我可以
while:;做一个化名;也完成了
,但很好奇这是否可能(别名调用自身,即递归别名)。

dstuff别名以
结尾
,因此当展开
dsc
时,您会得到
echo;;dkm
在末尾。Shell语法不允许两个
在一行中


摆脱
位于
dstuff
别名的末尾。

dstuff
别名以
结尾
,因此当展开
dsc
时,您会得到
echo;;dkm
在末尾。Shell语法不允许两个
在一行中


摆脱
dstuff
别名的末尾。

如果你想做一些复杂的事情,不要使用别名;它们只是有太多的限制和令人困惑的特性,无法很好地扩展。对于更大的作业,使用函数,甚至整个脚本。任何时候当别名出现问题时,请尝试改用函数(但先用
unalias
删除别名,这样就不会有冲突)。
alias dkm='while true啊,使用函数。如果你想做一些复杂的事情,不要使用别名;它们只是有太多的限制和令人困惑的特性,无法很好地扩展。对于更大的作业,使用函数,甚至整个脚本。任何时候当别名出现问题时,请尝试改用函数(但先用
unalias
删除别名,这样就不会有冲突)。
alias dkm='while true啊,使用函数。