*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> red (1)              
Title
Content
Arch
Section
 

ed(1)

Contents


NAME    [Toc]    [Back]

       ed, e, red - Edits a file line by line

SYNOPSIS    [Toc]    [Back]

       ed [-p string] [-s] [-x] [-] [file]

       e [-p string] [-s] [-x] [-] [file]

       red [-p string] [-s] [-x] [-] [file]

       The ed command is a line editing program that works on one
       file at a time by copying it into a temporary edit  buffer
       and making changes to that copy.

STANDARDS    [Toc]    [Back]

       Interfaces  documented  on  this reference page conform to
       industry standards as follows:

       ed:  XCU5.0

       e:  XCU5.0

       red:  XCU5.0

       Refer to the standards(5) reference page for more information
 about industry standards and associated tags.

OPTIONS    [Toc]    [Back]

       Sets  the  ed prompt to string.  The default for string is
       null (no prompt).  Suppresses byte counts that the  editor
       displays  with  the e, E, r, and w subcommands, suppresses
       diagnostic messages for the e, E, and q  subcommands,  and
       suppresses the !  (exclamation point) prompt after a !system_command.
  This also holds true if you invoke ed with a
       file  name.   Suppresses  byte counts that the editor displays
 with the e, E,  r,  and  w  subcommands,  suppresses
       diagnostic  messages  for the e, E, and q subcommands, and
       suppresses the !  (exclamation point) prompt after a !system_command.
  This also holds true if you invoke ed with a
       file name.  This form is obsolescent and may be  withdrawn
       in future releases.

              If  you  quit  without writing the file, you do not
              get an error message.   (Generally,  before  ending
              the  program,  q  checks  to  determine whether the
              buffer was written to a file since the last time it
              was  changed.   If not, q displays the ?  message.)
              [Tru64 UNIX]  Prompts for  an  encryption  key  and
              unencrypts  the file.  If the file specified is not
              encrypted or an incorrect key is  entered,  garbled
              text is displayed.

OPERANDS    [Toc]    [Back]

       The  name  of  the  file to be edited.  If this operand is
       specified, ed reads file into the internal  buffer  before
       reading standard input.






DESCRIPTION    [Toc]    [Back]

       The  ed  command  does not alter the file itself until you
       use the write subcommand.  You can specify on the  command
       line  the file you want to edit, or you can use ed subcommands
 to read a file into the buffer.  When ed reads a new
       file  into  the  buffer, the contents of that file replace
       the buffer's previous contents, if any.

       [Tru64 UNIX]  There is also a restricted  version  of  ed,
       the  red command, for use with the restricted shell (rsh).
       With red, you can edit only files that reside in the  current
  directory,  or in the /tmp directory, and you cannot
       use the !system_command subcommand (see  Subcommands  section).


       [Tru64  UNIX]  A file may be encrypted using the X subcommand.
 Care should be take to remember the  encryption  key
       used  as  there is not a simple way to unencrypt a file if
       the key used is lost.  Only the first  six  characters  of
       the key are significant.

   Modes for ed    [Toc]    [Back]
       The  ed program operates in one of two modes, command mode
       and text mode.  In command mode, ed  recognizes  and  executes
 subcommands.  In text mode, ed adds text to the file
       buffer, but does not  recognize  subcommands.   You  enter
       text  mode  by  using the a subcommand, c subcommand, or i
       subcommand.  To leave text mode, enter (dot) alone at  the
       beginning of a line.

       [Tru64  UNIX]  The  e command is a supported alias for the
       ed command.

   Syntax for Subcommands    [Toc]    [Back]
       An ed subcommand consists of zero, one, or two  addresses,
       followed  by  a single-character subcommand, possibly followed
 by arguments to that  subcommand.   These  addresses
       specify  one  or  more lines in the buffer.  Because every
       subcommand has default addresses, you  frequently  do  not
       need to specify addresses.

   Pattern Matching    [Toc]    [Back]
       The ed command supports a limited form of special patternmatching
 characters that you can use  as  regular  expressions
  (REs)  to  construct  pattern strings.  You can use
       these patterns in addresses to specify lines and  in  some
       subcommands to specify portions of a line.

       [Tru64  UNIX]  For  information  about regular expressions
       (REs), see the grep command.

   Addressing    [Toc]    [Back]
       There are  three  types  of  ed  addresses:   line  number
       addresses,  addresses  relative  to  the current line, and
       pattern addresses.

       The current line is the point of reference in  the  buffer
       and is represented by a (dot).  When you start the ed program,
 the current line is the last line in the buffer.  As
       you edit a file, the current line changes to the last line
       affected by a subcommand.  The current line is the default
       address  for  several  ed  commands.  (See the Subcommands
       section to find out how each subcommand affects  the  current
 line.)

       Subcommands  for determining and changing the current line
       are described in the Subcommands section.   The  following
       are   guidelines   for  constructing  addresses:  A  (dot)
       addresses the current line.  A $ (dollar  sign)  addresses
       the  last  line of the buffer.  The number n addresses the
       nth line of the buffer.  The construct  'x  addresses  the
       line  marked  with a lowercase letter, x, by the k subcommand.
  The /pattern/ construct  addresses  the  next  line
       that  contains  a matching string.  The search begins with
       the line after the current line and stops when it finds  a
       match  for the pattern.  If necessary, the search moves to
       the end of the buffer, wraps around to  the  beginning  of
       the buffer, and continues until it either finds a match or
       returns to the current  line.   The  ?pattern?   construct
       addresses  the previous line that contains a match for the
       pattern.  The ?pattern?  construct,  like  /pattern/,  can
       search  the  entire buffer, but it does so in the opposite
       direction.  An address  followed  by  +number  or  -number
       specifies an address plus or minus the indicated number of
       lines.  (The + (plus sign) is optional.)  An address  that
       begins  with  + or - specifies a line relative to the current
 line.  For example, -5 is  the  equivalent  of  (five
       lines  above the current line).  An address that ends with
       - or + specifies the line immediately before (-) or  immediately
  after  (+) the addressed line.  Used alone, the -
       character addresses the line immediately before  the  current
 line.  The + character addresses the line immediately
       after the  current  line;  however,  the  +  character  is
       optional.   The  +  and  -  characters  have  a cumulative
       effect; for example, the address -- addresses the line two
       lines  above  the  current  line.   For  convenience,  a ,
       (comma) stands  for  the  address  pair  1,$  (first  line
       through last line) and a ; (semicolon) stands for the pair
       (current line through last line).

       Commands that do not accept addresses regard the  presence
       of  an  address  as  an  error.   Commands  that do accept
       addresses can use either given or default addresses.  When
       given  more  addresses than it accepts, a command uses the
       last (rightmost) ones.

       In most cases, a , (comma) separates addresses (for  example
 2,8).  A ; (semicolon) can also separate addresses.  A
       ; between addresses causes ed to set the current  line  to
       the  first  address  and then calculate the second address
       (for example, to set the starting line for a search  based
       on guidelines 5 and 6).  In a pair of addresses, the first
       must be numerically smaller than the second.

   Limits for ed    [Toc]    [Back]
       The following is a list of  ed  size  limitations:  [Tru64
       UNIX]  2048  bytes  per line.  [Tru64 UNIX]  256 bytes per
       global subcommand list.  [Tru64 UNIX]  128 kilobyte buffer
       size.   (The  buffer  not only contains the original file,
       but also editing information.)

       [Tru64 UNIX]  The maximum number of lines depends  on  the
       amount  of memory available to you.  The maximum file size
       depends on the amount of physical data  storage  (disk  or
       tape  drive)  available  or on the maximum number of lines
       permitted in user memory.






   Subcommands    [Toc]    [Back]
       In most cases, only one ed subcommand can be entered on  a
       line.   The  exceptions  to  this rule are the n, p, and l
       subcommands, which can be added to any  subcommand  except
       e, E, f, q, Q, r, w, or !.

       The  e,  E,  f,  r, and w subcommands accept file names as
       arguments.  The ed command stores the last file name  used
       with  a subcommand as a default file name.  The next e, E,
       f, r, or w given without a file name uses the default file
       name.

       The  ed command responds to an error condition with one of
       two messages: ?  (question mark) or  ?file.  When  the  ed
       command  receives  an  INT  signal,  it  displays a ?  and
       returns to command mode.  When ed reads a  file,  it  discards
  NULL  characters  and all characters after the last
       newline character.

       Unless otherwise noted, all subcommands work by default on
       the  current line; an address is optional.  If you specify
       an address, you do not type the brackets.

       When used as an address, a (dot)  refers  to  the  current
       line.   When  a (dot) is shown in the first position on an
       otherwise blank line, it terminates text mode and  returns
       to command mode.  The text parameter denotes user input in
       text mode.  Note that address need not be a number; it can
       be   a   regular  expression  of  the  form  /RE/,/RE/  or
       /RE/;/RE/.  The a (append) subcommand  adds  text  to  the
       buffer  after the addressed line.  Enter a (dot) to return
       to command mode.  The a subcommand sets the  current  line
       to  the last inserted line, or, if no lines were inserted,
       to the addressed line. Address 0 (zero) causes the a  subcommand
 to add text to the beginning of the buffer.  The c
       (change) subcommand  deletes  the  addressed  lines,  then
       replaces  them with new input.  Enter a (dot) to return to
       command mode.  The c command sets the current line to  the
       last  new  line  of  input, or, if there were none, to the
       first line that was not deleted.  The d  (delete)  subcommand
  removes  the  addressed  lines from the buffer.  The
       line after the last line deleted becomes the current line.
       If  the  deleted  lines  were originally at the end of the
       buffer, the new last line becomes the current line.  The e
       (edit)  subcommand  first  deletes  any  contents from the
       buffer, then loads another file into the buffer, sets  the
       current  line to the last line of the buffer, and displays
       the number of bytes read in to the buffer.  If the  buffer
       was changed since its contents were last saved (with the w
       subcommand), e displays ?  before it clears the buffer.

              The e subcommand stores file as  the  default  file
              name  to be used, if necessary, by subsequent e, E,
              r, or w subcommands.  (See the f subcommand.)

              When the !  (exclamation point) character  replaces
              file,  e takes the rest of the line as a shell (sh)
              command and reads the command output.  The  e  subcommand
  does  not store the name of the shell command
 as a default file name.  The E (Edit)  subcommand
  works  like e, with one exception: E does not
              check for changes made to the buffer since the last
              w subcommand.  The f (file name) subcommand changes
              the default file name (the stored name of the  last
              file  used)  to file, if file is given.  If file is
              not given, the f subcommand prints the default file
              name.   The g (global) subcommand first marks every
              line that matches  the  pattern.   Then,  for  each
              marked  line, this subcommand sets the current line
              to that line and executes subcommand_list. Place  a
              single  subcommand,  or  the  first subcommand of a
              list, on the same line with the g subcommand; place
              subsequent  subcommands  on separate lines.  Except
              for the last line, end each of these lines with a \
              (backslash).

              The  subcommand_list  can  include  the a, i, and c
              subcommands and their input.  If the  last  command
              in  subcommand_list is normally the (dot) that ends
              input mode, the (dot) is optional.  If there is  no
              subcommand_list, ed displays the current line.  The
              subcommand_list cannot include the g, G, v, V, or !
              subcommands.

              The  g  subcommand  is similar to the v subcommand,
              which executes subcommand_list for every line  that
              does  not  contain  a  match for the pattern.  This
              subcommand defaults to the entire file, not to  the
              current  line.   The interactive G (Global) subcommand
 first marks every line that matches  the  pattern,
 then displays the first marked line, sets the
              current line to that line, and waits for a  subcommand.
  The G subcommand accepts any but the following
 ed subcommands: a, c, i, g, G,  v,  V,  and  !.
              After  the subcommand finishes, G displays the next
              marked line, and so on.  The G subcommand  takes  a
              newline character as a null subcommand.  The & subcommand
 causes G to execute the previous subcommand
              again, if there is one. Subcommands executed within
              the G subcommand can address and change  any  lines
              in  the buffer.  The G subcommand can be terminated
              by pressing the Interrupt key sequence.  This  subcommand
  defaults  to  the  entire file, not to the
              current line.  The h (help) subcommand  displays  a
              short message that explains the reason for the most
              recent ?  notification.  The current line number is
              unchanged.   The  H  (Help) subcommand causes ed to
              enter a mode in which help messages (see the h command)
 are displayed for all subsequent ?  notifications.
  The H subcommand toggles this mode, and  is
              initially set to "off".  The current line number is
              unchanged.  The i (insert) subcommand inserts  text
              before the addressed line and sets the current line
              to the last inserted line.  Enter (dot)  to  return
              to  command mode.  If no lines are inserted, i sets
              the current line to the addressed line.  This  subcommand
  differs  from the a subcommand only in the
              placement of the input text.  Address 0  (zero)  is
              not  legal  for this subcommand.  The j (join) subcommand
 joins  contiguous  lines  by  removing  the
              intervening  newline characters.  If given only one
              address, j does nothing.  (For splitting lines, see
              the  s  subcommand.)   Lines  that  exceed the line
              length  limit  cannot  be  joined.   If  lines  are
              joined,  the  current  line  number  is  set to the
              address of the joined line; otherwise, the  current
              line  number is unchanged.  The k (mark) subcommand
              marks the addressed line with name x, which must be
              a  lowercase letter.  The address 'x (single quotation
  mark  before  the  marking  character)   then
              addresses  this  line.   The  k subcommand does not
              change the current line.  Marks attached  to  lines
              are deleted with the line.  The l (list) subcommand
              displays the addressed  lines.   The  l  subcommand
              wraps long lines and, unlike the p subcommand, represents
 nonprinting  characters  as  3-digit  octal
              numbers with a \ (backslash) preceding each byte in
              the character.  The following characters,  however,
              are  written  as  escape sequences: Backslash Alert
              Backspace Formfeed Newline Carriage return Tab Vertical
 tab

              A $ (dollar sign) character is placed at the end of
              each line, so that a real (literal) $ at the end of
              a line cannot be misinterpreted.

              An  l  subcommand can be appended to any ed subcommand
 except: e, E, f, q, Q, r,  w,  or  !.   The  m
              (move)  subcommand repositions the addressed lines.
              The first moved line follows the line addressed  by
              address3.   Address  0 (zero) for address3 causes m
              to move the addressed lines to the beginning of the
              file.  The line specified by address3 cannot be one
              of the lines to be moved.  The  m  subcommand  sets
              the  current  line  to  the last moved line.  The n
              (number) subcommand displays the  addressed  lines,
              each  preceded by its line number and a tab character
 (displayed as spaces); the n subcommand  leaves
              the  current line at the last line displayed.  An n
              subcommand can be appended  to  any  ed  subcommand
              except  e,  E,  f, q, Q, r, w, or !.  The p (print)
              subcommand displays the addressed  lines  and  sets
              the current line set to the last line displayed.  A
              p subcommand can be appended to any  ed  subcommand
              except:  e,  E,  f, q, Q, r, w, or !.  For example,
              the subcommand dp deletes the current line and displays
 the new current line.  The P (Prompt) subcommand
 turns the ed prompt string  *  or  the  string
              specified by the -p option on or off.  Initially, P
              is off.  The q (quit) subcommand exits the ed  program.
   Before  ending  the  program,  q  checks to
              determine whether the buffer was written to a  file
              since the last time it was changed.  If not, q displays
 the ?  message.  You do not get more than one
              prompt  in  a row; a second consecutive q quits the
              ed program without  displaying  a  prompt.   The  Q
              (Quit)  subcommand  exits  the  ed  program without
              checking for changes to the buffer since the last w
              subcommand  (compare with the q subcommand).  The r
              (read) subcommand reads  a  file  into  the  buffer
              after  the  addressed  line;  r does not delete the
              previous contents  of  the  buffer.   When  entered
              without  file,  r  reads  the default file, if any,
              into the buffer (see e and f subcommands).   The  r
              subcommand  does  not change the default file name.
              Address 0 (zero) causes r to read a file in at  the
              beginning  of  the  buffer.   After it reads a file
              successfully, r, displays the number of bytes  read
              into  the  buffer  and sets the current line to the
              last line read.

              If !  (exclamation point) replaces file in a r subcommand,
  r  takes  the rest of the line as a shell
              (sh) command whose output is to  be  read.   The  r
              subcommand  does  not store the names of shell commands
 as default file names.   The  s  (substitute)
              subcommand  searches  each  addressed  line  for  a
              string that matches the pattern and  then  replaces
              the  string  with the specified replacement string.
              Without a number n or the  global  indicator  g,  s
              replaces  only  the  first  matching string on each
              addressed line.  With n, s replaces the nth  occurrence
 of pattern on the addressed line.  With the g
              indicator,  s  replaces  every  occurrence  of  the
              matching string on each addressed line.

              If  s  does  not  find  a match for the pattern, it
              returns the error message ?.  Any character  except
              a   space  or  a  newline  character  can  separate
              (delimit) the pattern and replacement.  The s  subcommand
  sets  the  current  line  to the last line
              changed.

              An & (ampersand) in the  replacement  string  is  a
              special  symbol that has the same value as the pattern
  string.   So,  for  example,  the  subcommand
              s/out/&ing/  has  the same effect as the subcommand
              s/out/outing/ and replaces out with outing  on  the
              current  line.   A  backslash  before the ampersand
              (\&) removes this special meaning of & in  replacement.


              The  %  (percent  sign),  when  used  by  itself as
              replacement, causes s to use the previous  replacement
  again.   The  %  character does not have this
              special meaning if it is part of a longer  replacement
 or if it is preceded by a \ (backslash).

              Lines  can be split by substituting newline characters
  into  them.   In  replacement,  the  sequence
              \<Return>  quotes  the  newline character (not displayed)
 and moves the cursor to  the  nextline  for
              the remainder of the string.

              The  value  of  flags can be the following: Substitutes
 for the countth occurrence only of the  regular
  expression  that  is  found  on each addressed
              line.  Substitutes globally for all  nonoverlapping
              instances  of  the  regular  expression, instead of
              just substituting for the first instance.  Displays
              the  final line in which a substitution was made in
              the format specified for the  l  subcommand.   Displays
  the  final  line in which a substitution was
              made in the format specified for the n  subcommand.
              Displays the final line in which a substitution was
              made in the format specified for the p  subcommand.
              The  t  (transfer) subcommand inserts a copy of the
              addressed lines after address3.  The  t  subcommand
              accepts  address  0  (for  inserting  lines  at the
              beginning of the buffer). The t subcommand sets the
              current line to the last line copied.  The u (undo)
              subcommand restores the buffer to the state it  was
              in before it was last modified by an ed subcommand.
              The commands that u can undo are a, c, d, g, G,  i,
              j,  m,  r,  s, t, u, v, and V.  All changes made to
              the buffer by a g, G, v, or V  global  command  are
              undone as a single change.  The current line number
              is set to the value it had before the command being
              undone started.  The v subcommand executes the subcommands
 in subcommand_list for each line that does
              not contain a match for the pattern.  The v subcommand
 is a complement for the global  subcommand  g,
              which  executes subcommand_list for every line that
              does contain a match for the pattern.  The  V  subcommand
  first marks every line that does not match
              the pattern, then displays the first  marked  line,
              sets the current line to that line, and waits for a
              subcommand.  The V  subcommand  complements  the  G
              subcommand, which marks the lines that do match the
              pattern.   The  w  (write)  subcommand  copies  the
              addressed  lines  from the buffer to the file named
              in file.  If the file does not exist, the w subcommand
  creates it with permission mode 666 (read and
              write permission for everyone),  unless  the  umask
              setting specifies another file creation mode.  (For
              information about file permissions, see umask in sh
              and chmod.)

              The  w  subcommand does not change the default file
              name (unless file is the first file name used since
              you  started  ed).   If  you  do not provide a file
              name, ed uses the default file name,  if  any  (see
              the  e,  E,  and  f subcommands).  The w subcommand
              does not change the current line.

              If ed successfully writes the file, it displays the
              number of characters written.  When !  (exclamation
              point) replaces file, ed takes the rest of the line
              as a shell (sh) command whose output is to be read;
              w does not save shell command names as default file
              names  (same  effect  as  !).  The use of the write
              subcommand with !  (exclamation point) is not  considered
  the  last  w command that wrote the entire
              buffer. Thus, this alone does not prevent the warning
  to  the  user if an attempt is made to destroy
              the editor buffer through the e or q subcommands.

              The address 0 is not a legal address for the w subcommand.
   Therefore,  it is not possible to create
              an empty file with ed.  The  X  subcommand  prompts
              you to enter an encryption key.  Only the first six
              characters of this key are significant.   When  the
              ed  commands  write a file after the encryption key
              is specified, the output is  written  in  encrypted
              form.  Subsequent edits of the file require the use
              the -x option to display  the  file  in  its  unencrypted
  form.   Without  an  address, the = (equal
              sign) subcommand displays the current line  number.
              With  the  address  $,  = (equal sign) displays the
              number of the last line in the buffer.  The =  subcommand
 does not change the current line and cannot
              be included in a g or v  subcommand  list.   The  !
              (exclamation  point)  subcommand allows system commands
 to be run from within ed.  Anything following
              !   on  an  ed  subcommand line is interpreted as a
              system command.  Within the text  of  that  command
              string,  ed replaces the unescaped character % with
              the current file name, if there is one.

              By  default,  the  subcommands  are   executed   by
              /usr/bin/sh.   To  support  single user mode operation,
 subcommands can be executed by  /sbin/sh.  To
              change  the  default  behavior,  modify your $SHELL
              environmental variable to SHELL=/sbin/sh.

              When used as the first character of a shell command
              (after  the  !   that runs a subshell), ed replaces
              the !  character with the previous system  command;
              for  example,  the command !!  repeats the previous
              system command.  If the command interpreter (the sh
              command)  expands the command string, ed echoes the
              expanded line.  The !  subcommand does  not  change
              the  current line.  If any replacements of % and/or
              !  are performed, the modified line is  written  to
              standard  output  before  the  command is executed.
              The ed editor interprets a number alone on  a  line
              as  an  address  and  displays  the addressed line.
              Addresses can be absolute (line numbers  or  $)  or
              relative  to the current line (+number or -number).
              Entering a newline  character  (a  blank  line)  is
              equivalent  to  +1p and is useful for stepping forward
 through the buffer one line at a time.

EXIT STATUS    [Toc]    [Back]

       The following exit values are returned: Successful completion.
  An error occurred.

ASYNCHRONOUS EVENTS    [Toc]    [Back]

       The  following  actions are taken upon receipt of signals:
       The ed command interrupts its current activity, writes the
       string  ?\n  to  standard  output,  and returns to command
       mode.  If the buffer is not empty and  has  changed  since
       the last write, the ed command attempts to write a copy of
       the buffer in a file.  First, the file named ed.hup in the
       current  directory  is used; if that fails, the file named
       ed.hup in the directory  named  by  the  HOME  environment
       variable  is used. In any case, the ed command exits without
 returning to command mode.

ENVIRONMENT VARIABLES    [Toc]    [Back]

       The following environment variables affect  the  execution
       of  ed: Provides a default value for the internationalization
 variables that are unset or null. If LANG is unset or
       null,  the  corresponding value from the default locale is
       used.  If any of the internationalization  variables  contain
 an invalid setting, the utility behaves as if none of
       the variables had been defined.  If  set  to  a  non-empty
       string value, overrides the values of all the other internationalization
 variables.  Determines the locale for  the
       interpretation of sequences of bytes of text data as characters
 (for example, single-byte as opposed  to  multibyte
       characters  in  arguments)  and  the behavior of character
       classes within regular expressions.  Determines the locale
       for the format and contents of diagnostic messages written
       to standard error.  Determines  the  location  of  message
       catalogues for the processing of LC_MESSAGES.

FILES    [Toc]    [Back]

       Recovery  file written if SIGHUP is received during operation.

SEE ALSO    [Toc]    [Back]

      
      
       Commands:  chmod(1),  edit(1),  ex(1),  grep(1),   rsh(1),
       sed(1),  Bourne shell sh(1b), POSIX shell sh(1p), stty(1),
       vi(1)

       Functions:  regexp(3)

       Files:  locale(4)

       Standards:  standards(5)

       Command and Shell User's Guide



                                                            ed(1)
[ Back ]
 Similar pages
Name OS Title
edit Tru64 Edits a file line by line with a simplified command set
comm Linux compare two sorted files line by line
gets IRIX Read a line from a file
openpam_readline FreeBSD read a line from a file
cut Tru64 Displays specified parts from each line of a file
cut OpenBSD select portions of each line of a file
cut FreeBSD select portions of each line of a file
cut IRIX cut out selected fields of each line of a file
linenum IRIX line number entries in an object file
cut HP-UX cut out (extract) selected fields of each line of a file
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service