2016-04-08 20 views
3

Schaffung würde ich ein Drehbuch machen möchte einige grundlegende Befehlszeilenbefehle wie ls oder cd modifizieren, die am Ende würde die normalen ls oder cd Befehle aufrufen, aber ohne Endlosschleifen zu schaffen. Wie könnte ich das tun?Hinzufügen Dinge zu grundlegenden bash Befehle ohne Endlosschleifen

Also, was ich dachte zu tun, ist so etwas wie eine cd2.sh Datei erstellen wie:

#!/bin/bash 
echo 'Oh! Your are changing directories' 
cd "[email protected]" 

und dann in .bashrc einen Aliasnamen setzen (oder .bash_profile für mac):

alias cd = 'cd2.sh' 

aber das schafft eine Endlosschleife und mein Computer ist nicht sehr glücklich darüber. Gibt es einen einfachen Weg, um mein Ziel zu erreichen?

+0

Sie benötigen einen String wie 'cd' zitieren, wenn Sie es wie eine Zeichenfolge behandeln wollen und nicht als Befehl. – jDo

Antwort

3

Sie können den Befehl command oder die Kurzwahlnummer \ verwenden. Da cd ein Built-in ist, können Sie auch den Befehl builtin verwenden. Sie ignorieren Funktionen und Aliase und suchen stattdessen eine ausführbare Datei direkt in der $PATH und/oder die eingebauten.

$ alias ls='echo no ls for you!' 
$ ls 
no ls for you! 
$ command ls 
[directory listing] 
$ \ls 
[directory listing] 
+1

oder alternativ '\ ls' – karakfa

+1

@karakfa danke, ich wusste nicht über diese Verknüpfung, ich habe meine Antwort bearbeitet, um es zu erwähnen. – Aaron

+2

oder alternativ 'builtin ls '- so viele Möglichkeiten, eine Katze zu häuten :-) – SaintHax

0

Ich kann für ls es die folgende einfache Form tun.

Art der Verwendung: ./cd2.sh -s ./folder

/bin/bash

ls $ @