Script Bash para crear enlaces simbólicos

Soy relativamente nuevo en bash y estoy teniendo problemas con un script que estoy tratando de escribir. Después de pasar la última hora investigando e intentando nuevas técnicas, todavía no puedo hacer lo que me gustaría.

Mi objective es este: tengo una carpeta /Volumes/Server\ RAID/Photos donde guardo todas mis imágenes. Cada carpeta se titula YYYY-MM FolderName donde a veces hay espacios en FolderName . Dentro de estas carpetas hay tres carpetas: Raw , Edited y Final . Mi objective es, con un único script bash, crear enlaces simbólicos en mi Escritorio para cada carpeta Final Y cambiarle el nombre a su carpeta principal. Ejemplo: Me gustaría /Volumes/Server\ RAID/Photos/2016-10\ Fleet\ Week/Final tener un enlace simbólico en el escritorio llamado 2016-10 Fleet Week .

  • Terminal dejando una línea en blanco en High Sierra cuando se usan tabs
  • ¿Cómo puedo hacer que los files invisibles (como el perfil de bash) estén visibles en el buscador?
  • En Bash, ¿puedo exportar text desde el corte a un nuevo command?
  • Utilice la carpeta inteligente como carpeta pnetworkingeterminada de Finders
  • ¿Cómo se diagnostica Finder perdiendo íconos para las carpetas?
  • ¿Cómo cambio el color de mi Dock en Mac?
  • He probado muchas variedades diferentes del código que he publicado a continuación, pero el código que he incluido es el más conciso (aunque no funcionó).

    Descripción del código:

    1. cd to Desktop para que se creen enlaces simbólicos allí
    2. utilizar para el bucle para recorrer las carpetas
    3. crear enlace simbólico – aquí está el problema: necesito include el nombre de la carpeta en la ruta del file de alguna manera, pero también agregar \ antes de los espacios para que el command no falle. SIN EMBARGO, he estado recibiendo posts de error que dicen que no hay un lugar llamado RAID/Photos que me haga pensar que el script se tropieza con el primer espacio, incluso con la barra invertida.
    4. Cambiar el nombre del enlace simbólico Final al nombre de la carpeta. (Supuse que no necesitaba directorys completos aquí porque ya estoy en el escritorio

       cd Desktop for f in /Volumes/Server\ RAID/Photos; do ln -s /Volumes/Server\ RAID/Photos/"$f"/Final mv Final $f done 

    PREGUNTA: ¿Alguien puede ayudarme a resolver este guión? (Principalmente me interesa la tercera parte, pero no diría que no para ayudar con el rest).

  • Nano: ¿cómo get resaltado de syntax?
  • El buscador de OS X por date muestra algunos files en order incorrecto
  • Dividir file csv usando el service Automator (Menú contextual del buscador)
  • ¿Cómo terminé mi Mac con el iPhone 4S como mi nombre de host en el indicador del usuario en la terminal OS X?
  • ¿Cómo preservar las marcas de date JPEG durante la escala de Automator?
  • Mostrar dialog al iniciar session (script bash)
  • One Solution collect form web for “Script Bash para crear enlaces simbólicos”

    Cuando tenga problemas con las cotizaciones de shell, siempre será útil agregar declaraciones de echo en lugares adecuados en su secuencia de commands para ver qué está sucediendo.

    Miremos esta línea por línea:

     for f in /Volumes/Server\ RAID/Photos; 

    Esto solo se ejecuta una vez y establece f en Volumes/Server RAID/Photos , que probablemente no sea lo que usted desea.

     do ln -s /Volumes/Server\ RAID/Photos/"$f"/Final 

    f se establece en la ruta completa (ver arriba), por lo que se expande a

     ln -s /Volumes/Server\ RAID/Photos//Volumes/Server\ RAID/Photos/Final 

    que (nuevamente) no es lo que quieres ver aquí.

     mv Final $f 

    Véase más arriba 🙂

    Hay varias forms de abordar esto, pero en tu caso, me gustaría algo como lo siguiente (para evitar el reto de tener que extraer el nombre del directory de la ruta de origen)

     cd /Volumes/Server\ RAID/Photos/ for f in *; do if [ -d "$f" ]; then if [ -d "$f"/Final ]; then ln -s "/Volumes/Server RAID/Photos/$f/Final" ~/Desktop/"$f" fi fi done 

    Los dos if s cubren los casos en que hay files en el directory de origen o falta el directory Final .

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).