Sua função precisa ser
ldr () { ls -dlrta "$@"; }
use o formulário citado "$@"
para usar todos os argumentos, com espaço em branco protegido.
Observe o comportamento distinto do seguinte entre o shell e uma função definida no shell:
Primeiro: tente diretamente no shell:
0:23:34/shared $ls -dlrta ?pectral*
-rw-r-----@ 1 steve staff 4430060 Oct 27 10:38 SpectralClustering.pdf
-rw-r-----@ 1 steve staff 840539 Oct 27 14:54 spectralEigenValues.pdf
-rw-r-----@ 1 steve staff 839485 Oct 27 14:56 Spectral EigenMatrices.pdf
-rw-r-----@ 1 steve staff 1928395 Oct 29 23:10 spectralClusteringlecture.pdf
drwxr-xr-x 45 steve staff 1530 Nov 6 10:37 spectral.new
-rw-r--r-- 1 steve staff 5452 Nov 13 01:26 SpectralClusteringSuite.scala
-rw-r--r-- 1 steve staff 7935 Nov 13 01:26 SpectralClustering.scala
drwxr-xr-x 40 steve staff 1360 Dec 21 08:32 spectral.old
drwxr-xr-x 45 steve staff 1530 Dec 23 09:06 spectral
Agora vamos definir uma função contendo esse comando:
$type ldr
ldr is a function
ldr ()
{
ls -dlrta
}
Vamos tentar essa função:
0:23:06/shared $ldr ?pectral*
ls: EigenMatrices.pdf: No such file or directory
drwxr-xr-x 45 steve staff 1530 Dec 23 09:06 Spectral
Alguma dica sobre como reconciliar / forçar comportamento idêntico na função quanto ao beavior (desejado) de diretamente na linha de comando?
Sua função precisa ser
ldr () { ls -dlrta "$@"; }
use o formulário citado "$@"
para usar todos os argumentos, com espaço em branco protegido.