ainsl(1)                    General Commands Manual                   ainsl(1)



NAME
       ainsl - AppendIfNoSuchLine

SYNOPSIS
       ainsl [options] FILE LINE [PATTERN]

DESCRIPTION
       Add  LINE  to  the  end of FILE if this file does not contain this line
       already. If PATTERN is given, then the LINE is only appended if PATTERN
       is not found in the file.

       Since  ainsl is written in Perl, you can use Perl's regular expressions
       in PATTERN. If PATTERN is not given, LINE is used instead for  matching
       a  line  in  FILE.  Then  LINE may also contain the anchors '^' and '$'
       which are only treated specialy at the beginning or end of the  pattern
       and  are  used for matching, not when adding the line. Additionaly, the
       following characters are escaped in LINE: ( ) +

       The exit code returned by ainsl is 0 on success and non-zero on  error.
       See the section EXIT CODES.


OPTIONS
       -a     Autocreate file if it does not exist.

       -D     Create debugging output.

       -h     Show help, version and summary of options.

       -n     Print the actions, but do not execute them.

       -Q     Quote all metacharacters in pattern. Uses perl's \Q function.

       -q     Quote * and + metacharacters in pattern.

       -s     Convert  white  space  in  LINE  or  PATTERN to '\s+' regexp for
              matching.

       -N     Don't prepend '$AINSL_TARGET/' to filename, even if it is set.

       -v     Create verbose output.


NOTES
       IF the variable AINSL_TARGET is defined, its value will become the pre-
       fix for the filename. This is used in FAI for changing files in /target
       without specifying /target in the file name.


EXAMPLES
       ainsl -v /etc/fstab '/dev/fd0  /floppy  auto  users,noauto 0 0'

       Append the entry for the floppy device  to  /etc/fstab,  if  this  line
       isn't already inlcuded.

       ainsl -s /etc/exports '/srv/www @linuxhosts(async,rw) backup(async,ro)'

       Add exports entry without exactly matching spaces.


EXIT CODES
       0      Success:  Either  FILE  contains  the  LINE/PATTERN  or LINE was
              appended to FILE.

       13     Permissions do not allow writing to FILE  and  LINE/PATTERN  was
              not found in file.

       28     FILE  cannot  be written because the filesystem has no space and
              LINE/PATTERN was not found in file.

       30     FILE cannot be written because the filesystem is  read-only  and
              LINE/PATTERN was not found in file.


NOTES
       This is a similar function to AppendIfNoSuchLine from cfengine(8).

SEE ALSO
       This  program  is  part of FAI (Fully Automatic Installation).  See the
       FAI manual for more information on how to use ainsl.  The FAI  homepage
       is http://fai-project.org.


AUTHOR
       Thomas Lange <lange@informatik.uni-koeln.de>



FAI 4                            8 march 2012                         ainsl(1)
