---
page_title: Writing and Modifying Code - Terraform CLI
description: >-
  Learn commands that help validate, format, and upgrade code written in the
  Terraform Configuration Language.
---

# Writing and Modifying Terraform Code

The [Terraform language](/language) is Terraform's primary
user interface, and all of Terraform's workflows rely on configurations written
in the Terraform language.

Terraform CLI includes several commands to make Terraform code more convenient
to work with. Integrating these commands into your editing workflow can
potentially save you time and effort.

- [The `terraform console` command](/cli/commands/console) starts an
  interactive shell for evaluating Terraform
  [expressions](/language/expressions), which can be a faster way
  to verify that a particular resource argument results in the value you expect.

- [The `terraform fmt` command](/cli/commands/fmt) rewrites Terraform
  configuration files to a canonical format and style, so you don't have to
  waste time making minor adjustments for readability and consistency. It works
  well as a pre-commit hook in your version control system.

- [The `terraform validate` command](/cli/commands/validate) validates the
  syntax and arguments of the Terraform configuration files in a directory,
  including argument and attribute names and types for resources and modules.
  The `plan` and `apply` commands automatically validate a configuration before
  performing any other work, so `validate` isn't a crucial part of the core
  workflow, but it can be very useful as a pre-commit hook or as part of a
  continuous integration pipeline.

- [The `0.13upgrade` command](/cli/commands/0.13upgrade) and
  [the `0.12upgrade` command](/cli/commands/0.12upgrade) can automatically
  modify the configuration files in a Terraform module to help deal with major
  syntax changes that occurred in the 0.13 and 0.12 releases of Terraform. Both
  of these commands are only available in the Terraform version they are
  associated with, and you are expected to upgrade older code to be compatible
  with 0.12 before attempting to make it compatible with 0.13. For more detailed
  information about updating code for new Terraform versions, see the [upgrade
  guides](/language/upgrade-guides) in the Terraform language docs.
