---
name: g.filename
description: Prints GRASS data base file names.
keywords: [ general, map management, scripts ]
---

# g.filename

Prints GRASS data base file names.

=== "Command line"

    **g.filename**
    [**-c**]
    **element**=*string*
    **file**=*string*
    [**mapset**=*string*]
    [**--verbose**]
    [**--quiet**]
    [**--qq**]
    [**--ui**]

    Example:

    ```sh
    g.filename element=string file=string
    ```

=== "Python (grass.tools)"

    *grass.tools.Tools.g_filename*(**element**,
        **file**,
        **mapset**=*None*,
        **flags**=*None*,
        **verbose**=*None*,
        **quiet**=*None*,
        **superquiet**=*None*)

    Example:

    ```python
    tools = Tools()
    tools.g_filename(element="string", file="string")
    ```

    This grass.tools API is experimental in version 8.5 and expected to be stable in version 8.6.

=== "Python (grass.script)"

    *grass.script.run_command*("***g.filename***",
        **element**,
        **file**,
        **mapset**=*None*,
        **flags**=*None*,
        **verbose**=*None*,
        **quiet**=*None*,
        **superquiet**=*None*)

    Example:

    ```python
    gs.run_command("g.filename", element="string", file="string")
    ```

## Parameters

=== "Command line"

    **element**=*string* **[required]**  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of an element  
    **file**=*string* **[required]**  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of a database file  
    **mapset**=*string*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of a mapset (default: current)  
    **-c**  
    &nbsp;&nbsp;&nbsp;&nbsp;Create element directory in the current mapset  
    &nbsp;&nbsp;&nbsp;&nbsp;If element directory for database file does not exist, create it  
    **--help**  
    &nbsp;&nbsp;&nbsp;&nbsp;Print usage summary  
    **--verbose**  
    &nbsp;&nbsp;&nbsp;&nbsp;Verbose module output  
    **--quiet**  
    &nbsp;&nbsp;&nbsp;&nbsp;Quiet module output  
    **--qq**  
    &nbsp;&nbsp;&nbsp;&nbsp;Very quiet module output  
    **--ui**  
    &nbsp;&nbsp;&nbsp;&nbsp;Force launching GUI dialog

=== "Python (grass.tools)"

    **element** : str, *required*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of an element  
    **file** : str, *required*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of a database file  
    **mapset** : str, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of a mapset (default: current)  
    **flags** : str, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Allowed values: *c*  
    &nbsp;&nbsp;&nbsp;&nbsp;**c**  
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create element directory in the current mapset  
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If element directory for database file does not exist, create it  
    **verbose** : bool, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Verbose module output  
    &nbsp;&nbsp;&nbsp;&nbsp;Default: *None*  
    **quiet** : bool, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Quiet module output  
    &nbsp;&nbsp;&nbsp;&nbsp;Default: *None*  
    **superquiet** : bool, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Very quiet module output  
    &nbsp;&nbsp;&nbsp;&nbsp;Default: *None*  

    Returns:

    **result** : grass.tools.support.ToolResult | None  
    If the tool produces text as standard output, a *ToolResult* object will be returned. Otherwise, `None` will be returned.

    Raises:

    *grass.tools.ToolError*: When the tool ended with an error.

=== "Python (grass.script)"

    **element** : str, *required*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of an element  
    **file** : str, *required*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of a database file  
    **mapset** : str, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Name of a mapset (default: current)  
    **flags** : str, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Allowed values: *c*  
    &nbsp;&nbsp;&nbsp;&nbsp;**c**  
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create element directory in the current mapset  
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If element directory for database file does not exist, create it  
    **verbose** : bool, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Verbose module output  
    &nbsp;&nbsp;&nbsp;&nbsp;Default: *None*  
    **quiet** : bool, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Quiet module output  
    &nbsp;&nbsp;&nbsp;&nbsp;Default: *None*  
    **superquiet** : bool, *optional*  
    &nbsp;&nbsp;&nbsp;&nbsp;Very quiet module output  
    &nbsp;&nbsp;&nbsp;&nbsp;Default: *None*

## DESCRIPTION

*g.filename* is designed for Bourne shell scripts that need to know the
full file name, including it's path, for mapset elements, like raster,
vector and site maps, region definitions and imagery groups.

The list of element names to search for is not fixed; any subdirectory
of the mapset directory is a valid element name.

However, the user can find the list of standard GRASS element names
in the file `$GISBASE/etc/element_list`. This is the file which
g.remove/g.rename/g.copy use to determine which files need to be
deleted/renamed/copied for a given entity type.

## OUTPUT

*g.filename* writes one line to standard output:

file='*full_file_pathname'*

The output is a */bin/sh* command to set the variable specified by the
file *name* to the full UNIX path name for the data base file. This
variable may be set in the */bin/sh* as follows:

```sh
eval `g.filename element=name mapset=name file=name`
```

## NOTES

This module generates the filename, but does not care if the file (or
mapset or element) exists or not. This feature allows shell scripts to
create new data base files as well as use existing ones.

If the mapset is the current mapset, *g.filename* can automatically
create the *element* specified if it doesn't already exist when **-c**
flag is used. This makes it easy to add new files to the data base
without having to worry about the existence of the required data base
directories. (This program will not create a new mapset, however, if
that specified does not currently exist.)

This module should not be used to create directories which are at the
level of what this module refer to as files, i.e., directory which
carries a name specified by a user (such as vector map directories)
should not be created using this module. Standard library functions
coming with any given language are a more appropriate tool for that.

The program exits with a 0 if everything is ok; it exits with a non-zero
value if there is an error, in which case file=*'full_file_pathname'* is
not output.

## SEE ALSO

*[g.findfile](g.findfile.md), [g.gisenv](g.gisenv.md)*

## AUTHOR

Michael Shapiro, U.S.Army Construction Engineering Research Laboratory

## SOURCE CODE

Available at: [g.filename source code](https://github.com/OSGeo/grass/tree/main/general/g.filename)
([history](https://github.com/OSGeo/grass/commits/main/general/g.filename))  
Latest change: Friday Aug 08 09:39:19 2025 in commit [ed72c71](https://github.com/OSGeo/grass/commit/ed72c71d8580e872cd6fd345c84a15c324764465)
