CLI 脚本有效。别名脚本损坏。纠正措施是什么?

CLI 脚本有效。别名脚本损坏。纠正措施是什么?

此 CLI(命令行界面)脚本有效。
此脚本包含 688 个字符(含空格)。
此脚本显示:目录、文件、
当前目录中的总数以及
递归目录(沿文件/目录树向下)。

此脚本在 Ubuntu 20.04.3 上运行良好

clear ; ls -1v -w9 -plxhSs --format=single-column --group-directories-first  ; cmd1=` ls -qp | grep -c / ` ; cmd2=`  ls -qp | grep -vc / ` ; cmd3=` ls -1 | wc -l ` ; tput setaf 4 ; pwd | tr '\n' '\000' ; tput sgr0 ; echo "/" ; tput sgr0 ; printf "%9d%s" $cmd1 " dirs" $cmd2 " reg.files" $cmd3 " files current" | tr '\n' ' ' ; tput setaf 13 ; echo "    Ctrl-c Cancel" ; sleep 1 ; cmd4=` find . -type d | wc -l  ` ; cmd5=` find . -type f | wc -l ` ; cmd6=`  find . | wc -l  ` ; tput setaf 13 ; printf "%9d%s" $cmd4 " dirs" $cmd5 " reg.files" $cmd6 " files reclusive" ; echo " " ; tput setaf 13 ; pwd | tr '\n' '\000' ; tput sgr0 ; echo "/" | tr '\n' ' ' ; tput setaf 13 ; echo "+ recursive"

问题是:

  1. 当将上述脚本移动到别名时,它会在终端会话中中断。
  2. 上述脚本在移至 ~/.bashrc 时会中断

向 688 个字符的脚本中添加了 9 个字符,别名 a="
向 688 个字符的脚本中添加了 2 个字符,末尾处为 "。

11 个错误之一
bash: 别名: 目录 6: 未找到

仅供参考
为什么上面的错误是 6?
测试目录中有 6 个 reg.files。

alias a="clear ; ls -1v -w9 -plxhSs --format=single-column --group-directories-first  ; cmd1=` ls -qp | grep -c / ` ; cmd2=`  ls -qp | grep -vc / ` ; cmd3=` ls -1 | wc -l ` ; tput setaf 4 ; pwd | tr '\n' '\000' ; tput sgr0 ; echo "/" ; tput sgr0 ; printf "%9d%s" $cmd1 " dirs" $cmd2 " reg.files" $cmd3 " files current" | tr '\n' ' ' ; tput setaf 13 ; echo "    Ctrl-c Cancel" ; sleep 1 ; cmd4=` find . -type d | wc -l  ` ; cmd5=` find . -type f | wc -l ` ; cmd6=`  find . | wc -l  ` ; tput setaf 13 ; printf "%9d%s" $cmd4 " dirs" $cmd5 " reg.files" $cmd6 " files reclusive" ; echo " " ; tput setaf 13 ; pwd | tr '\n' '\000' ; tput sgr0 ; echo "/" | tr '\n' ' ' ; tput setaf 13 ; echo "+ recursive" "

问题:
使上述
CLI 脚本作为别名工作的纠正措施是什么?

--

答案1

同意 Kamil 的观点:此代码包含单引号和双引号。如果您试图将其强制转换为别名,您将会经历引号地狱。使用一个函数,您可以以合理、可读的方式格式化命令:

a() {
    local cmd1 cmd2 cmd3 cmd4 cmd5 cmd6
    clear 
    ls -1v -w9 -plxhSs --format=single-column --group-directories-first  
    cmd1=$( ls -qp | grep -c / ) 
    cmd2=$(  ls -qp | grep -vc / ) 
    cmd3=$( ls -1 | wc -l ) 
    tput setaf 4 
    pwd | tr '\n' '\000' 
    tput sgr0 
    echo "/" 
    tput sgr0 
    printf "%9d%s" $cmd1 " dirs" $cmd2 " reg.files" $cmd3 " files current" | tr '\n' ' ' 
    tput setaf 13 
    echo "    Ctrl-c Cancel" 
    sleep 1 
    cmd4=$( find . -type d | wc -l  ) 
    cmd5=$( find . -type f | wc -l ) 
    cmd6=$(  find . | wc -l  ) 
    tput setaf 13 
    printf "%9d%s" $cmd4 " dirs" $cmd5 " reg.files" $cmd6 " files reclusive" 
    echo " " 
    tput setaf 13 
    pwd | tr '\n' '\000' 
    tput sgr0 
    echo "/" | tr '\n' ' ' 
    tput setaf 13 
    echo "+ recursive"
}

相关内容