HOME

TheInfoList



OR:

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 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