terminal

The terminal package calls Bash, Unix, POSIX, Git, and other command-line tools from Python. It is useful for small build scripts, local automation, examples, and command-line experiments that should stay close to shell syntax.

Basic Commands

from domonic.terminal import date, df, du, echo, ls, pwd

print(pwd())
print(ls())
print(ls("-al"))
print(echo("hello"))
print(date())
print(df())
print(du())

Small Automation Scripts

from domonic.terminal import grep, ls, pwd

print("cwd:", pwd())
print("python files:", ls("*.py"))

print(grep("domonic README.md"))

Git and Build Helpers

from domonic.terminal import git, make

print(git("status", "--short"))
print(make("--version"))

Run Arbitrary Commands

from domonic.terminal import command

print(command.run("echo hi"))

domonic.terminal

  • call command line functions in python 3

exception domonic.terminal.TerminalException(error=None, message='An error message was received from terminal')[source]

Bases: Exception

raised if the terminal throws an exception

class domonic.terminal.command(*args, **kwargs)[source]

Bases: object

wrapper class for all terminal commands

static run()[source]

runs any command on the terminal

Parameters:

cmd (str) – The command you want to run on the terminal

Returns:

the response as a string

Return type:

str

static run_args(args, **kwargs)[source]

Run a command without shell parsing and return its stdout.

run_command()[source]
class domonic.terminal.cd(*args, **kwargs)[source]

Bases: command

NOTE - ‘cd’ does not run on terminal - cd is pointless as session opens and closes - so is overridden to change dirs via pure python

run_command()[source]
class domonic.terminal.ls(*args, **kwargs)

Bases: command

iterable = True
name = 'ls'
class domonic.terminal.ln(*args, **kwargs)

Bases: command

name = 'ln'
class domonic.terminal.rmdir(*args, **kwargs)

Bases: command

name = 'rmdir'
class domonic.terminal.touch(*args, **kwargs)

Bases: command

name = 'touch'
class domonic.terminal.df(*args, **kwargs)

Bases: command

iterable = True
name = 'df'
class domonic.terminal.du(*args, **kwargs)

Bases: command

iterable = True
name = 'du'
class domonic.terminal.ps(*args, **kwargs)

Bases: command

iterable = True
name = 'ps'
class domonic.terminal.cat(*args, **kwargs)

Bases: command

iterable = True
name = 'cat'
class domonic.terminal.mv(*args, **kwargs)

Bases: command

name = 'mv'
class domonic.terminal.cp(*args, **kwargs)

Bases: command

name = 'cp'
class domonic.terminal.rm(*args, **kwargs)

Bases: command

name = 'rm'
class domonic.terminal.chmod(*args, **kwargs)

Bases: command

name = 'chmod'
class domonic.terminal.chown(*args, **kwargs)

Bases: command

name = 'chown'
class domonic.terminal.users(*args, **kwargs)

Bases: command

iterable = True
name = 'users'
class domonic.terminal.useradd(*args, **kwargs)

Bases: command

name = 'useradd'
class domonic.terminal.userdel(*args, **kwargs)

Bases: command

name = 'userdel'
class domonic.terminal.groups(*args, **kwargs)

Bases: command

name = 'groups'
class domonic.terminal.groupadd(*args, **kwargs)

Bases: command

name = 'groupadd'
class domonic.terminal.groupdel(*args, **kwargs)

Bases: command

name = 'groupdel'
class domonic.terminal.uniq(*args, **kwargs)

Bases: command

name = 'uniq'
class domonic.terminal.sort(*args, **kwargs)

Bases: command

name = 'sort'
class domonic.terminal.diff(*args, **kwargs)

Bases: command

name = 'diff'
class domonic.terminal.ssh(*args, **kwargs)

Bases: command

name = 'ssh'
class domonic.terminal.scp(*args, **kwargs)

Bases: command

name = 'scp'
class domonic.terminal.less(*args, **kwargs)

Bases: command

name = 'less'
class domonic.terminal.head(*args, **kwargs)

Bases: command

iterable = True
name = 'head'
class domonic.terminal.tail(*args, **kwargs)

Bases: command

iterable = True
name = 'tail'
class domonic.terminal.uptime(*args, **kwargs)

Bases: command

name = 'uptime'
class domonic.terminal.bash(*args, **kwargs)

Bases: command

name = 'bash'
class domonic.terminal.shutdown(*args, **kwargs)

Bases: command

name = 'shutdown'
class domonic.terminal.reboot(*args, **kwargs)

Bases: command

name = 'reboot'
class domonic.terminal.killall(*args, **kwargs)

Bases: command

name = 'killall'
class domonic.terminal.mkfile(*args, **kwargs)

Bases: command

name = 'mkfile'
class domonic.terminal.ifconfig(*args, **kwargs)

Bases: command

iterable = True
name = 'ifconfig'
class domonic.terminal.ipconfig(*args, **kwargs)

Bases: command

iterable = True
name = 'ipconfig'
class domonic.terminal.finger(*args, **kwargs)

Bases: command

name = 'finger'
class domonic.terminal.passwd(*args, **kwargs)

Bases: command

name = 'passwd'
class domonic.terminal.whoami(*args, **kwargs)

Bases: command

name = 'whoami'
class domonic.terminal.history(*args, **kwargs)[source]

Bases: command

run_command()[source]
class domonic.terminal.ping(*args, **kwargs)

Bases: command

iterable = True
name = 'ping'
wait = True
class domonic.terminal.man(*args, **kwargs)

Bases: command

name = 'man'
class domonic.terminal.find(*args, **kwargs)

Bases: command

name = 'find'
class domonic.terminal.awk(*args, **kwargs)

Bases: command

name = 'awk'
class domonic.terminal.grep(*args, **kwargs)

Bases: command

name = 'grep'
class domonic.terminal.cut(*args, **kwargs)

Bases: command

name = 'cut'
class domonic.terminal.apt(*args, **kwargs)

Bases: command

name = 'apt'
class domonic.terminal.gunzip(*args, **kwargs)

Bases: command

name = 'gunzip'
class domonic.terminal.tar(*args, **kwargs)

Bases: command

name = 'tar'
class domonic.terminal.gzip(*args, **kwargs)

Bases: command

name = 'gzip'
class domonic.terminal.cron(*args, **kwargs)

Bases: command

name = 'cron'
class domonic.terminal.crontab(*args, **kwargs)

Bases: command

name = 'crontab'
class domonic.terminal.xargs(*args, **kwargs)

Bases: command

name = 'xargs'
class domonic.terminal.nautilus(*args, **kwargs)

Bases: command

name = 'nautilus'
class domonic.terminal.date(*args, **kwargs)

Bases: command

name = 'date'
class domonic.terminal.cal(*args, **kwargs)

Bases: command

name = 'cal'
class domonic.terminal.bc(*args, **kwargs)

Bases: command

name = 'bc'
class domonic.terminal.rsync(*args, **kwargs)

Bases: command

name = 'rsync'
class domonic.terminal.git(*args, **kwargs)

Bases: command

name = 'git'
class domonic.terminal.wget(*args, **kwargs)

Bases: command

name = 'wget'
class domonic.terminal.nmap(*args, **kwargs)

Bases: command

name = 'nmap'
class domonic.terminal.nohup(*args, **kwargs)

Bases: command

name = 'nohup'
class domonic.terminal.python(*args, **kwargs)

Bases: command

name = 'python'
class domonic.terminal.npm(*args, **kwargs)

Bases: command

name = 'npm'
class domonic.terminal.cowsay(*args, **kwargs)

Bases: command

name = 'cowsay'
class domonic.terminal.pip(*args, **kwargs)

Bases: command

name = '/home/docs/checkouts/readthedocs.org/user_builds/domonic/envs/latest/bin/python -m pip'
class domonic.terminal.say(*args, **kwargs)

Bases: command

name = 'say'
class domonic.terminal.gcc(*args, **kwargs)

Bases: command

name = 'gcc'
class domonic.terminal.jq(*args, **kwargs)

Bases: command

name = 'jq'
class domonic.terminal.curl(*args, **kwargs)

Bases: command

name = 'curl'
class domonic.terminal.ffmpeg(*args, **kwargs)

Bases: command

name = 'ffmpeg'
class domonic.terminal.convert(*args, **kwargs)

Bases: command

name = 'convert'
class domonic.terminal.figlet(*args, **kwargs)

Bases: command

name = 'figlet'
class domonic.terminal.banner(*args, **kwargs)

Bases: command

name = 'banner'
class domonic.terminal.ar(*args, **kwargs)

Bases: command

name = 'ar'
class domonic.terminal.asa(*args, **kwargs)

Bases: command

name = 'asa'
class domonic.terminal.at(*args, **kwargs)

Bases: command

name = 'at'
class domonic.terminal.basename(*args, **kwargs)

Bases: command

name = 'basename'
class domonic.terminal.batch(*args, **kwargs)

Bases: command

name = 'batch'
class domonic.terminal.cc(*args, **kwargs)

Bases: command

name = 'cc'
class domonic.terminal.cflow(*args, **kwargs)

Bases: command

name = 'cflow'
class domonic.terminal.chgrp(*args, **kwargs)

Bases: command

name = 'chgrp'
class domonic.terminal.cksum(*args, **kwargs)

Bases: command

name = 'cksum'
class domonic.terminal.comm(*args, **kwargs)

Bases: command

name = 'comm'
class domonic.terminal.compress(*args, **kwargs)

Bases: command

name = 'compress'
class domonic.terminal.csplit(*args, **kwargs)

Bases: command

name = 'csplit'
class domonic.terminal.ctags(*args, **kwargs)

Bases: command

name = 'ctags'
class domonic.terminal.cxref(*args, **kwargs)

Bases: command

name = 'cxref'
class domonic.terminal.dd(*args, **kwargs)

Bases: command

name = 'dd'
class domonic.terminal.delta(*args, **kwargs)

Bases: command

name = 'delta'
class domonic.terminal.dirname(*args, **kwargs)

Bases: command

name = 'dirname'
class domonic.terminal.ed(*args, **kwargs)

Bases: command

name = 'ed'
class domonic.terminal.env(*args, **kwargs)

Bases: command

name = 'env'
class domonic.terminal.ex(*args, **kwargs)

Bases: command

name = 'ex'
class domonic.terminal.expand(*args, **kwargs)

Bases: command

name = 'expand'
class domonic.terminal.expr(*args, **kwargs)

Bases: command

name = 'expr'
class domonic.terminal.file(*args, **kwargs)

Bases: command

name = 'file'
class domonic.terminal.fold(*args, **kwargs)

Bases: command

name = 'fold'
class domonic.terminal.fort77(*args, **kwargs)

Bases: command

name = 'fort77'
class domonic.terminal.fuser(*args, **kwargs)

Bases: command

name = 'fuser'
class domonic.terminal.gencat(*args, **kwargs)

Bases: command

name = 'gencat'
class domonic.terminal.get(*args, **kwargs)

Bases: command

name = 'get'
class domonic.terminal.getconf(*args, **kwargs)

Bases: command

name = 'getconf'
class domonic.terminal.iconv(*args, **kwargs)

Bases: command

name = 'iconv'
class domonic.terminal.ipcrm(*args, **kwargs)

Bases: command

name = 'ipcrm'
class domonic.terminal.ipcs(*args, **kwargs)

Bases: command

name = 'ipcs'
class domonic.terminal.join(*args, **kwargs)

Bases: command

name = 'join'
class domonic.terminal.lex(*args, **kwargs)

Bases: command

name = 'lex'
class domonic.terminal.link(*args, **kwargs)

Bases: command

name = 'link'
class domonic.terminal.locale(*args, **kwargs)

Bases: command

name = 'locale'
class domonic.terminal.localedef(*args, **kwargs)

Bases: command

name = 'localedef'
class domonic.terminal.logger(*args, **kwargs)

Bases: command

name = 'logger'
class domonic.terminal.logname(*args, **kwargs)

Bases: command

name = 'logname'
class domonic.terminal.lp(*args, **kwargs)

Bases: command

name = 'lp'
class domonic.terminal.m4(*args, **kwargs)

Bases: command

name = 'm4'
class domonic.terminal.mailx(*args, **kwargs)

Bases: command

name = 'mailx'
class domonic.terminal.make(*args, **kwargs)

Bases: command

name = 'make'
class domonic.terminal.mesg(*args, **kwargs)

Bases: command

name = 'mesg'
class domonic.terminal.mkdir(*args, **kwargs)

Bases: command

name = 'mkdir'
class domonic.terminal.mkfifo(*args, **kwargs)

Bases: command

name = 'mkfifo'
class domonic.terminal.more(*args, **kwargs)

Bases: command

name = 'more'
class domonic.terminal.newgrp(*args, **kwargs)

Bases: command

name = 'newgrp'
class domonic.terminal.nice(*args, **kwargs)

Bases: command

name = 'nice'
class domonic.terminal.nl(*args, **kwargs)

Bases: command

name = 'nl'
class domonic.terminal.nm(*args, **kwargs)

Bases: command

name = 'nm'
class domonic.terminal.od(*args, **kwargs)

Bases: command

name = 'od'
class domonic.terminal.paste(*args, **kwargs)

Bases: command

name = 'paste'
class domonic.terminal.patch(*args, **kwargs)

Bases: command

name = 'patch'
class domonic.terminal.pathchk(*args, **kwargs)

Bases: command

name = 'pathchk'
class domonic.terminal.pax(*args, **kwargs)

Bases: command

name = 'pax'
class domonic.terminal.pr(*args, **kwargs)

Bases: command

name = 'pr'
class domonic.terminal.prs(*args, **kwargs)

Bases: command

name = 'prs'
class domonic.terminal.qalter(*args, **kwargs)

Bases: command

name = 'qalter'
class domonic.terminal.qdel(*args, **kwargs)

Bases: command

name = 'qdel'
class domonic.terminal.qhold(*args, **kwargs)

Bases: command

name = 'qhold'
class domonic.terminal.qmove(*args, **kwargs)

Bases: command

name = 'qmove'
class domonic.terminal.qmsg(*args, **kwargs)

Bases: command

name = 'qmsg'
class domonic.terminal.qrerun(*args, **kwargs)

Bases: command

name = 'qrerun'
class domonic.terminal.qrls(*args, **kwargs)

Bases: command

name = 'qrls'
class domonic.terminal.qselect(*args, **kwargs)

Bases: command

name = 'qselect'
class domonic.terminal.qsig(*args, **kwargs)

Bases: command

name = 'qsig'
class domonic.terminal.qstat(*args, **kwargs)

Bases: command

name = 'qstat'
class domonic.terminal.qsub(*args, **kwargs)

Bases: command

name = 'qsub'
class domonic.terminal.renice(*args, **kwargs)

Bases: command

name = 'renice'
class domonic.terminal.rmdel(*args, **kwargs)

Bases: command

name = 'rmdel'
class domonic.terminal.sact(*args, **kwargs)

Bases: command

name = 'sact'
class domonic.terminal.sccs(*args, **kwargs)

Bases: command

name = 'sccs'
class domonic.terminal.sed(*args, **kwargs)

Bases: command

name = 'sed'
class domonic.terminal.sh(*args, **kwargs)

Bases: command

name = 'sh'
class domonic.terminal.sleep(*args, **kwargs)

Bases: command

name = 'sleep'
class domonic.terminal.split(*args, **kwargs)

Bases: command

name = 'split'
class domonic.terminal.strings(*args, **kwargs)

Bases: command

name = 'strings'
class domonic.terminal.strip(*args, **kwargs)

Bases: command

name = 'strip'
class domonic.terminal.stty(*args, **kwargs)

Bases: command

name = 'stty'
class domonic.terminal.tabs(*args, **kwargs)

Bases: command

name = 'tabs'
class domonic.terminal.talk(*args, **kwargs)

Bases: command

name = 'talk'
class domonic.terminal.tee(*args, **kwargs)

Bases: command

name = 'tee'
class domonic.terminal.test(*args, **kwargs)

Bases: command

name = 'test'
class domonic.terminal.time(*args, **kwargs)

Bases: command

name = 'time'
class domonic.terminal.tput(*args, **kwargs)

Bases: command

name = 'tput'
class domonic.terminal.tr(*args, **kwargs)

Bases: command

name = 'tr'
class domonic.terminal.true(*args, **kwargs)

Bases: command

name = 'true'
class domonic.terminal.tsort(*args, **kwargs)

Bases: command

name = 'tsort'
class domonic.terminal.tty(*args, **kwargs)

Bases: command

name = 'tty'
class domonic.terminal.uname(*args, **kwargs)

Bases: command

name = 'uname'
class domonic.terminal.uncompress(*args, **kwargs)

Bases: command

name = 'uncompress'
class domonic.terminal.unexpand(*args, **kwargs)

Bases: command

name = 'unexpand'
class domonic.terminal.unget(*args, **kwargs)

Bases: command

name = 'unget'
class domonic.terminal.unlink(*args, **kwargs)

Bases: command

name = 'unlink'
class domonic.terminal.uucp(*args, **kwargs)

Bases: command

name = 'uucp'
class domonic.terminal.uudecode(*args, **kwargs)

Bases: command

name = 'uudecode'
class domonic.terminal.uuencode(*args, **kwargs)

Bases: command

name = 'uuencode'
class domonic.terminal.uustat(*args, **kwargs)

Bases: command

name = 'uustat'
class domonic.terminal.uux(*args, **kwargs)

Bases: command

name = 'uux'
class domonic.terminal.val(*args, **kwargs)

Bases: command

name = 'val'
class domonic.terminal.wc(*args, **kwargs)

Bases: command

name = 'wc'
class domonic.terminal.what(*args, **kwargs)

Bases: command

name = 'what'
class domonic.terminal.who(*args, **kwargs)

Bases: command

name = 'who'
class domonic.terminal.write(*args, **kwargs)

Bases: command

name = 'write'
class domonic.terminal.yacc(*args, **kwargs)

Bases: command

name = 'yacc'
class domonic.terminal.zcat(*args, **kwargs)

Bases: command

name = 'zcat'
class domonic.terminal.alias(*args, **kwargs)

Bases: command

name = 'alias'
class domonic.terminal.bg(*args, **kwargs)

Bases: command

name = 'bg'
class domonic.terminal.bind(*args, **kwargs)

Bases: command

name = 'bind'
class domonic.terminal.builtin(*args, **kwargs)

Bases: command

name = 'builtin'
class domonic.terminal.caller(*args, **kwargs)

Bases: command

name = 'caller'
class domonic.terminal.compgen(*args, **kwargs)

Bases: command

name = 'compgen'
class domonic.terminal.complete(*args, **kwargs)

Bases: command

name = 'complete'
class domonic.terminal.compopt(*args, **kwargs)

Bases: command

name = 'compopt'
class domonic.terminal.declare(*args, **kwargs)

Bases: command

name = 'declare'
class domonic.terminal.dirs(*args, **kwargs)

Bases: command

name = 'dirs'
class domonic.terminal.disown(*args, **kwargs)

Bases: command

name = 'disown'
class domonic.terminal.echo(*args, **kwargs)

Bases: command

name = 'echo'
class domonic.terminal.enable(*args, **kwargs)

Bases: command

name = 'enable'
class domonic.terminal.exit(*args, **kwargs)

Bases: command

name = 'exit'
class domonic.terminal.export(*args, **kwargs)

Bases: command

name = 'export'
class domonic.terminal.fc(*args, **kwargs)

Bases: command

name = 'fc'
class domonic.terminal.fg(*args, **kwargs)

Bases: command

name = 'fg'
class domonic.terminal.getopts(*args, **kwargs)

Bases: command

name = 'getopts'
class domonic.terminal.jobs(*args, **kwargs)

Bases: command

name = 'jobs'
class domonic.terminal.kill(*args, **kwargs)

Bases: command

name = 'kill'
class domonic.terminal.let(*args, **kwargs)

Bases: command

name = 'let'
class domonic.terminal.local(*args, **kwargs)

Bases: command

name = 'local'
class domonic.terminal.logout(*args, **kwargs)

Bases: command

name = 'logout'
class domonic.terminal.mapfile(*args, **kwargs)

Bases: command

name = 'mapfile'
class domonic.terminal.popd(*args, **kwargs)

Bases: command

name = 'popd'
class domonic.terminal.printf(*args, **kwargs)

Bases: command

name = 'printf'
class domonic.terminal.pushd(*args, **kwargs)

Bases: command

name = 'pushd'
class domonic.terminal.pwd(*args, **kwargs)

Bases: command

name = 'pwd'
class domonic.terminal.read(*args, **kwargs)

Bases: command

name = 'read'
class domonic.terminal.readarray(*args, **kwargs)

Bases: command

name = 'readarray'
class domonic.terminal.readonly(*args, **kwargs)

Bases: command

name = 'readonly'
class domonic.terminal.shift(*args, **kwargs)

Bases: command

name = 'shift'
class domonic.terminal.shopt(*args, **kwargs)

Bases: command

name = 'shopt'
class domonic.terminal.source(*args, **kwargs)

Bases: command

name = 'source'
class domonic.terminal.suspend(*args, **kwargs)

Bases: command

name = 'suspend'
class domonic.terminal.times(*args, **kwargs)

Bases: command

name = 'times'
class domonic.terminal.trap(*args, **kwargs)

Bases: command

name = 'trap'
class domonic.terminal.typeset(*args, **kwargs)

Bases: command

name = 'typeset'
class domonic.terminal.ulimit(*args, **kwargs)

Bases: command

name = 'ulimit'
class domonic.terminal.umask(*args, **kwargs)

Bases: command

name = 'umask'
class domonic.terminal.unalias(*args, **kwargs)

Bases: command

name = 'unalias'
class domonic.terminal.unset(*args, **kwargs)

Bases: command

name = 'unset'
class domonic.terminal.wait(*args, **kwargs)

Bases: command

name = 'wait'