~pi/aka

ref: eb3bd5994f556948cbb249ece77da21aea0f646f aka/README -rw-r--r-- 2.2 KiB
eb3bd599Paul Ivanov tested on 3 platforms 1 year, 3 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Also Known As

Simple, persistent, shell-based command aliasing

Usage: aka alias               show stored aliases
       aka alias NAME CMD...   store an alias for CMD
       aka NAME [...]          run CMD, optionally with more arguments

By default, aliases are stored in the `.aka` file of the current working
directory. Optionally, the location of that file can be modified by setting the
AKA_FILE enviornment variable. Tested on Debian, OpenBSD, and OpenWRT, aka uses
portable shell syntax and should work everywhere that has typical /bin/sh


Examples:

    $ aka alias demo more

    $ aka demo --version
    more from util-linux 2.36

    $ aka alias demo git

    $ aka demo --version
    git version 2.28.0

The command you alias can have parameters

    $ aka alias l ls -f

    $ aka l
    .aka .. aka aka_tiny . README .git

And you can pass additional parameters

    $ aka l -tR
    .. aka_tiny aka .git .aka README .

You can see all of the currently stored aliases

    $ aka alias
    l='ls -f'
    demo='git'

And edit them using your favorite text editor

    $ cat .aka
    alias demo='git'
    alias l='ls -f'

Everything that is not aliased will get executed as a regular command.

    $ aka python3 --version
    Python 3.8.6


## How it works

aka is a tiny portable shell script that gets executed via /bin/sh, sources
AKA_FILE and evals the positional parameters, thus applying aliases and
whatever other shell script shenanigans stored in AKA_FILE.

For example, this means that you can put something like

    alias my='AKA_FILE=~/.my_aliases aka'

in your shell's startup files, and thereafter use the `my` command as an `aka`
invocation that always sources ~/.my_aliases file in your home directory,
regardless of where you run it.

## Installation

Grab aka, make it executable, and place it somewhere in your path.

## Notes

Initial prototype uses aliases, which may not work for programs that depend on
establishing their behavior based on the `argv[0]` name they were called by
(busybox, for example).


## Ideas

[x] AKA_FILE environment variable set to the file containing the desired
    shellscript file to source. Otherwise we look for the `.aka` file in the
    current directory.

[ ] `aka unalias` command?