BASH-别名调用另一个别名或别名调用自身或递归别名
在这里找到另一篇文章,我们可以在另一个别名中引用别名 Ex:以下两个别名都有效强>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
[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
输出,然后等待一段时间(akadkm
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代码>啊,使用函数。