Skip to content
subjective but sensible defaults for shell use. Ubuntu, OSX, FreeBSD tested.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

These commands attempt to introduce some humanism to POSIX users by providing sensible defaults to basic commands and changing the basic functionality of some so as to free neurons for use on something other than remembering command flags. This effort ignores with intent the response "it only takes you one more second to do it the normal way."

Examples: cd use typically includes only one argument: a directory. With that assumption this seems absurd: cd ./to\ some\ directory. And history and ps are rarely used without grep. find is typically used to fuzzy search for a file name so why isn't -iname "*$@*" the default?

Some commands herein alter workflow more intrusively. The c command, intended to replace cd, will search forward and backward looking for a directory that matches any part of the argument filter. Though subtle this change makes moving through the file systems similar to using command launchers found in modern OS UI's (cmd+space osx, alt+F2 ubuntu). The ap command unifies package searching, installation and information making finding needed dependencies or files easier. sshrc can be used to carry humanism (inspired by Russen91's sshrc). alias ssh=sshrc and take it wherever you go.


To load all commands for each new terminal shell (bash/zsh/sh compatible) source the file in your profile or bashrc:


Alternatively you can load commands selectively source <cmd> or execute help to see list of commands.

You are likely use ap and in some cases dbg via sudo/root so link these scripts into a PATH'ed bin:

sudo ln -s <humanism.sh_path>/dbg /usr/local/bin
sudo ln -s <humanism.sh_path>/ap.<version> /usr/local/bin

Commands have been tested on OSX, Ubuntu and FreeBSD and various virtual hosts and embedded devices. If you find errors please execute the dependency test script sh -x test/ and submit an issue on github.


c (cd)

c            go to last dir
c <FiLteR>   go to path, if not in cwd search forward and backward for
             *FiLtEr* in tree

example c use


c <fIlTeR>            go to path or find and goto filter  
                      1. if filter is path, goto  
                      2. if filter is name in tag db, goto  
                      3. if filter found under cwd, goto  
                      4. if filter found above cwd, goto
c <fIlTeR> <fIlTeR>   filter cascading. find filter, then Nth filter under it  
c <tag> <tag>         tag cascading
c <tag> <fIlTeR>      combined. many tags, one filter  
l <tag> <fIlTeR>      ls that adheres to all of the above  

Managing Tags:

Tags get created either manually using these commands or automatically when a c fIlTeR is found.

cc                    list tags  
cc <tag>              add/remove/rename <tag> for pwd  
                      prompt to delete if <tag> exists  
cc d   <tag>  
cc del <tag>          explicit delete  

To disable auto tagging set HUMANISM_C_TAG_AUTO=0 before sourcing


find <filter>          find *FiLtEr* anywhere under cwd
find <path> <filter>   find *FiLtEr* anywhere under path
find $1 $2 $3 ...      pass through to normal find

example find use


history            list
history <filter>   greped history

example history use


ps                            list
ps <filter>                   filtered
ps <filter> | killps [-SIG]   kill procs


Used to create a record of work by appending commands and messages to ./ from bash history.

log          	   show recent commands and select which are recorded
log some message   append echo message to
log <N>      	   append Nth cmd from last. e.g. ``log 1``    adds last cmd


Unify apt-get, apt-cache and dpkg on Linux, homebrew on OSX or pkgng on Freebsd. Makes searching for needed files or packages a bit easier.

Install package

Re-install package

Uninstall and purge of all deps no longer required

Install security updates

Show packages available or already installed

Show package for file

Show packages that would provide a file if installed

Show any package that contains string

information about package

show files installed by package

pass through any other command on to apt-get


Unify strace|dtruss and lsof.

 strace all child processes of supplied command, pid or proc name

 Show open files of an already running processes and its children, by name

 Show pid's touching file

 using strings alone give .so dependency for file
 use: dbg libtree <TARGET> [ignorelibs]
 ie:  dbg libtree <TARGET> []

 pick an executable and it's dependencies.
 e.g. grab arm executables from one firmware and use on another

 tries to determine libs with ldd first, then dbg libtree

 use: dbg canexe <TARGET> [ignorelibs]
 ie:  dbg canexe <TARGET> []

 pipe strings into c++filt to demangle names


carry all of the above commands with you. Will source myrc file from base directory, if it exists. Personally I've set alias ssh=sshrc in myrc so that I don't forget to carry this with me.

You can’t perform that action at this time.