Я проверил исходный код df и сделал подобный сценарий, который найдет первоначальный тракт,
например, Вы связываете/tmp/a с/tmp/b,
И Вы запускаете мой сценарий с perl script.pl /tmp/b/what/ever/deep/inside
, Вы найдете /tmp/a
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
sub findmnt
{
my $path = shift or die;
open my $fh, 'mount|' or die;
while (<$fh>)
{
return $1 if ($_ =~ qq{(.*) on $path type })
}
};
if ($#ARGV lt 0)
{
die 'Usage: ', $0, ' /path/to/dir', "\n";
}
my $mntpath = $ARGV[0];
while ($mntpath ne '/')
{
my $origpath = findmnt $mntpath;
if ($origpath ne '')
{
print 'Original path: ', $origpath, "\n";
last;
}
$mntpath = dirname ($mntpath);
}
Для определения строк и столбцов, Вы могли проанализировать вывод tput cols
и tput lines
для Вашего терминального размера. Я не уверен в окне самомаксимизации все же.