---
name: "tell"
section: "3tcl"
platform: "linux"
package: "tcl8.6-doc"
version: "8.6.16+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/tell/3tcl"
---

# tell(3tcl)

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(3tcl)](/file/3tcl.md), [open(3tcl)](/open/3tcl.md), [close(3tcl)](/close/3tcl.md), [gets(3tcl)](/gets/3tcl.md), [seek(3tcl)](/seek/3tcl.md), [Tcl\_StandardChannels(3tcl)](/Tcl_StandardChannels/3tcl.md)

## KEYWORDS

access position, channel, seeking
