123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- ###########################
- # Settings
- # These can be overwritten any time.
- # If they are not set yet, they will be
- # overwritten with their default values
- fastfile_dir="${fastfile_dir:-${HOME}/.fastfile}"
- fastfile_var_prefix="${fastfile_var_prefix:-§}"
- ###########################
- # Impl
- #
- # Generate a shortcut
- #
- # Arguments:
- # 1. name - The name of the shortcut (default: name of the file)
- # 2. file - The file or directory to make the shortcut for
- # STDOUT:
- # => fastfile_print
- #
- function fastfile() {
- test "$2" || 2="."
- file=$(readlink -f "$2")
- test "$1" || 1="$(basename "$file")"
- name=$(echo "$1" | tr " " "_")
- mkdir -p "${fastfile_dir}"
- echo "$file" > "$(fastfile_resolv "$name")"
- fastfile_sync
- fastfile_print "$name"
- }
- #
- # Resolve the location of a shortcut file (the database file, where the value is written!)
- #
- # Arguments:
- # 1. name - The name of the shortcut
- # STDOUT:
- # The path to the shortcut file
- #
- function fastfile_resolv() {
- echo "${fastfile_dir}/${1}"
- }
- #
- # Get the real path of a shortcut
- #
- # Arguments:
- # 1. name - The name of the shortcut
- # STDOUT:
- # The path
- #
- function fastfile_get() {
- cat "$(fastfile_resolv "$1")"
- }
- #
- # Print a shortcut
- #
- # Arguments:
- # 1. name - The name of the shortcut
- # STDOUT:
- # Name and value of the shortcut
- #
- function fastfile_print() {
- echo "${fastfile_var_prefix}${1} -> $(fastfile_get "$1")"
- }
- #
- # List all shortcuts
- #
- # STDOUT:
- # (=> fastfile_print) for each shortcut
- #
- function fastfile_ls() {
- for f in "${fastfile_dir}"/*(N); do
- file=$(basename "$f") # To enable simpler handling of spaces in file names
- varkey=$(echo "$file" | tr " " "_")
- # Special format for columns
- echo "${fastfile_var_prefix}${varkey}|->|$(fastfile_get "$file")"
- done | column -t -s "|"
- }
- #
- # Remove a shortcut
- #
- # Arguments:
- # 1. name - The name of the shortcut (default: name of the file)
- # STDOUT:
- # => fastfile_print
- #
- function fastfile_rm() {
- fastfile_print "$1"
- rm "$(fastfile_resolv "$1")"
- unalias "${fastfile_var_prefix}${1}"
- }
- #
- # Generate the aliases for the shortcuts
- #
- function fastfile_sync() {
- for f in "${fastfile_dir}"/*(N); do
- file=$(basename "$f") # To enable simpler handling of spaces in file names
- varkey=$(echo "$file" | tr " " "_")
- alias -g "${fastfile_var_prefix}${varkey}"="'$(fastfile_get "$file")'"
- done
- }
- ##################################
- # Shortcuts
- alias ff=fastfile
- alias ffp=fastfile_print
- alias ffrm=fastfile_rm
- alias ffls=fastfile_ls
- alias ffsync=fastfile_sync
- ##################################
- # Init
- fastfile_sync
|