Alias ​​nicht richtig zugewiesen

410
captainalright

Ich habe ein seltsames Problem mit einem Bash-Alias. Ich habe den folgenden Alias ​​in meiner .bashrc definiert:

alias rec='nano `ls slurm-* | sort -t. -k3n | tail -1`' 

Wenn ich jedoch den Alias recin der Shell mit erweitere, CTRL ALT Ebekomme ich:

nano Remember that all constraints must be readded! 

Wenn ich den Alias ​​ausführen, bekomme ich dasselbe:

nano Remember that all constraints must be readded! 

Wenn ich benutze which recbekomme ich die richtige Erweiterung:

alias rec='nano `ls slurm-* | sort -t. -k3n | tail -1`' /home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/nano-2.6.3-k2cwz7lwjd4zutb7r7cfo63apevyztuw/bin/nano /home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/coreutils-8.26-icpocuezd6r7ydd73ipkehkg345372eo/bin/sort /home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/coreutils-8.26-icpocuezd6r7ydd73ipkehkg345372eo/bin/tail 

Dies Remember that all constraints must be readded!ist die Ausgabe eines (angeblich) völlig unabhängigen Skripts, das ich geschrieben habe. Irgendeine Idee, was hier los ist?

1
Immer wenn Sie versuchen, etwas komplexes mit einem Alias ​​zu machen, und es funktioniert nicht, sollten Sie es stattdessen zu einer Funktion machen. Allerdings sollten Sie auch hier die Ausgabe von 'ls' parsen Eric Renouf vor 6 Jahren 0

1 Antwort auf die Frage

1
Kamil Maciorowski

Sie analysieren ls, Sie sollten das nicht tun . Ich denke, es könnte die Ursache Ihres Problems sein.

Wenn zum Beispiel einer Ihrer slurm-*Dateinamen wie folgt aussieht:

*\nRemember that all constraints must be readded! 

oder

*\nRemember that all constraints must be readded!\n* 

Wo \nist ein Newline, dann sorterhalten Sie mehr Zeilen als Sie erwarten. Dieser Dateiname alleine:

slurm-0.1.-5\nRemember that all constraints must be readded! 

wird machen, sorterhalten zwei Zeilen und dann in der Ausgabe wird die Remember …Zeile hinter der slurm-…Zeile sein. Ich weiß nicht, wie Ihre slurm-*Dateinamen genau aussehen. Ich bin mir nicht mal sicher, ob das wirklich passiert. Mein Punkt ist, Sie sollten nicht die Ausgabe von analysieren ls.


Ein weiteres schwaches Fragment ist, wo Sie das Argument nicht zitieren nano. Dies hat wahrscheinlich nichts mit Ihrem aktuellen Problem zu tun, aber beachten Sie, nano a bdass Nano-Bearbeitung adann bnicht funktioniert "a b".