HOME

TheInfoList



OR:

In
computer programming Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
, a one-liner program originally was textual input to the
command-line A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive command (computing), commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invokin ...
of an operating system
shell Shell may refer to: Architecture and design * Shell (structure), a thin structure ** Concrete shell, a thin shell of concrete, usually with no interior columns or exterior buttresses ** Thin-shell structure Science Biology * Seashell, a hard o ...
that performed some function in just one line of input. In the present day, a one-liner can be * an
expression Expression may refer to: Linguistics * Expression (linguistics), a word, phrase, or sentence * Fixed expression, a form of words with a specific meaning * Idiom, a type of fixed expression * Metaphorical expression, a particular word, phrase, ...
written in the language of the shell; * the invocation of an interpreter together with program source for the interpreter to run; * the invocation of a
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
together with source to compile and instructions for executing the compiled program. Certain dynamic languages for scripting, such as AWK, sed, and
Perl Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
, have traditionally been adept at expressing one-liners. Shell interpreters such as
Unix shell A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system t ...
s or
Windows PowerShell PowerShell is a task automation and configuration management program from Microsoft, consisting of a command-line shell and the associated scripting language. Initially a Windows component only, known as Windows PowerShell, it was made open-s ...
allow for the construction of powerful one-liners. The use of the phrase ''one-liner'' has been widened to also include program-source for any language that does something useful in one line.


History

The concept of a one-liner program has been known since the 1960s with the release of the APL programming language. With its terse syntax and powerful mathematical operators, APL allowed useful programs to be represented in a few symbols. In the 1970s, one-liners became associated with the rise of the home computer and
BASIC BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
. Computer magazines published
type-in program A type-in program or type-in listing was computer source code printed in a home computer magazine or book. It was meant to be entered via the Keyboard (computing), keyboard by the reader and then saved to Compact Cassette (data), cassette tape or ...
s in many dialects of BASIC. Some magazines devoted regular columns solely to impressive short and one-line programs. The word ''One-liner'' also has two references in the index of the book
The AWK Programming Language ''The AWK Programming Language'' is a well-known 1988 book written by Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger and published by Addison-Wesley, often referred to as the gray book. The book describes the AWK programming language ...
(the book is often referred to by the abbreviation ''TAPL''). It explains the programming language AWK, which is part of the
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
. The authors explain the birth of the ''one-liner'' paradigm with their daily work on early
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
machines: Notice that this original definition of a ''one-liner'' implies immediate execution of the program without any compilation. So, in a strict sense, only source code for interpreted languages qualifies as a ''one-liner''. But this strict understanding of a ''one-liner'' was broadened in 1985 when the IOCCC introduced the category of ''Best One Liner'' for C, which is a compiled language.


Examples

One-liners are also used to show off the differential expressive power of
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming l ...
s. Frequently, one-liners are used to demonstrate programming ability. Contests are often held to see who can create the most exceptional one-liner.


BASIC

A single line of BASIC can typically hold up to 255 characters, and one liners ranged from simple games to graphical demos. One of the better-known demo one-liners is colloquially known as ''10PRINT'', written for the Commodore 64: 10 PRINT CHR$(205.5+RND(1)); : GOTO 10


C

The following example is a C program (a winning entry in the "Best one-liner" category of the IOCCC). main(int c,char**v)m(char*s,char*t) This one-liner program is a glob pattern matcher. It understands the glob characters `*' meaning `zero or more characters' and `?' meaning exactly one character, just like most
Unix shell A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system t ...
s. Run it with two args, the string and the glob pattern. The exit status is 0 (shell true) when the pattern matches, 1 otherwise. The glob pattern must match the whole string, so you may want to use * at the beginning and end of the pattern if you are looking for something in the middle. Examples: $ ./a.out foo 'f??'; echo $? $ ./a.out 'best short program' '??st*o**p?*'; echo $?


AWK

The ''TAPL'' book contains 20 examples of ''one-liners'' at the end of the book's first chapter. Here are the very first of them: # Print the total number of input lines (like wc -l): END # Print the tenth input line: NR

10
# Print the last field of every input line:


J

Here are examples in J: * A function avg to return the average of a list of numbers: avg=: +/ % # *
Quicksort Quicksort is an efficient, general-purpose sorting algorithm. Quicksort was developed by British computer scientist Tony Hoare in 1959 and published in 1961, it is still a commonly used algorithm for sorting. Overall, it is slightly faster than ...
: quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)


Perl

Here are examples in the
Perl Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming l ...
: * Look for duplicate words perl -0777 -ne 'print "$.: doubled $_\n" while /\b(\w+)\b\s+\b\1\b/gi' * Find Palindromes in /usr/dict/words perl -lne 'print if $_ eq reverse' /usr/dict/words * in-place edit of *.c files changing all foo to bar perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c Many one-liners are practical. For example, the following
Perl Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
one-liner will reverse all the bytes in a file: perl -0777e 'print scalar reverse <>' filename While most
Perl Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
one-liners are imperative, Perl's support for anonymous functions, closures, map, filter (grep) and fold (List::Util::reduce) allows the creation of 'functional' one-liners. This one-liner creates a function that can be used to return a list of primes up to the value of the first parameter: my $z = sub { grep { $a=$_; !grep { !($a % $_) } (2..$_-1)} (2..$_[0]) } It can be used on the command line, like this: perl -e'$,=",";print sub { grep { $a=$_; !grep { !($a % $_) } (2..$_-1)} (2..$_[0]) }->(shift)' number to print out a comma-separated list of primes in the range 2 - number.


Haskell

The following
Haskell Haskell () is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming lan ...
program is a one-liner: it sorts its input lines ASCIIbetically. main = (mapM_ putStrLn . Data.List.sort . lines) =<< getContents -- In ghci a qualified name like Data.List.sort will work, although as a standalone executable you'd need to import Data.List. An even shorter version: main = interact (unlines . Data.List.sort . lines) -- Ditto. Usable on the command line like: cat filename , ghc -e "interact (unlines . Data.List.sort . lines)"


Racket

The following Racket program is equivalent to the above Haskell example: #lang racket (for-each displayln (sort (port->lines) string and this can be used on the command line as follows: racket -e '(for-each displayln (sort (port->lines) string'


Python

Performing one-liners directly on the Unix command line can be accomplished by using Python's -cmd flag (-c for short), and typically requires the import of one or more modules. Statements are separated using ";" instead of newlines. For example, to print the last field of unix long listing: ls -l , python -c " import sys; ys.stdout.write(' '.join([line.split(' ')[-1)) for line in sys.stdin">ine.split('_')[-1.html" ;"title="ys.stdout.write(' '.join([line.split(' ')[-1">ys.stdout.write(' '.join([line.split(' ')[-1)) for line in sys.stdin/syntaxhighlight>"


Python wrappers

Several open-source scripts have been developed to facilitate the construction of Python one-liners. Scripts such as
pyp
o
Pyline
import commonly used modules and provide more human-readable variables in an attempt to make Python functionality more accessible on the command line. Here is a redo of the above example (printing the last field of a unix long listing): ls -l "> pyp "whitespace pyline "words[-1 # "words" represents each line split on white space in pyline


Executable libraries

The Python CGIHTTPServer module for example is also an executable library that performs as a web server with CGI. To start the web server enter: $ python -m CGIHTTPServer Serving HTTP on 0.0.0.0 port 8000 …


Tcl

Tcl (Tool Command Language) is a dynamic programming/scripting language based on concepts of Lisp, C, and Unix shells. It can be used interactively, or by running scripts (programs) which can use a package system for structuring.Following are direct quotes from that are available under the
Creative Commons Attribution-ShareAlike License A Creative Commons (CC) license is one of several public copyright licenses that enable the free distribution of an otherwise copyrighted "work".A "work" is any creative material made by a person. A painting, a graphic, a book, a song/lyri ...
.
Many strings are also well-formed lists. Every simple word is a list of length one, and elements of longer lists are separated by whitespace. For instance, a string that corresponds to a list of three elements: set example {foo bar grill} Strings with unbalanced quotes or braces, or non-space characters directly following closing braces, cannot be parsed as lists directly. You can explicitly split them to make a list. The "constructor" for lists is of course called list. It's recommended to use when elements come from variable or command substitution (braces won't do that). As Tcl commands are lists anyway, the following is a full substitute for the list command: proc list args {set args}


Windows PowerShell

Finding palindromes in file words.txt Get-Content words.txt , Where { $_ -eq -join $_ $_.length-1)..0} Piping semantics in PowerShell help enable complex scenarios with one-liner programs. This one-liner in PowerShell script takes a list of names and counts from a comma-separated value file, and returns the sum of the counts for each name. ipcsv .\fruit.txt –H F, C, Group F, %{@{"$($_.Name)"=($_.Group, measure C -sum).Sum, sort value


See also

*
Bookmarklet A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands that add new features to the browser. They are stored as the URL of a bookmark in a web browser or as a hyperlink on a web page. Bookmarklets are usually small ...
* Tcl


References


External links

{{Sister project links, commons=Perl (programming language), v=Topic:Perl, n=no, q=Perl, s=no, b=Perl Programming * Perl Programming links *
Wikibooks Wikibooks (previously called ''Wikimedia Free Textbook Project'' and ''Wikimedia-Textbooks'') is a wiki-based Wikimedia project hosted by the Wikimedia Foundation for the creation of free content digital textbooks and annotated texts that ...
Free Tcl Programming introduction & download pdf
SourceForge
download website and also Multiple computer languages
Tcl Sources
main Tcl and Tk source code download website
Tcler's Wiki
Tcl/Tk scripts and reference clearing house
TkDocs
Tcl/Tk Official documentation and archives Computer programming Articles with example Haskell code Articles with example C code Articles with example Perl code Articles with example Python (programming language) code Articles with example Racket code