Si cree que necesitará esto con más frecuencia y no desea escribir la ruta dos veces cada vez, también puede hacer una función Bash o un script para ello.
Función Bash (agregue esta línea para ~/.bashrctenerla disponible de forma persistente para su usuario, de lo contrario se desvanecerá nuevamente cuando salga de su terminal):
Script Bash (guárdelo /usr/local/bin/touch2usando sudo para que esté disponible para todos los usuarios, de lo contrario ~/bin/touch2solo para su usuario):
¿Puedo editar el touch comando original y agregarle un interruptor -p?
MA Heshmat Khah
3
@HeshmatKhah Debería ser posible, pero no se recomienda sombrear los ejecutables del sistema con sus propios scripts o funciones. Puede usar el nombre touch-p(¡sin espacio!) En lugar de touch2, si prefiere la "p", pero no intentaría reemplazar el comando original.
Byte Commander
1
Tenga en cuenta que puede usar la eliminación de sufijos en lugar de dirnametambién, es decir, puede hacer lo mkdir -p "${1%/}" && touch "$1"mismo que askubuntu.com/a/928544/295286
Sergiy Kolodyazhnyy
7
Se puede usar el installcomando con -Dbandera.
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$
Si tenemos varios archivos, podríamos considerar usar una lista de elementos (tenga en cuenta, recuerde citar los elementos con espacios) e iterar sobre ellos:
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
O alternativamente con 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
Con este enfoque, el nuevo archivo obtiene permisos ejecutables de forma predeterminada. Para darle los mismos permisos que se obtendría con tacto, se puede utilizarinstall -m 644 -D /dev/null <filepath>
ricab
1
Para este propósito, puede crear su propia función, ejemplo a continuación:
Primero insertamos una función al final del archivo ~ / .bashrc usando el comando echo. El indicador -p en la función permite crear carpetas anidadas, como fldr2 de nuestro ejemplo. Finalmente, actualizamos el archivo con el comando fuente y finalmente ejecutamos el comando mkfile creado recientemente
touch
comando original y agregarle un interruptor-p
?touch-p
(¡sin espacio!) En lugar detouch2
, si prefiere la "p", pero no intentaría reemplazar el comando original.dirname
también, es decir, puede hacer lomkdir -p "${1%/}" && touch "$1"
mismo que askubuntu.com/a/928544/295286Se puede usar el
install
comando con-D
bandera.Si tenemos varios archivos, podríamos considerar usar una lista de elementos (tenga en cuenta, recuerde citar los elementos con espacios) e iterar sobre ellos:
O alternativamente con array:
fuente
install -m 644 -D /dev/null <filepath>
Para este propósito, puede crear su propia función, ejemplo a continuación:
Primero insertamos una función al final del archivo ~ / .bashrc usando el comando echo. El indicador -p en la función permite crear carpetas anidadas, como fldr2 de nuestro ejemplo. Finalmente, actualizamos el archivo con el comando fuente y finalmente ejecutamos el comando mkfile creado recientemente
fuente