Unpacking a tarball via terminal like the Finder
The option you are looking for is --strip-components (from man tar):


  --strip-components count
  
  (x mode only) Remove the specified number of leading path elements.
  Pathnames with fewer elements will be silently skipped.


But it is not 100% equivalent to the way the Finder works: you still need to know the directory depth to strip.

Fortunately, it can be calculated with this command:

while read; do echo -n "$REPLY" | wc -c; done &lt; &lt;(tar tvf &lt;tar archive name&gt; | egrep -v '^d' | sed 's:[^/]::g') | sort -n | uniq | head -n 1


Since you have to replace &lt;tar archive name&gt; with the name of your tar archive, it is not as convenient as simply double clicking it in the Finder, but it can be useful in Bash scripts.

If the tar archive contains several files in different paths, the command above calculates the maximum common directory depth:

tar archive contents          =&gt;      extracted files using --strip-components

dir1/dir2/file1               =&gt;      file1
dir1/dir2/dir3/file2          =&gt;      dir3/file2
dir1/dir2/dir3/dir4/file3     =&gt;      dir3/dir4/file3


For example, if you create a tar file like this:

mkdir -p a/b/c/d/e/f
touch a/b/c/d/e/f/myfile1
touch a/b/c/d/e/myfile2
tar cvf file.tar a


so that:

tar tf file.tar
a/
a/b/
a/b/c/
a/b/c/d/
a/b/c/d/e/
a/b/c/d/e/f/
a/b/c/d/e/myfile1
a/b/c/d/e/f/myfile2


you can extract all files (with the shortest directory depth) as follows:


Calculate maximum common directory depth:

while read; do echo -n "$REPLY" | wc -c; done &lt; &lt;(tar tvf file.tar | egrep -v '^d' | sed 's:[^/]::g') | sort -n | uniq | head -n 1


Command returns 5.
Run tar passing the result of the previous command to --strip-components:

tar xvf file.tar --strip-components 5
x f/
x myfile1
x f/myfile2



Instead of running two commands, if your shell is bash or zsh, you can use $() to pass the result directly to --strip-components:

tar xvf file.tar --strip-components $(while read; do echo -n "$REPLY" | wc -c; done &lt; &lt;(tar tvf file.tar | egrep -v '^d' | sed 's:[^/]::g') | sort -n | uniq | head -n 1)
x f/
x myfile1
x f/myfile2


This command also properly deals with the case of a tar archive without a directory hierarchy:

touch myfile3
tar cvf file2.tar myfile3
tar xvf file2.tar --strip-components $(while read; do echo -n "$REPLY" | wc -c; done &lt; &lt;(tar tvf file2.tar | egrep -v '^d' | sed 's:[^/]::g') | sort -n | uniq | head -n 1)
x myfile3