# \[ANN\] Shelly.jl -- cd, ls, ll and more Unix in the Julia REPL mode

**URL:** https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657
**Category:** Package Announcements
**Tags:** repl, linux, filesystem
**Created:** [June 21, 2023, 2:44pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657 "2023-06-21T14:44:55Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![martin.auer](https://avatars.discourse-cdn.com/v4/letter/m/f19dbf/32.png) [@martin.auer](https://discourse.julialang.org/u/martin.auer)
#### Post date: [June 21, 2023, 2:44pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/1 "2023-06-21T14:44:55Z")

</div>

Hi all,

happy to announce [Shelly.jl](https://github.com/umlet/Shelly.jl), a tiny helper package to let you swiftly navigate the file system from within the Julia REPL mode, and without having to type any special characters.

More info on the Github README; here is a small example:

```julia
julia> ls
1° . 2° .. 3 README.md 4° src

julia> 4cd
julia> pwd()
"/home/martin/Shelly.jl/src"

julia> 2cd
julia> pwd()
"/home/martin/Shelly.jl"

julia> 4°
julia> pwd()
"/home/martin/Shelly.jl/src"

julia> 2°
julia> pwd()
"/home/martin/Shelly.jl"

```

Would be very glad for any feedback!

---

<div class="post-metadata">

### Author: ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)
#### Post date: [June 21, 2023, 2:49pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/2 "2023-06-21T14:49:42Z")

</div>

This looks interesting, but my first and most major comment would be that I use the heck out of `df` as a variable name, and will avoid any package that forces me to change that behavior.

---

<div class="post-metadata">

### Author: ![martin.auer](https://avatars.discourse-cdn.com/v4/letter/m/f19dbf/32.png) [@martin.auer](https://discourse.julialang.org/u/martin.auer)
#### Post date: [June 21, 2023, 3:00pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/3 "2023-06-21T15:00:25Z")

</div>

True, also the reason why I did not use `c` as shorthand for `cd` – but in the hints at the end I am suggesting to only selectively import the names/functions you want. You can also easily alias anything there – e.g., `const mydf = Shelly.df` gives you your own shortcut with the same behavior.

---

<div class="post-metadata">

### Author: ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)
#### Post date: [June 21, 2023, 3:32pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/4 "2023-06-21T15:32:21Z")

</div>

I have been waiting for this - will give it a try! Good stuff!

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [June 21, 2023, 3:42pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/5 "2023-06-21T15:42:35Z")

</div>

The idea of this package is to bring the UNIX syntax to Windows users? Because the REPL has a built-in shell mode (press `;` as the first character of the line).

---

<div class="post-metadata">

### Author: ![martin.auer](https://avatars.discourse-cdn.com/v4/letter/m/f19dbf/32.png) [@martin.auer](https://discourse.julialang.org/u/martin.auer)
#### Post date: [June 21, 2023, 3:50pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/6 "2023-06-21T15:50:34Z")

</div>

No (Windows support is actually not really implemented yet). The idea is to quickly browse the file system without having to change mode (I am probably also outing myself as not the biggest vi user). Personally, I prefer to stay in the Julia REPL and just dumbly type the muscle-memorized “ll” instead of reaching for the “;” which requires a SHIFT on my keyboard; also I have to remember to get back to the Julia mode. Modes simply make me stumble ever so slightly.

---

<div class="post-metadata">

### Author: ![martin.auer](https://avatars.discourse-cdn.com/v4/letter/m/f19dbf/32.png) [@martin.auer](https://discourse.julialang.org/u/martin.auer)
#### Post date: [July 9, 2023, 11:34am UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/7 "2023-07-09T11:34:35Z")

</div>

(I added Windows support – the command `dir` now works in the Julia REPL mode on Windows. Windows users can probably benefit even more here, as a `dir` would require the `cmd /c` in the shell mode.)

---

<div class="post-metadata">

### Author: ![martin.auer](https://avatars.discourse-cdn.com/v4/letter/m/f19dbf/32.png) [@martin.auer](https://discourse.julialang.org/u/martin.auer)
#### Post date: [April 23, 2024, 1:18pm UTC](https://discourse.julialang.org/t/ann-shelly-jl-cd-ls-ll-and-more-unix-in-the-julia-repl-mode/100657/8 "2024-04-23T13:18:06Z")

</div>

New version 0.9.0 released:

- Show hidden files with `lla`, `lsa`, or `dira` on Windows (thx @oheil !)
- Windows: change drive with `df` or `ldf`; root dir handling fixed; group-by-dirs
- Capture `ls` output via `|>`
- Stability, docs, code re-org…

Enjoy!
