Wenn Sie glauben, dass Sie dies öfter benötigen und den Pfad nicht jedes Mal zweimal eingeben möchten, können Sie auch eine Bash-Funktion oder ein Skript dafür erstellen.
Bash-Funktion ( ~/.bashrcHängen Sie diese Zeile an, um sie dauerhaft für Ihren Benutzer verfügbar zu haben. Andernfalls wird sie beim Verlassen des Terminals wieder ausgeblendet.):
Bash-Skript (speichern Sie es /usr/local/bin/touch2mit sudo, um es für alle Benutzer verfügbar zu machen, ansonsten ~/bin/touch2nur für Ihren Benutzer):
Kann ich den ursprünglichen touch Befehl bearbeiten und einen Schalter hinzufügen -p?
MA Heshmat Khah
3
@HeshmatKhah Es sollte möglich sein, aber es wird nicht empfohlen, ausführbare Systemdateien mit Ihren eigenen Skripten oder Funktionen zu spiegeln. Sie könnten touch-pstattdessen den Namen (kein Leerzeichen!) Verwenden touch2, wenn Sie das "p" bevorzugen, aber ich würde nicht versuchen, den ursprünglichen Befehl zu ersetzen.
Byte Commander
1
Beachten Sie, dass Sie stattdessen dirnameauch die Option zum Entfernen von Suffixen verwenden können, z. B. mkdir -p "${1%/}" && touch "$1"wie askubuntu.com/a/928544/295286
Sergiy Kolodyazhnyy,
7
Man kann den installBefehl mit -Dflag benutzen .
bash-4.3$ install -D /dev/null mydir/one/two
bash-4.3$ tree mydir
mydir
└── one
└── two
1 directory, 1 file
bash-4.3$
Wenn wir mehrere Dateien haben, können Sie eine Liste von Elementen verwenden (beachten Sie, dass Sie Elemente mit Leerzeichen in Anführungszeichen setzen müssen) und diese durchlaufen:
bash-4.3$ for i in mydir/{'subdir one'/{file1,file2},'subdir 2'/{file3,file4}} ; do
> install -D /dev/null "$i"
> done
bash-4.3$ tree mydir
mydir
├── one
│ └── two
├── subdir 2
│ ├── file3
│ └── file4
└── subdir one
├── file1
└── file2
Oder alternativ mit Array:
bash-4.3$ arr=( mydir/{'subdir one'/{file1,file2},'subdir 2'/{file3,file4}} )
bash-4.3$ for i in "${arr[@]}"; do install -D /dev/null "$i"; done
bash-4.3$ tree mydir
mydir
├── one
│ └── two
├── subdir 2
│ ├── file3
│ └── file4
└── subdir one
├── file1
└── file2
Bei diesem Ansatz erhält die neue Datei standardmäßig ausführbare Berechtigungen. Um ihm die gleichen Berechtigungen zu geben, die er mit Berührung erhalten würde, kann maninstall -m 644 -D /dev/null <filepath>
ricab
1
Zu diesem Zweck können Sie Ihre eigene Funktion erstellen, Beispiel unten:
Zuerst fügen wir mit dem Befehl echo eine Funktion an das Ende der Datei ~ / .bashrc ein. Mit der Funktion -p Flag in können Sie die verschachtelten Ordner wie z. B. fldr2 aus unserem Beispiel erstellen. Schließlich aktualisieren wir die Datei mit dem Befehl source und führen schließlich den kürzlich erstellten Befehl mkfile aus
touch
Befehl bearbeiten und einen Schalter hinzufügen-p
?touch-p
stattdessen den Namen (kein Leerzeichen!) Verwendentouch2
, wenn Sie das "p" bevorzugen, aber ich würde nicht versuchen, den ursprünglichen Befehl zu ersetzen.dirname
auch die Option zum Entfernen von Suffixen verwenden können, z. B.mkdir -p "${1%/}" && touch "$1"
wie askubuntu.com/a/928544/295286Man kann den
install
Befehl mit-D
flag benutzen .Wenn wir mehrere Dateien haben, können Sie eine Liste von Elementen verwenden (beachten Sie, dass Sie Elemente mit Leerzeichen in Anführungszeichen setzen müssen) und diese durchlaufen:
Oder alternativ mit Array:
quelle
install -m 644 -D /dev/null <filepath>
Zu diesem Zweck können Sie Ihre eigene Funktion erstellen, Beispiel unten:
Zuerst fügen wir mit dem Befehl echo eine Funktion an das Ende der Datei ~ / .bashrc ein. Mit der Funktion -p Flag in können Sie die verschachtelten Ordner wie z. B. fldr2 aus unserem Beispiel erstellen. Schließlich aktualisieren wir die Datei mit dem Befehl source und führen schließlich den kürzlich erstellten Befehl mkfile aus
quelle