get the next/previous sibling directory name.
When a directory has too many sub-directories, we are tiresome to traverse the whole of sub-directories. Because, sometimes we lose where we are. Ideally, we move the directory by specifying βnextβ or βprevious,' not the directory name.
The command like the following makes us tired π.
cd ../next_directory_name
We should type the command like below π.
cdnext
For this, I implemented sibling
.
The sibling
introduces the following utility commands.
- change the working directory to the sibling directory:
cdnext
,cdprev
,cdfirst
,cdlast
, andcdrand
- list the sibling directory:
lsnext
,lsprev
,lsfirst
,lslast
, andlsrand
The cdnext
and the cdprev
allow the integer argument to repeat the traversing.
get next/previous sibling directory name.
Usage: sibling [OPTIONS] [DIR]
Arguments:
[DIR] the directory for listing the siblings [default: .]
Options:
-a, --absolute print the directory name in the absolute path
-l, --list list the sibling directories
-p, --progress print the progress of traversing directories
-P, --parent print parent directory, when no more sibling directories
-s, --step <COUNT> specify the number of times to execute sibling [default: 1]
-t, --type <TYPE> specify the nexter type [default: next]
[possible values: first, last, previous, next, random, keep]
-h, --help Print help
-V, --version Print version
sibling
prints the next directory name with 0 status code.
The next directory is decided by the traversing type. Available values are: next
, previous
, first
, last
, keep
and random
, default is next
.
After visiting the final directory, the sibling
prints nothing and exits with a non-zero status code.
Install sibling
via Homebrew, simply run:
brew tap tamada/brew
brew install sibling
And put the following snipeets into your shell profile (e.g., .bash_profile
, or .zshrc
)
The --init
option accepts only bash
.
Other shell scripts are not supported, yet.
eval "$(sibling --init bash)"
Get source codes by git clone
or download from GitHub,
then run cargo build
to build sibling
.
$ git clone https://github.com/tamada/sibling.git # or download from https://github.com/tamada/sibling
$ cd sibling
$ cargo build --release # the binary file is put on target/release/sibling.
- Rust 1.78 or later
- Dependencies (See
Cargo.toml
)- clap 4.5.5
- rand 0.8.5
- rust-embed 8.4.0
- WTFPL
- π Commercial use
- π Modification
- π Distribution
- π Private use
- cdargs
- Directory bookmarking system - Enhanced cd utilities
- Is there a directory history for bash?