Jeśli uważasz, że będziesz tego potrzebował częściej i nie chcesz za każdym razem wpisywać ścieżki dwa razy, możesz także utworzyć dla niej funkcję Bash lub skrypt.
Funkcja Bash (dodaj tę linię, aby ~/.bashrcstale udostępnić ją użytkownikowi, w przeciwnym razie zniknie ona ponownie po wyjściu z terminala):
Skrypt Bash (przechowuj go /usr/local/bin/touch2za pomocą sudo, aby był dostępny dla wszystkich użytkowników, w innym ~/bin/touch2przypadku tylko dla użytkownika):
czy mogę edytować oryginalne touch polecenie i dodać -pdo niego przełącznik ?
MA Heshmat Khah
3
@HeshmatKhah Powinno to być możliwe, ale nie zaleca się cieniowania plików wykonywalnych systemu własnymi skryptami lub funkcjami. Możesz użyć nazwy touch-p(bez spacji!) Zamiast touch2, jeśli wolisz „p”, ale nie próbowałbym zastąpić oryginalnej komendy.
Bajt Dowódca
1
Zauważ, że możesz również użyć usuwania sufiksu zamiast dirname, tj. Możesz to zrobić mkdir -p "${1%/}" && touch "$1"tak samo, jak askubuntu.com/a/928544/295286
Sergiy Kolodyazhnyy
7
Można użyć installpolecenia z -Dflagą.
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$
Jeśli mamy wiele plików, warto rozważyć użycie listy elementów (pamiętaj, aby cytować elementy ze spacjami) i iterację nad nimi:
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
Lub alternatywnie z tablicą:
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
Dzięki takiemu podejściu nowy plik domyślnie otrzymuje uprawnienia do wykonywania. Aby nadać mu te same uprawnienia, które uzyskałby dotykiem, można użyćinstall -m 644 -D /dev/null <filepath>
ricab 10.09.19
1
W tym celu możesz stworzyć własną funkcję, przykład poniżej:
Najpierw wstawiamy funkcję na końcu pliku ~ / .bashrc za pomocą polecenia echo. Opcja -p w funkcji pozwala tworzyć zagnieżdżone foldery, takie jak fldr2 z naszego przykładu. Na koniec aktualizujemy plik za pomocą polecenia źródłowego i ostatecznie wykonujemy ostatnio utworzone polecenie mkfile
touch
polecenie i dodać-p
do niego przełącznik ?touch-p
(bez spacji!) Zamiasttouch2
, jeśli wolisz „p”, ale nie próbowałbym zastąpić oryginalnej komendy.dirname
, tj. Możesz to zrobićmkdir -p "${1%/}" && touch "$1"
tak samo, jak askubuntu.com/a/928544/295286Można użyć
install
polecenia z-D
flagą.Jeśli mamy wiele plików, warto rozważyć użycie listy elementów (pamiętaj, aby cytować elementy ze spacjami) i iterację nad nimi:
Lub alternatywnie z tablicą:
źródło
install -m 644 -D /dev/null <filepath>
W tym celu możesz stworzyć własną funkcję, przykład poniżej:
Najpierw wstawiamy funkcję na końcu pliku ~ / .bashrc za pomocą polecenia echo. Opcja -p w funkcji pozwala tworzyć zagnieżdżone foldery, takie jak fldr2 z naszego przykładu. Na koniec aktualizujemy plik za pomocą polecenia źródłowego i ostatecznie wykonujemy ostatnio utworzone polecenie mkfile
źródło