---
name: "vis-open"
section: "1"
platform: "linux"
package: "vis"
version: "0.9.r501.g254329d9-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/vis-open"
---

# vis-open(1)

Interactively select a file to open

## NAME

**vis-open** – Interactively select a file to open

## SYNOPSIS

**vis-open** \[**-p** *prompt*\] \[**-f**\] \[*--*\] \[*files*\]

**vis-open** **-h**

## DESCRIPTION

**vis-open** takes a list of filenames and directories on the command-line and displays them in a menu for the user to select one. If the user selects a directory (including ..), the directory contents are displayed as a fresh menu. Once the user has selected a filename, its absolute path is printed to standard output.

**vis-open** uses [vis-menu(1)](/vis-menu/1.md) as its user-interface, so see that page for more details.

- **-p** *prompt*

  Display *prompt* before the list of items. This is passed straight through to [vis-menu(1)](/vis-menu/1.md).

- **-f**

  Normally, if **vis-open** is provided with a single filename or directory argument, it will automatically select it (printing the filename to standard output, or presenting a new menu with the contents of the directory). If **-f** is provided, **vis-open** will always present the arguments it's given, even if there's only one.

- **--**

  If this token is encountered before the first non-option argument, all following arguments will be treated as menu-items, even if they would otherwise be valid command-line options.

  If encountered after the first non-option argument, or after a previous instance of -- it is treated as a menu-item.

- *files*

  File and directory names to be presented to the user. If a name does not exist on the filesystem and the user selects it, it is treated as a file.

- **-h**

  If present, **vis-open** prints a usage summary and exits, ignoring any other flag and arguments.

## EXIT STATUS

The **vis-open** utility exits 0 on success, and \>0 if an error occurs.

In particular, like [vis-menu(1)](/vis-menu/1.md), **vis-open** prints nothing and sets its exit status to 1 if the user refused to select a file.

## EXAMPLES

```
CHOICE=$(vis-open -p "Select a file to stat")
if [ $? -gt 0 ]; then
	echo "No selection was made, or an error occurred"
else
	stat "$CHOICE"
fi
```

## SEE ALSO

[vis(1)](/vis/1.md), [vis-menu(1)](/vis-menu/1.md)

## BUGS

Because **vis-open** uses [ls(1)](/ls/1.md) to obtain the contents of a directory, weird things might happen if you have control-characters in your filenames.
