Apéndice A — El shell

Incluso si realiza la mayoría de sus operaciones de Git a través de un cliente, como RStudio o GitKraken, a veces debe trabajar en el shell. A medida que te sientas más cómodo con Git, es posible que prefieras hacer más y más a través de la línea de comandos. Es posible que también necesites utilizar Git o operaciones del sistema de archivos en un servidor que carece de tu cliente Git habitual. Por todas estas razones, es una buena idea aprender a manejar el caparazón.

Este es un aspecto típico de un caparazón. Verá un cursor parpadeante simple, esperando entrada:

A.1 ¿Qué es el shell?

El shell es un programa de su computadora cuyo trabajo es ejecutar otros programas. Los pseudosinónimos son “terminal”, “línea de comando” y “consola”. Hay un hilo completo de StackExchange sobre las diferencias (¿Cuál es la diferencia entre Terminal, Consola, Shell y Línea de comandos?), pero no lo encuentro muy esclarecedor. Su kilometraje puede variar.

Muchos programadores pasan mucho tiempo en un shell, a diferencia de las GUI, porque es muy rápido, conciso y ubicuo en sus entornos informáticos relevantes. Así es como se hacía todo el trabajo antes de que tuviéramos el mouse y las GUI.

El shell más común es bash y a veces se utiliza como sustituto de “shell”, al igual que “Coke” y “Kleenex” son sustitutos de cola y pañuelos de papel.

En Happy Git, a veces hacemos una demostración del uso de un shell para ciertas tareas, como navegar por el sistema de archivos y realizar operaciones de Git, cuando no queremos o no podemos usar RStudio. Proporcionar comandos de shell también es menos ambiguo y menos perecedero que describir las interacciones humanas con una GUI.

A.2 Comenzando el caparazón

A.2.1 Desde dentro de RStudio

Puede iniciar un shell desde RStudio. Esto suele ser útil, porque RStudio hace todo lo posible para ubicarlo en un directorio de trabajo sano, es decir, en el proyecto actual.

Hay dos maneras:

  • Tools > Terminal lanza un shell dentro de RStudio, gráficamente y en términos de proceso. Creo que esto suele ser lo que quieres.
  • Tools > Shell … lanza un shell externo a RStudio.

A.2.2 Fuera de RStudio

A.2.2.1 macOS

El shell a menudo se denomina “terminal” en macOS, con lo que la gente se refiere a Terminal.app. Una forma de iniciarlo es a través de Spotlight Search. Escribe Comando + espacio y comienza a escribir “terminal”. Este proceso será algo así:

Terminal.app normalmente se encuentra en /Applications/Utilities/Terminal.app.

Al abrir Terminal.app, accederá a un shell bash abierto en su directorio de inicio ~/, que es una abreviatura de /Users/SUNOMBREDEUSUARIO. Deberías ver algo como esto:

Si tiene derechos administrativos en su computadora, anteponer cualquier comando con sudo le permitirá ejecutar el comando como administrador. Espere que le cuestionen su contraseña. Si necesita cambiar los privilegios administrativos o su contraseña, consulte este artículo de Apple.

A.2.2.2 Windows

Aplazamos esto hasta la siguiente sección, debido a la situación más compleja del shell en Windows.

A.3 Windows es especial… y no en el buen sentido

Windows no es la plataforma ideal para el desarrollo de software y computación científica. Gran parte de la funcionalidad se sentirá rara y limitada. Porque lo es.

Hay no menos de 4 posibles shells en los que puedes terminar. A menos que lo sepas mejor, es casi seguro que querrás estar en un shell de Git Bash, especialmente aquí en Happy Git.

Los usuarios de Windows querrán comprender los diferentes tipos de shell, cómo iniciarlos y cómo saber en cuál se encuentra.

A.3.1 Git bash

TL;DR ¿cómo saber si estás en un shell de Git Bash? Haz esto:

$ echo $SHELL
/usr/bin/bash

Git Bash es un shell bash que se incluye con Git para Windows, que es la forma Happy Git de instalar Git en Windows. Por lo tanto, no tendrá Git Bash en su sistema hasta que instale Git para Windows.

Git Bash es siempre el shell de Windows al que nos dirigimos en las instrucciones de Happy Git.

RStudio debería detectar automáticamente la presencia de Git Bash. Puede inspeccionar e influir en esto directamente a través de Tools > Global Options > Terminal. A menos que tenga una buena razón para hacer lo contrario, querrá ver “Git Bash” en el menú desplegable “Nuevas terminales abiertas con…”.

Consejos para solucionar problemas:

  • Reinicie RStudio. Debe reiniciar todas las instancias de RStudio después de instalar Git para Windows (+ Git Bash), para que RStudio detecte automáticamente Git Bash.
  • Actualizar RStudio. El manejo del shell en RStudio ha mejorado dramáticamente con el tiempo, por lo que es posible que las versiones anteriores no se comporten como se describe aquí.

A.3.1.1 Accediendo a Git Bash fuera de RStudio

A veces quieres ejecutar Git Bash fuera de RStudio. Esta es la forma más sencilla: haga clic en el menú “Git” en el menú de Windows y seleccione “Git Bash”.

Un shell de Git Bash que se ejecuta fuera de RStudio se parece a esto:

Observe “MSYS” en la barra de título. Es posible que también vea “MINGW64”.

A veces es necesario ejecutar Git Bash como administrador, p. para ejecutar con mayores privilegios. La forma más fácil: haga clic en el menú “Git” en el menú de Windows y haga clic derecho en “Git Bash”. Esto revela un submenú. Seleccione “más” y luego “Ejecutar como administrador”.

A.3.2 Consola de comandos del sistema

TL;DR ¿cómo saber si estás en la consola de comandos del sistema? Haz esto:

C:\Users\jenny>echo %COMSPEC%
C:\WINDOWS\system32\cmd.exe

Este es el intérprete de línea de comandos nativo de Windows. Rara vez es lo que desea, especialmente para el trabajo descrito en Happy Git.

Una sesión de símbolo del sistema que se ejecuta fuera de RStudio se parece a esto:

Observe el cmd.exe en la barra de título, aunque no siempre está presente. También es posible que vea “Símbolo del sistema”.

Si recibe un mensaje de error como 'pwd' no se reconoce como un comando interno o externo, programa ejecutable o archivo por lotes. de un comando de shell, eso sugiere que de alguna manera ha iniciado cmd.exe cuando no lo hizo quiero decir.

A.3.3 PowerShell

TL;DR ¿cómo saber si estás en PowerShell? Haz esto:

PS C:\Users\jenny> Get-ChildItem Env:ComSpec

Name                           Value
----                           -----
ComSpec                        C:\WINDOWS\system32\cmd.exe

PowerShell es otro shell de Windows, un sucesor más moderno del símbolo del sistema. Además, rara vez es lo que desea, especialmente para el trabajo descrito en Happy Git.

Una sesión de PowerShell que se ejecuta fuera de RStudio se parece a esto:

Observe el powershell.exe en la barra de título.

A.3.4 Bash a través de servicios de Windows para Linux

TL;DR ¿cómo saber si estás en Bash a través de WSL? Haz esto:

$ echo $SHELL
/bin/bash

En 2016, Microsoft lanzó el Subsistema de Windows para Linux (WSL), “una nueva característica de Windows 10 que le permite ejecutar herramientas nativas de línea de comandos de Linux directamente en Windows”. En general, este es un desarrollo fantástico. Sin embargo, al momento de escribir este artículo (enero de 2019), solo tendrá esto si ejecuta Windows 10 de 64 bits y ha elegido instalar el componente del sistema WSL opcional. Por lo tanto, espero que sólo los entusiastas tengan esto y, en ese caso, probablemente no necesites este capítulo.

Un shell bash WSL que se ejecuta fuera de RStudio se parece a esto:

Para su información, Microsoft también se refiere a WSL como Bash en Ubuntu en Windows.

A.3.4.1 Conclusión de Windows

En caso de duda, probablemente quieras estar en un shell de Git Bash.

A.4 Comandos básicos de shell

Los comandos más básicos se enumeran a continuación:

  • pwd (print working directory). Muestra el directorio o “carpeta” en el que está operando actualmente. Este no es necesariamente el mismo que el directorio de trabajo R que obtiene getwd().
  • ls (list files). SCómo se muestran los archivos en el directorio de trabajo actual. Esto equivale a mirar los archivos en su Finder/Explorer/Administrador de archivos. Utilice ls -a para enumerar también archivos ocultos, como .Rhistory y .git.
  • cd (change directory). Le permite navegar a través de sus directorios cambiando el directorio de trabajo del shell. Puedes navegar así.:
    • go al subdirectorio foo del directorio de trabajo actual: cd foo
    • ir al directorio principal del directorio de trabajo actual: cd ..
    • vaya a su directorio “inicial”: cd ~ o simplemente cd
    • vaya al directorio usando la ruta absoluta, funciona independientemente de su directorio de trabajo actual: cd /home/my_username/Desktop. Windows usa una sintaxis ligeramente diferente con las barras entre los nombres de las carpetas invertidas., \, por ejemplo cd C:\Users\MY_USERNAME\Desktop.
      • Consejo profesional 1: arrastrar y soltar un archivo o carpeta en la ventana del terminal pegará la ruta absoluta en la ventana.
      • Consejo profesional 2: utilice la tecla tab para autocompletar nombres de archivos y directorios inequívocos. Presione tab dos veces para ver todas las opciones ambiguas.
  • Utilice las flechas hacia arriba y hacia abajo para repetir los comandos anteriores. O buscar comandos anteriores con CTRL + r.

Algunos comandos de Git:

  • git status es el comando de git más utilizado y le informa sobre su rama actual, cualquier cambio o archivo sin seguimiento y si está sincronizado con sus controles remotos.
  • git remote -v enumera todos los controles remotos. Muy útil para asegurarse de que git conozca su control remoto y que la dirección remota sea correcta.
  • git remote add origin GITHUB_URL agrega el control remoto GITHUB_URL con apodo origin.
  • git remote set-url origin GITHUB_URL cambia la URL remota de “origen” a GITHUB_URL. De esta manera puedes corregir errores tipográficos en la URL remota.
  • No dudes en sugerir otros comandos que merezcan incluirse en un problema de GitHub.