---
name: "tell"
section: "n"
platform: "linux"
package: "tcl"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/tell/n"
---

# tell(n)

Return current access position for an open channel

```

```

## NAME

tell - Return current access position for an open channel

## SYNOPSIS

**tell** *channelId*

```

```

## DESCRIPTION

Returns an integer string giving the current access position in *channelId*.  This value returned is a byte offset that can be passed to **seek** in order to set the channel to a particular position.  Note that this value is in terms of bytes, not characters like **read**. The value returned is -1 for channels that do not support seeking.

*ChannelId* must be an identifier for an open channel such as a Tcl standard channel (**stdin**, **stdout**, or **stderr**), the return value from an invocation of **open** or **socket**, or the result of a channel creation command provided by a Tcl extension.

## EXAMPLE

Read a line from a file channel only if it starts with **foobar**:

```
# Save the offset in case we need to undo the read...
set offset [tell $chan]
if {[read $chan 6] eq "foobar"} {
    gets $chan line
} else {
    set line {}
    # Undo the read...
    seek $chan $offset
}
```

## SEE ALSO

[file(n)](/file/n.md), [open(n)](/open/n.md), [close(n)](/close/n.md), [gets(n)](/gets/n.md), [seek(n)](/seek/n.md), [Tcl\_StandardChannels(3)](/Tcl_StandardChannels/3.md)

## KEYWORDS

access position, channel, seeking
