Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - MattFlower/bashcd: Tools for making directory navigation a bit easier in a bash shell · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Intro

bashcd is a collection of tools meant to make navigating the command line a bit easier. The following commands are included:

fcd <dirname>

Recurses subdirectories using the find command in order to find a directory. This is probably the most reliable of the methods I provide to recurse subdirectories, but there is one complication -- if you have a particularly large subtree, it may be slow.

filecd <filename>

Switch to the directory which contains the identified file. For example, if you were in the home directory and if you had a file named /home/mflower/code/opensource/README.md, typing "filecd README.md" would switch to the /home/mflower/code/opensource directory.

dcd <directory alias>

Dcd keeps an internal list of directory aliases. For example, if you wanted to keep a directory alias for the /home/mflower/code/opensource directory, I would type dcd -a opensource from that directory. In the future, typing dcd opensource would switch me to that directory. dcd -l gives you a list of all current aliases. Type dcd -h for further details.

lcd <dirname>

Similar to fcd, except not limited to only subdirectories. Lcd can switch to any directory on your machine which is currently in the locate database. This is great if you have a well updated located database.

mcd <dirname>

Very similar to lcd except that it is specific to mac. It uses the mdfind command line utility which uses the underlying indexing that happens constantly on the mac.

ucd <dirname>

Switch to a parent directory of the current directory. For example, if the current directory is /home/mflower/code/opensource, you could use ucd home to switch to the /home directory.

Installation

Copy the file https://raw.github.com/MattFlower/bashcd/master/bashcd to a local file called .bashcd in your root directory. Add the following line to your .profile, .bashrc, or .bash_profile.

source .bashcd

Once you restart your terminal bashcd will be automatically initialized. If you wish to try it out without installing it permanently, you can type "source <path to your .bashcd file>" (without the < and > marks).

If you have problems with scripts complaining about dcd after doing this, consider wrapping the source in a check to make sure you are in an interactive shell:

if [[ $- == *i* ]]; then
source .bashcd
fi

Documentation

All commands have a help file built into them. Type the command and press enter to see the help. I've also copied these help files into the wiki: https://github.com/MattFlower/bashcd/wiki

Features

All of the above features have bash completion built in. After you have typed the name of the command, hit the tab key for completion.

If there are multiple completions for the command you have entered, bashcd will show a list of potential directories to go to.
For example:

/Users/mflower/code/code/a $ ucd code
Please choose a directory to change to
--------------------------------------
1. /Users/mflower/code 2. /Users/mflower/code/code Your choice: 1
/Users/mflower/code $

About

Tools for making directory navigation a bit easier in a bash shell

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages