old_contents: #!/usr/bin/env python
  __author__ = "mmussomele"
  
  """Attempts to spellcheck and correct failed cd commands"""
  
  import os
  from difflib import get_close_matches
  from thefuck.utils import sudo_support
  from thefuck.rules import cd_mkdir
  
  MAX_ALLOWED_DIFF = 0.6
  
  
  def _get_sub_dirs(parent):
      """Returns a list of the child directories of the given parent directory"""
      return [child for child in os.listdir(parent) if os.path.isdir(os.path.join(parent, child))]
  
  
  @sudo_support
  def match(command, settings):
      """Match function copied from cd_mkdir.py"""
      return (command.script.startswith('cd ')
              and ('no such file or directory' in command.stderr.lower()
                   or 'cd: can\'t cd to' in command.stderr.lower()))
  
  
  @sudo_support
  def get_new_command(command, settings):
      """
      Attempt to rebuild the path string by spellchecking the directories.
      If it fails (i.e. no directories are a close enough match), then it 
      defaults to the rules of cd_mkdir. 
      Change sensitivity by changing MAX_ALLOWED_DIFF. Default value is 0.6
      """
      dest = command.script.split()[1].split(os.sep)
      if dest[-1] == '':
          dest = dest[:-1]
      cwd = os.getcwd()
      for directory in dest:
          if directory == ".":
              continue
          elif directory == "..":
              cwd = os.path.split(cwd)[0]
              continue
          best_matches = get_close_matches(directory, _get_sub_dirs(cwd), cutoff=MAX_ALLOWED_DIFF)
          if best_matches:
              cwd = os.path.join(cwd, best_matches[0])
          else:
              return cd_mkdir.get_new_command(command, settings)
      return "cd {0}".format(cwd)
  
  
  enabled_by_default = True
  
new_contents: #!/usr/bin/env python
  __author__ = "mmussomele"
  
  """Attempts to spellcheck and correct failed cd commands"""
  
  import os
  from difflib import get_close_matches
  from thefuck.utils import sudo_support
  from thefuck.rules import cd_mkdir
  
  MAX_ALLOWED_DIFF = 0.6
  
  
  def _get_sub_dirs(parent):
      """Returns a list of the child directories of the given parent directory"""
      return [child for child in os.listdir(parent) if os.path.isdir(os.path.join(parent, child))]
  
  
  @sudo_support
  def match(command, settings):
      """Match function copied from cd_mkdir.py"""
      return (command.script.startswith('cd ')
              and ('no such file or directory' in command.stderr.lower()
                   or 'cd: can\'t cd to' in command.stderr.lower()))
  
  
  @sudo_support
  def get_new_command(command, settings):
      """
      Attempt to rebuild the path string by spellchecking the directories.
      If it fails (i.e. no directories are a close enough match), then it 
      defaults to the rules of cd_mkdir. 
      Change sensitivity by changing MAX_ALLOWED_DIFF. Default value is 0.6
      """
      dest = command.script.split()[1].split(os.sep)
      if dest[-1] == '':
          dest = dest[:-1]
      cwd = os.getcwd()
      for directory in dest:
          if directory == ".":
              continue
          elif directory == "..":
              cwd = os.path.split(cwd)[0]
              continue
          best_matches = get_close_matches(directory, _get_sub_dirs(cwd), cutoff=MAX_ALLOWED_DIFF)
          if best_matches:
              cwd = os.path.join(cwd, best_matches[0])
          else:
              return cd_mkdir.get_new_command(command, settings)
      return 'cd "{0}"'.format(cwd)
  
  
  enabled_by_default = True
  
subject: Fix cd command