Shells en shells
Trabajando con múltiples directorios
Mientras es común trabajar en un directorio puede ser beneficioso trabajar en múltiples lugares al mismo tiempo. Para esto Rsh ofrece el concepto de "shells". Tal como implica, son una manera de tener activo múltiples shells en uno permitiendote rápidamente saltar entre directorios de trabajo y más.
Para empezar entremos a un directorio:
/home/jonathan/Source/rsh(master)> enter ../lark
/home/jonathan/Source/lark(master)> ls
----+----------------+-----------+----------+---------+---------------+---------------
# | name | type | readonly | size | accessed | modified
----+----------------+-----------+----------+---------+---------------+---------------
0 | Cargo.toml | File | | 2.2 KB | 6 months ago | 6 months ago
1 | target | Directory | | 4.1 KB | 10 months ago | 6 months ago
2 | notes | Directory | | 4.1 KB | 10 months ago | 6 months ago
Entrar es similar a cambiar directorios (como vimos previamente
con el comando cd
). Esto permite saltar al
directorio para trabajar dentro del mismo. En lugar de cambiar
de directorio, ahora estamos en dos directorios. Para ver esto
con más claridad podemos usar el comando shells
que
enumera los directorios actualmente activos:
/home/jonathan/Source/lark(master)> shells
---+---+------------+-------------------------------
# | | name | path
---+---+------------+-------------------------------
0 | | filesystem | /home/jonathan/Source/rsh
1 | X | filesystem | /home/jonathan/Source/lark
---+---+------------+-------------------------------
El comando shells
nos muestra que hay dos shells
activos: nuestro directorio fuente original "rsh" y
ahora este nuevo directorio "lark".
Podemos saltar entre estas shells con los accesos directos
n
y p
, cortos de siguiente
"next" y previo "previous":
/home/jonathan/Source/lark(master)> n
/home/jonathan/Source/rsh(master)> p
/home/jonathan/Source/lark(master)>
Podemos notar el directorio cambiando pero también siempre podremos regresar al directorio previo en el cual estábamos trabajando. Esto nos permite trabajar en múltiples directorio en la misma sesión.
Saliendo del shell
Puedes salir de una shell que hayas entrado (usando
enter
) a través del comando exit
. Si
esta es la última shell, Rsh se cerrará.
Siempre puedes cerrar Rsh incluso si tienes múltiples shells
activas usando el comando exit
pasando la bandera
--now
de la siguiente forma exit --now
Más allá de los directorios
Rsh también puede crear shells de otras cosas aparte de las rutas del sistema de archivos. Digamos por ejemplo que estás trabajando con un gran conjunto de datos y no deseas perderte dentro del mismo.
Para ver cómo funciona haremos el siguiente ejercicio. Actualmente en Rsh tenemos enumerados los complementos desarrollados (plugins) en "Cargo.toml" digamos que también acabamos de crear un nuevo complemento en el directorio src/plugins llamado "doc.rs" y nos interesa saber que se encuentre enumerado también en "Cargo.toml" para que se instale al compilar Rsh.
Entraremos al archivo "Cargo.toml" del código fuente de Rsh:
/Users/andresrobalino/Code/rsh(master)> enter Cargo.toml
/> ls
------------+--------------+------------------+----------+----------
bin | dependencies | dev-dependencies | lib | package
------------+--------------+------------------+----------+----------
[11 items] | [object] | [object] | [object] | [object]
------------+--------------+------------------+----------+----------
Por el momento solo hemos entrado al archivo y podemos observar
en la tabla devuelta por ls
lo que hay. Si prestas
atención hemos entrado a un archivo con formato que reconoce Rsh
(.toml). Rsh también nos proyecta el contenido del archivo en
forma de sistema de archivos para explorarlo como si
estuvieramos dentro de un sistema de archivos.
Antes de continuar revisemos las shells activas:
/> shells
---+---+-------------------------------------------------+------------------------------------
# | | name | path
---+---+-------------------------------------------------+------------------------------------
0 | | filesystem | /Users/andresrobalino/Code/rsh
1 | X | {/Users/andresrobalino/Code/rsh/Cargo.toml} | /
---+---+-------------------------------------------------+------------------------------------
Observamos que hay dos activas indicándonos que nos encontramos dentro de "Cargo.toml" en la ruta predeterminada "/". Revisemos el listado de nuevo:
/> ls
------------+--------------+------------------+----------+----------
bin | dependencies | dev-dependencies | lib | package
------------+--------------+------------------+----------+----------
[11 items] | [object] | [object] | [object] | [object]
------------+--------------+------------------+----------+----------
Puede que los complementos se encuentren en "bin", vamos ahí:
> cd bin
/bin> ls
----+----------------------+---------------------------
# | name | path
----+----------------------+---------------------------
0 | rsh_plugin_inc | src/plugins/inc.rs
1 | rsh_plugin_sum | src/plugins/sum.rs
2 | rsh_plugin_add | src/plugins/add.rs
3 | rsh_plugin_edit | src/plugins/edit.rs
4 | rsh_plugin_str | src/plugins/str.rs
5 | rsh_plugin_skip | src/plugins/skip.rs
6 | rsh_plugin_sys | src/plugins/sys.rs
7 | rsh_plugin_tree | src/plugins/tree.rs
8 | rsh_plugin_binaryview | src/plugins/binaryview.rs
9 | rsh_plugin_textview | src/plugins/textview.rs
10 | rsh | src/main.rs
----+----------------------+---------------------------
Notar que siempre podemos saltar de vuelta al directorio en el
que estuvimos trabajando usando p
(para previo).
/bin> p
Verifiquemos las shells:
/Users/andresrobalino/Code/rsh(master)> shells
---+---+-------------------------------------------------+------------------------------------
# | | name | path
---+---+-------------------------------------------------+------------------------------------
0 | X | filesystem | /Users/andresrobalino/Code/rsh
1 | | {/Users/andresrobalino/Code/rsh/Cargo.toml} | /bin
---+---+-------------------------------------------------+------------------------------------
Nos encontramos ahora en la shell donde estuvimos antes de entrar al archivo "Cargo.toml", vamos al directorio donde se encuentra el código fuente de los complementos (plugins):
/Users/andresrobalino/Code/rsh(master)> cd src/plugins/
/Users/andresrobalino/Code/rsh/src/plugins(master)> ls
----+---------------+------+----------+---------+------------+------------
# | name | type | readonly | size | accessed | modified
----+---------------+------+----------+---------+------------+------------
0 | doc.rs | File | | 3.0 KB | a week ago | a week ago
1 | sum.rs | File | | 3.0 KB | a week ago | a week ago
2 | inc.rs | File | | 11.8 KB | a week ago | a week ago
3 | sys.rs | File | | 9.2 KB | 2 days ago | 2 days ago
4 | edit.rs | File | | 2.7 KB | a week ago | a week ago
5 | str.rs | File | | 21.4 KB | 5 days ago | 5 days ago
6 | secret.rs | File | | 1.8 KB | 2 days ago | 2 days ago
7 | skip.rs | File | | 1.7 KB | a week ago | a week ago
8 | binaryview.rs | File | | 13.0 KB | a week ago | a week ago
9 | tree.rs | File | | 3.0 KB | a week ago | a week ago
10 | add.rs | File | | 2.7 KB | a week ago | a week ago
11 | textview.rs | File | | 9.4 KB | 5 days ago | 5 days ago
----+---------------+------+----------+---------+------------+------------
Ahora podemos comparar los dos para verificar si faltan complementos adicionales o si hay complementos adicionales que necesitemos agregar a nuestro archivo "Cargo.toml" (¡y claramente falta agregarlo a "Cargo.toml"!)