code: def do_ls(self, line):
          
          args = self.line_to_args(line)
          if len(args.filenames) == 0:
              args.filenames = ['.']
          for idx, fn in enumerate(args.filenames):
              if not is_pattern(fn):
                  filename = resolve_path(fn)
                  stat = auto(get_stat, filename)
                  mode = stat_mode(stat)
                  if not mode_exists(mode):
                      err = "Cannot access '{}': No such file or directory"
                      print_err(err.format(filename))
                      continue
                  if not mode_isdir(mode):
                      if args.long:
                          print_long(fn, stat, self.print)
                      else:
                          self.print(fn)
                      continue
                  if len(args.filenames) > 1:
                      if idx > 0:
                          self.print('')
                      self.print("%s:" % filename)
                  pattern = '*'
              else: # A pattern was specified
                  filename, pattern = validate_pattern(fn)
                  if filename is None: # An error was printed
                      continue
              files = []
              ldir_stat = auto(listdir_stat, filename)
              if ldir_stat is None:
                  err = "Cannot access '{}': No such file or directory"
                  print_err(err.format(filename))
              else:
                  for filename, stat in sorted(ldir_stat,
                                               key=lambda entry: entry[0]):
                      if is_visible(filename) or args.all:
                          if fnmatch.fnmatch(filename, pattern):
                              if args.long:
                                  print_long(filename, stat, self.print)
                              else:
                                  files.append(decorated_filename(filename, stat))
              if len(files) > 0:
                  print_cols(sorted(files), self.print, self.columns)
docs: ls [-a] [-l] [FILE|DIRECTORY|PATTERN]...
         PATTERN supports * ? [seq] [!seq] Unix filename matching
  
             List directory contents.