In
computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
, a one-liner program originally was textual input to the
command line 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
Science Biology
* Seashell, a hard outer layer of a marine ani ...
that performed some function in just one line of input. In the present day, a one-liner can be
* an
expression 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 Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
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 high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
, have traditionally been adept at expressing one-liners.
Shell interpreters such as
Unix shell
A Unix shell is a Command-line_interface#Command-line_interpreter, command-line interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command languag ...
s or
Windows PowerShell 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
Home computers were a class of microcomputers that entered the market in 1977 and became common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a s ...
and
BASIC
Basic or BASIC may refer to:
Science and technology
* BASIC, a computer programming language
* Basic (chemistry), having the properties of a base
* Basic access authentication, in HTTP
Entertainment
* Basic (film), ''Basic'' (film), a 2003 film
...
. Computer magazines published
type-in programs 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 languag ...
'' (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, multi-user 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 and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
. 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, multi-user 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
Compiled language categorizes a programming language as used with a compiler and generally implies not used with an interpreter. But, since any language can theoretically be compiled or interpreted the term lacks clarity. In practice, for some lan ...
.
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.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
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_interface#Command-line_interpreter, command-line interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command languag ...
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 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 languag ...
'' 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 high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
:
* 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 high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
one-liner will reverse all the bytes in a file:
perl -0777e 'print scalar reverse <>' filename
While most
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
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..$_ }
It can be used on the command line, like this:
perl -e'
$,=",";print sub { grep { $a=$_; !grep { !($a % $_) } (2..$_-1)} (2..$_ }->(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 pioneered several programming language ...
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 # "whitespace" represents each line split on white space in pyp
ls -l "> 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.]
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
* 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 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