← All commands
Topic hub Terminal & Shell Scripting
Windows Linux Terminal & Shell Scripting Expanded guide Terminal

Windows shift equivalent in Linux

Shifts positional parameters ($1, $2...) left by one. Used to process command-line arguments in scripts.

Windows shift
→
Linux equivalents
Debian/Ubuntu same command
shift
Fedora same command
shift
Arch same command
shift

Overview

What this command does

On Windows, "shift" is used to shift script argument positions. On Linux, the closest practical mapping shown here is "shift". Shifts positional parameters ($1, $2...) left by one. Used to process command-line arguments in scripts. This reference is grouped under Terminal & Shell Scripting → Terminal.

Migration tip: Script arguments are <code>$1 $2 $3</code> etc. <code>$@</code> is all arguments, <code>$#</code> is the count. <code>shift</code> removes $1 and shifts the rest down.

Windows → Linux context

What changes when you use this on Linux?

Same name, different environment

The basic command name shift is familiar on both platforms, but Linux path rules, quoting, permissions and available options can still change the result.

Portable across the compared distros

The Debian/Ubuntu, Fedora and Arch rows use the same command in this mapping. Package availability or defaults can still vary, so check the installed tool version when an option behaves differently.

Practical tasks

Common use cases

Shift script argument positions

Shifts positional parameters ($1, $2...) left by one. Used to process command-line arguments in scripts.

$1 $2 $3

Positional arguments

$@

All arguments as separate words

$#

Number of arguments

Ready to run

Copyable Linux commands

Review paths, device names, package names and permissions before running any command.

echo "All args: $@"
echo "Count: $#"
echo "First: $1"
while [ $# -gt 0 ]; do
echo "Arg: $1"
shift
done

Walkthrough

Examples with explanations

#!/bin/bash
# Script: myscript.sh arg1 arg2 arg3

echo "All args: $@"
echo "Count: $#"
echo "First: $1"

# Process all args one by one:
while [ $# -gt 0 ]; do
  echo "Arg: $1"
  shift
done

Reference

Common options and variations

Command or optionUse
$1 $2 $3Positional arguments
$@All arguments as separate words
$#Number of arguments
shiftRemove $1 and shift remaining down
shift 2Shift by 2 positions

Distro differences

Debian/Ubuntu vs Fedora vs Arch

Debian/Ubuntu, Fedora and Arch all use "shift" for this mapping. The command syntax shown here is portable across the three rows, although installed versions and system defaults can still vary.

DistributionPackage manager / baseEquivalent commandDifference to notice
Debian/Ubuntu same command shift Same command on this distribution.
Fedora same command shift Same command on this distribution.
Arch same command shift Same command on this distribution.

Keep learning

Related Terminal & Shell Scripting commands