LoginSignup
92
90

More than 5 years have passed since last update.

POSIXコマンドチートシート(を作る)

Posted at

この記事の説明

POSIX規格で用意されているコマンドとその概要が一覧できるページ(チートシート)が欲しいという要望をもらった。もちろんThe Open GroupのPOSIXのページへ行って、1つ1つのコマンドのページを開けばわかることはわかるのだが、概要という形では一覧できない。

確かにそうだと思ったので、生成することにした。もちろんPOSIX原理主義(極力POSIXの範囲のコマンド)1で。 そこはやっぱ意地でしょ。

というわけで、まずは生成したチートシートをどうぞ。

これが、POSIXの範囲で使えるコマンド一覧だ!

  • admin - create and administer SCCS files (DEVELOPMENT)
  • alias - define or display aliases
  • ar - create and maintain library archives
  • asa - interpret carriage-control characters
  • at - execute commands at a later time
  • awk - pattern scanning and processing language
  • basename - return non-directory portion of a pathname
  • batch - schedule commands to be executed in a batch queue
  • bc - arbitrary-precision arithmetic language
  • bg - run jobs in the background
  • c99 - compile standard C programs
  • cal - print a calendar
  • cat - concatenate and print files
  • cd - change the working directory
  • cflow - generate a C-language flowgraph (DEVELOPMENT)
  • chgrp - change the file group ownership
  • chmod - change the file modes
  • chown - change the file ownership
  • cksum - write file checksums and sizes
  • cmp - compare two files
  • comm - select or reject lines common to two files
  • command - execute a simple command
  • compress - compress data
  • cp - copy files
  • crontab - schedule periodic background work
  • csplit - split files based on context
  • ctags - create a tags file (DEVELOPMENT, FORTRAN)
  • cut - cut out selected fields of each line of a file
  • cxref - generate a C-language program cross-reference table (DEVELOPMENT)
  • date - write the date and time
  • dd - convert and copy a file
  • delta - make a delta (change) to an SCCS file (DEVELOPMENT)
  • df - report free disk space
  • diff - compare two files
  • dirname - return the directory portion of a pathname
  • du - estimate file space usage
  • echo - write arguments to standard output
  • ed - edit text
  • env - set the environment for command invocation
  • ex - text editor
  • expand - convert tabs to spaces
  • expr - evaluate arguments as an expression
  • false - return false value
  • fc - process the command history list
  • fg - run jobs in the foreground
  • file - determine file type
  • find - find files
  • fold - filter for folding lines
  • fort77 - FORTRAN compiler (FORTRAN)
  • fuser - list process IDs of all processes that have one or more files open
  • gencat - generate a formatted message catalog
  • get - get a version of an SCCS file (DEVELOPMENT)
  • getconf - get configuration values
  • getopts - parse utility options
  • grep - search a file for a pattern
  • hash - remember or report utility locations
  • head - copy the first part of files
  • iconv - codeset conversion
  • id - return user identity
  • ipcrm - remove an XSI message queue, semaphore set, or shared memory segment identifier
  • ipcs - report XSI interprocess communication facilities status
  • jobs - display status of jobs in the current session
  • join - relational database operator
  • kill - terminate or signal processes
  • lex - generate programs for lexical tasks (DEVELOPMENT)
  • link - call link function
  • ln - link files
  • locale - get locale-specific information
  • localedef - define locale environment
  • logger - log messages
  • logname - return the user's login name
  • lp - send files to a printer
  • ls - list directory contents
  • m4 - macro processor
  • mailx - process messages
  • make - maintain, update, and regenerate groups of programs (DEVELOPMENT)
  • man - display system documentation
  • mesg - permit or deny messages
  • mkdir - make directories
  • mkfifo - make FIFO special files
  • more - display files on a page-by-page basis
  • mv - move files
  • newgrp - change to a new group
  • nice - invoke a utility with an altered nice value
  • nl - line numbering filter
  • nm - write the name list of an object file (DEVELOPMENT)
  • nohup - invoke a utility immune to hangups
  • od - dump files in various formats
  • paste - merge corresponding or subsequent lines of files
  • patch - apply changes to files
  • pathchk - check pathnames
  • pax - portable archive interchange
  • pr - print files
  • printf - write formatted output
  • prs - print an SCCS file (DEVELOPMENT)
  • ps - report process status
  • pwd - return working directory name
  • qalter - alter batch job
  • qdel - delete batch jobs
  • qhold - hold batch jobs
  • qmove - move batch jobs
  • qmsg - send message to batch jobs
  • qrerun - rerun batch jobs
  • qrls - release batch jobs
  • qselect - select batch jobs
  • qsig - signal batch jobs
  • qstat - show status of batch jobs
  • qsub - submit a script
  • read - read a line from standard input
  • renice - set nice values of running processes
  • rm - remove directory entries
  • rmdel - remove a delta from an SCCS file (DEVELOPMENT)
  • rmdir - remove directories
  • sact - print current SCCS file-editing activity (DEVELOPMENT)
  • sccs - front end for the SCCS subsystem (DEVELOPMENT)
  • sed - stream editor
  • sh - shell, the standard command language interpreter
  • sleep - suspend execution for an interval
  • sort - sort, merge, or sequence check text files
  • split - split files into pieces
  • strings - find printable strings in files
  • strip - remove unnecessary information from strippable files (DEVELOPMENT)
  • stty - set the options for a terminal
  • tabs - set terminal tabs
  • tail - copy the last part of a file
  • talk - talk to another user
  • tee - duplicate standard input
  • test - evaluate expression
  • time - time a simple command
  • touch - change file access and modification times
  • tput - change terminal characteristics
  • tr - translate characters
  • true - return true value
  • tsort - topological sort
  • tty - return user's terminal name
  • type - write a description of command type
  • ulimit - set or report file size limit
  • umask - get or set the file mode creation mask
  • unalias - remove alias definitions
  • uname - return system name
  • uncompress - expand compressed data
  • unexpand - convert spaces to tabs
  • unget - undo a previous get of an SCCS file (DEVELOPMENT)
  • uniq - report or filter out repeated lines in a file
  • unlink - call the unlink function
  • uucp - system-to-system copy
  • uudecode - decode a binary file
  • uuencode - encode a binary file
  • uustat - uucp status enquiry and job control
  • uux - remote command execution
  • val - validate SCCS files (DEVELOPMENT)
  • vi - screen-oriented (visual) display editor
  • wait - await process completion
  • wc - word, line, and byte or character count
  • what - identify SCCS files (DEVELOPMENT)
  • who - display who is on the system
  • write - write to another user
  • xargs - construct argument lists and invoke utility
  • yacc - yet another compiler compiler (DEVELOPMENT)
  • zcat - expand and concatenate data

注意(Notice)

このチートシートは、"The Open Gruop"のPOSIXドキュメントサイトに基づき、2015/09/12に生成したものです。
正確を期すため、オリジナルのページを閲覧することを推奨します。
尚、このドキュメントに関する著作権は全て上記の団体に帰属します。

This cheatsheet was generated with the Open Groups POSIX document site on 2015/09/12.
You should refer the original page.
The all copyrights of these documents belong to them.

生成に用いたソースコード

飽くまで自動生成したんだよーという言い訳と、POSIXの実力を示すために使ったソースコードを貼っておく。(ただし、コメントは英語だけね)

mk_posix_cheatsheet_md.sh
#! /bin/sh

######################################################################
#
# MK_POSIX_CHEATSHEET_MD.sh :  Make the Cheat Sheet of POSIX Commands
#
# Usage    : mk_posix_cheatsheet_md.sh [> /PATH/TO/SOME/FILE]
#
# * This command generates the list of the POSIX commands in Markdown
#   with ONLY the POSIX commands except one of HTTP-GET command. And
#   writes that into the standard output.
#
# * I made sure that this script can generate the HTML text correctly
#   from the Open Group POSIX document site on 2015/09/12. But in the
#   future, it also needs to revise the script for scraping the revised
#   POSIX document.
#
# Required : One of HTTP-GET command (wget or curl or fetch)
#
# Written by Rich Mikan (richmikan[at]richlab.org) on 2015/09/12
#
# This is a public-domain software. It measns that all of the people
# can use this with no restrictions at all. By the way, I am fed up
# the side effects which are broght about by the major licenses.
#
######################################################################


# ====================================================================
# configure (SET THIS)
# ====================================================================

BASE='http://pubs.opengroup.org/onlinepubs/9699919799/'
CMDs='idx/utilities.html'


# ====================================================================
# make sure some depend non-POSIX commands (One of HTTP-GET required)
# ====================================================================

if   type wget  >/dev/null 2>&1; then
  CMD='wget -nv -O -'
elif type curl  >/dev/null 2>&1; then
  CMD='curl -s'
elif type fetch >/dev/null 2>&1; then
  CMD='fetch -q -o -'
else
  printf '%s: No HTTP-GET command found.\n' "${0##*/}" 1>&2
  exit 1
fi


# ====================================================================
# print the previous Markdown
# ====================================================================

cat <<PREVIOUS_MD
# POSIX commands Cheatsheat

PREVIOUS_MD


# ====================================================================
# print the command list in Markdown
# ====================================================================

$CMD "${BASE%/}/${CMDs}"                                                     |
sed -n '/a  *href=/{s!.*href="\([^"]*\)".*!'"${BASE%/}/${CMDs%/*}/"'\1!;p;}' |
sed 's![^/]*/\.\./!!'                                                        |
while read url; do                                                           #
  export url                                                                 #
  $CMD "$url"                                             |                  #
  awk 'step==2                   {next  ;              }  #                  #
       step==1 && /blockquote/   {print ; step=2; next;}  #                  #
       /class="mansect".*>NAME</ {step=1; next  ;      }' |                  #
  sed 's!^.*<blockquote>!!'                               |                  #
  sed 's!</blockquote>.*$!!'                              |                  #
  awk 'BEGIN { OFS=""; ORS=""; }                          #                  #
       match($0, /[^ \t]+/) {                             #                  #
         print "* "                                ;      #                  #
         print substr($0, 1             , RSTART-1);      #                  #
         print "["                                 ;      #                  #
         print substr($0, RSTART        , RLENGTH );      #                  #
         print "]"                                 ;      #                  #
         print "(", ENVIRON["url"], ")"            ;      #                  #
         print substr($0, RSTART+RLENGTH          );      #                  #
         print "\n"                                ;      #                  #
       }'                                                                    #
done                                                                         |
sed 's!</\{0,1\}b>!**!g'


# ====================================================================
# print the following Markdown
# ====================================================================

cat <<FOLLOWING_MD

## Notice

This page was generated with the Open Groups POSIX document site on $(date '+%Y/%m/%d').
You should refer the [original page](${BASE}).

The all copyrights of these documents belong to them. 
FOLLOWING_MD


# ====================================================================
# finish normally
# ====================================================================
exit 0

こんなの夜食前だ!(只今午前2時)

さてそれじゃ、豆乳つゆちょい足しペヤングでも作って夜食にするか。


  1. POSIXには通信系コマンドが殆どないので、そのための1コマンドだけは非POSIXコマンド(wgetまたはcurlまたはfetch)に頼るが、その他全てはPOSIXの範囲で作る。 

92
90
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
92
90