No quiero saber todos los caminos de todo, así que me niego a hacer algo como...
La mayoría de nosotros tampoco recordamos caminos largos y complejos, por lo que esto es muy relatable. Por ejemplo, hay una excelente herramienta de comando llamada "Airport Utility" (airport
) pero no se encuentra en el PATH. Usar find
o locate
te dará un camino inconcebible de
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport
Es imposible recordar esto, pero es solo un ejemplo (por cierto, uso un alias para este comando). No se espera que nadie recuerde cada camino de directorio. Sin embargo, tenemos una serie de herramientas que podemos usar para hacer la vida un poco más simple. A continuación se muestra solo una muestra de las herramientas que uso.
Arrastrar y soltar desde Finder a Terminal
Si ya tienes el archivo/carpeta abierto, no tienes que recordar todo el camino. Simplemente comienza tu comando de forma apropiada (copiando una carpeta en este ejemplo) cp -R
luego arrastra la carpeta desde Finder a Terminal y el camino se completará automáticamente.
Luego continúa el comando según sea necesario. Aquí estoy copiando en mi directorio actual, por lo que uso un punto o un punto .
pero podría arrastrar otro archivo/carpeta desde Finder como destino.
Uso de funciones integradas en el Shell
Tenemos varias de las cuales usar:
-
Completado de pestañas. Esto está disponible tanto en los shells de Bash (predeterminado para Mojave y anteriores) como en los shells de Zsh (predeterminado para Catalina y posteriores). Al ingresar un archivo o carpeta, simplemente comience con los primeros caracteres, presione Tab y completará automáticamente el resto de la línea. Por ejemplo:
cp - R /Users/al
Completará automáticamente el resto de la carpeta hasta que necesite más entrada de tu parte para continuar:
cp -R /Users/allan/Desk y así sucesivamente...
Puedes usar esto tanto para la fuente como para el destino. Simplemente completa con pestañas cada directorio
-
pwd
Muestra el directorio de trabajo actual. También está disponible como variable, $PWD. Por ejemplo, asumiendo que estás profundamente en una carpeta oscura, y quieres copiar algo como un archivo o carpeta a una carpeta en tu Escritorio, simplemente emite el comando
cp -R $PWD/carpeta_a_copiar ~/Escritorio/carpeta_destino
-
Expansión de Tilde ~
Este es el atajo a tu carpeta de inicio que también se hace referencia convenientemente mediante la variable de shell $HOME
. Si quisieras copiar todos tus Documentos a una unidad USB, simplemente emite el comando de Terminal:
cp -R $HOME/Documents /Volumes/My_Backup_USB/Documents
o igualmente válido
cp -R ~/Documents /Volumes/My_Backup_USB/Documents
-
pushd
, popd
y dirs
Te permiten empujar directorios, quitarlos de la pila y listar los contenidos de la pila de directorios que es LIFO o Last In/First Out. (Piensa en una pila como una pila de panqueques; siempre pones el más nuevo en la parte superior y quitas el de arriba al comer uno).
-
dirs
Listará todos los directorios en tu pila (dirs -p
muestra una entrada por línea). El primer valor es siempre el directorio de trabajo actual. Este permanecerá así, hasta que "empujes" algunas entradas en la pila. Aquí tienes un ejemplo de una pila de directorios:
dirs -lp
/Users/allan/Desktop/Email to Process
/Users/allan/Desktop/Saved Images to Process
/Users/allan/Desktop/eBooks to Process
/Users/allan/Desktop
/Users/allan
/Users/allan/Desktop
(Desktop
está ahí dos veces porque accidentalmente lo empujé dos veces, pero ilustra perfectamente esta función)
-
pushd
"empujará" el directorio actual o uno que especifiques a la pila. Así es como poblé la pila para el punto anterior. Ejemplos:
`pushd`
`pushd ~/Desktop/My_Folder`
-
popd
"quitará" la última entrada de directorio o la que especifiques (se puede determinar con el comando dirs
) Por ejemplo, podemos usar alguna expansión de comando para obtener el 3er directorio en nuestra pila con el comando popd +3
(3er elemento desde la parte superior) o popd -3
(para el 3er elemento desde abajo)
Así que, una vez que sepas dónde están tus directorios en la pila, puedes usarlos con la expansión de comandos:
cp -R `popd` ~/Desktop Copiará cualquier carpeta de la parte superior de la pila al directorio de trabajo actual
cp -R `popd` `popd` Copiará la primera carpeta en la pila a la segunda carpeta en la pila
cp -R `popd +2` `popd -4` Copiará la 2da desde la parte superior a la 4ta desde abajo
Por favor, ten en cuenta que esto no es un tutorial exhaustivo sobre pushd
, popd
y dirs
. Hay muchas opciones (banderas) que puedes usar con cada una para trabajar mejor con la pila de directorios.
3 votos
En mi humilde opinión, es razonable utilizar un administrador de archivos basado en terminal como vifm, midnight commander, ranger, etc.
4 votos
¿Puedo preguntar por qué estás usando Terminal? ¿Estás creando un script? Si deseas funcionalidad de GUI, ¿por qué no simplemente usar Finder?
0 votos
El "portapapeles" del que hablas para transferencias de archivo/carpeta no es el mismo mecanismo de 'portapapeles' que se encuentra al copiar y pegar texto e imágenes en otros lugares de macOS. Puede que quieras experimentar con el comando Terminal
mv
, el cual se explica en esta página de Soporte de Apple.1 votos
Es posible que desees investigar los comandos
popd
,pushd
ydirs
para ayudar a recordar todos tus directorios de trabajo.1 votos
Según la página del manual de
cp
, si hacescp -R nombre_directorio destino
, entonces debería copiar todo el directorio. Si hacescp -R nombre_directorio/ destino
con una barra inclinada al final, solo copiará el contenido, no el directorio en sí.0 votos
También tiendo a usar
cp -pR ...
en lugar decp -R
.0 votos
pwd | pbcopy
copiará la ruta del directorio de trabajo al portapapeles, si eso ayuda0 votos
@benwiggy Simplemente odio fundamentalmente el finder. Lo encuentro casi inútil y me retuerzo cada vez que tengo que interactuar con él. Especialmente las aplicaciones que solicitan una versión de él para buscar un archivo para cargar o algo similar. Encuentro que su diseño es fundamentalmente defectuoso y de verdad no quiero tocarlo nunca. Sin embargo, ya uso terminal para trabajar con docker, k8s, gradle, git y otros. Así que puedo hacer todo desde el terminal, pero no tengo experiencia con Linux, así que no sé cómo la gente suele hacer las cosas molestas en el terminal. Esta es la primera vez que escucho sobre pushd / popd.