Add cd.sh to behave like normal cd.
This commit is contained in:
		
							
								
								
									
										49
									
								
								cd.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								cd.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| # Better cd | ||||
| # Usage: cd [full_path|partial_path|path_initials|-] | ||||
| # | ||||
| # Examples: | ||||
| # ~/playground/ $ find . -type d | ||||
| # . | ||||
| # ./slides | ||||
| # ./slides/small | ||||
| # ./slides/huge | ||||
| # ./swings | ||||
| # ./swings/small | ||||
| # ./swings/large | ||||
| # ~/playground/ $ cd sl | ||||
| # ~/playground/slides/ $ cd | ||||
| # ~ $ cd p/s/h | ||||
| # ~/playground/slides/huge $ cd ../.. | ||||
| # ~/playground/ $ cd - | ||||
| # ~/playground/slides/huge $ cd - | ||||
| # ~/playground/ $ cd s/s | ||||
| # Warning: Multiple possible paths. Going to first path. | ||||
| # ~/playground/slides/small $ | ||||
|  | ||||
| function cd { | ||||
| 	if [[ $# -eq 0 ]]; then | ||||
| 		builtin cd | ||||
| 		return | ||||
| 	fi | ||||
|  | ||||
| 	if [[ $# -gt 1 ]]; then | ||||
| 		echo "too many arguments" >&2 | ||||
| 		return 1 | ||||
| 	fi | ||||
|  | ||||
| 	# cd - | ||||
| 	if [[ $1 == '-' ]]; then | ||||
| 		builtin cd - | ||||
| 		return | ||||
| 	fi | ||||
|  | ||||
| 	# Check for absolute path first | ||||
| 	if [[ -d $1 ]]; then | ||||
| 		builtin cd "$1" | ||||
| 		return | ||||
| 	fi | ||||
|  | ||||
| 	# If nothing works | ||||
| 	echo "$1: No such directory." >&2 | ||||
| 	return 1 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user