BASH - 别名调用另一个别名或别名调用自身或递归别名
BASH - alias calling another alias OR alias calling itself OR a recursive alias
在这里找到另一个post,我们可以在另一个别名中引用一个别名。
例如:以下两个别名都有效!
[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
类似地,我为自己创建了 2 个别名。
第一个,等我按 ^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;'
上面的别名当运行给我时:
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
输出,然后等待一段时间(又名 dkm
不要杀了我命令)然后它调用再次自己。是的,我也可以 while :; do an_alias; done
但很好奇这(别名调用自身,即 递归别名 )是否可行。
dstuff
别名以 ;
结尾,因此当 dsc
展开时,您会在末尾得到 echo;; dkm
。 Shell 语法不允许连续出现两个 ;
。
去掉 dstuff
别名末尾的 ;
。
在这里找到另一个post,我们可以在另一个别名中引用一个别名。
例如:以下两个别名都有效!
[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
类似地,我为自己创建了 2 个别名。
第一个,等我按 ^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;'
上面的别名当运行给我时:
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
输出,然后等待一段时间(又名 dkm
不要杀了我命令)然后它调用再次自己。是的,我也可以 while :; do an_alias; done
但很好奇这(别名调用自身,即 递归别名 )是否可行。
dstuff
别名以 ;
结尾,因此当 dsc
展开时,您会在末尾得到 echo;; dkm
。 Shell 语法不允许连续出现两个 ;
。
去掉 dstuff
别名末尾的 ;
。