The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Rex::Commands::Fs - Filesystem commands

DESCRIPTION

With this module you can do file system tasks like creating a directory, removing files, move files, and more.

SYNOPSIS

 my @files = list_files "/etc";
 
 unlink("/tmp/file");
 
 rmdir("/tmp");
 mkdir("/tmp");
 
 my %stat = stat("/etc/passwd");
 
 my $link = readlink("/path/to/a/link");
 symlink("/source", "/dest");
 
 rename("oldname", "newname");
 
 chdir("/tmp");
 
 is_file("/etc/passwd");
 is_dir("/etc");
 is_writeable("/tmp");
 is_writable("/tmp");
    
 chmod 755, "/tmp";
 chown "user", "/tmp";
 chgrp "group", "/tmp";
 

EXPORTED FUNCTIONS

list_files("/path");

This function list all entries (files, directories, ...) in a given directory and returns a array.

 task "ls-etc", "server01", sub {
    my @tmp_files = grep { /\.tmp$/ } list_files("/etc");
 };
ls($path)

Just an alias for list_files

symlink($from, $to)

This function will create a symlink from $from to $to.

 task "symlink", "server01", sub {
    symlink("/var/www/versions/1.0.0", "/var/www/html");
 };
ln($from, $to)

ln is an alias for symlink

unlink($file)

This function will remove the given file.

 task "unlink", "server01", sub {
    unlink("/tmp/testfile");
 };
rm($file)

This is an alias for unlink.

rmdir($dir)

This function will remove the given directory.

 task "rmdir", "server01", sub {
    rmdir("/tmp");
 };
mkdir($newdir)

This function will create a new directory.

 task "mkdir", "server01", sub {
    mkdir "/tmp";
         
    mkdir "/tmp",
      owner => "root",
      group => "root",
      mode => 1777;
 };
chown($owner, $file)

Change the owner of a file or a directory.

 chown "www-data", "/var/www/html";
     
 chown "www-data", "/var/www/html",
                        recursive => 1;
chgrp($group, $file)

Change the group of a file or a directory.

 chgrp "nogroup", "/var/www/html";
    
 chgrp "nogroup", "/var/www/html",
                     recursive => 1;
chmod($mode, $file)

Change the permissions of a file or a directory.

 chmod 755, "/var/www/html";
    
 chmod 755, "/var/www/html",
               recursive => 1;
stat($file)

This function will return a hash with the following information about a file or directory.

mode
size
uid
gid
atime
mtime
 task "stat", "server01", sub {
    my %file_stat = stat("/etc/passwd");
 };
is_file($file)

This function tests if $file is a file. Returns 1 if true. 0 if false.

 task "isfile", "server01", sub {
    if( is_file("/etc/passwd") ) {
       say "it is a file.";
    }
    else {
       say "hm, this is not a file.";
    }
 };
is_dir($dir)

This function tests if $dir is a directory. Returns 1 if true. 0 if false.

 task "isdir", "server01", sub {
    if( is_dir("/etc") ) {
       say "it is a directory.";
    }
    else {
       say "hm, this is not a directory.";
    }
 };
is_readable($file)

This function tests if $file is readable. It returns 1 if true. 0 if false.

 task "readable", "server01", sub {
    if( is_readable("/etc/passwd") ) {
       say "passwd is readable";
    }
    else {
       say "not readable.";
    }
 };
is_writable($file)

This function tests if $file is writable. It returns 1 if true. 0 if false.

 task "writable", "server01", sub {
    if( is_writable("/etc/passwd") ) {
       say "passwd is writable";
    }
    else {
       say "not writable.";
    }
 };
is_writeable($file)

This is only an alias for is_writable.

readlink($link)

This function returns the link endpoint if $link is a symlink. If $link is not a symlink it will die.

 task "islink", "server01", sub {
    my $link;
    eval {
       $link = readlink("/tmp/testlink");
    };
    
    say "this is a link" if($link);
 };
rename($old, $new)

This function will rename $old to $new. Will return 1 on success and 0 on failure.

 task "rename", "server01", sub {
    rename("/tmp/old", "/tmp/new");
 }; 
mv($old, $new)

mv is an alias for rename.

chdir($newdir)

This function will change the current workdirectory to $newdir. This function currently only works local.

 task "chdir", "server01", sub {
    chdir("/tmp");
 };
cd($newdir)

This is an alias of chdir.

df([$device])

This function returns a hashRef reflecting the output of df

 task "df", "server01", sub {
     my $df = df();
     my $df_on_sda1 = df("/dev/sda1");
 };
du($path)

Returns the disk usage of $path.

 task "du", "server01", sub {
    say "size of /var/www: " . du("/var/www");
 };
cp($source, $destination)

cp will copy $source to $destination (it is recursive)

 task "cp", "server01", sub {
     cp("/var/www", "/var/www.old");
 };
mount($device, $mount_point, @options)

Mount devices.

 task "mount", "server01", sub {
    mount "/dev/sda5", "/tmp";
    mount "/dev/sda6", "/mnt/sda6",
               fs => "ext3",
               options => [qw/noatime async/];
    #
    # mount persistent with entry in /etc/fstab
      
    mount "/dev/sda6", "/mnt/sda6",
               fs => "ext3",
               options => [qw/noatime async/],
               persistent => TRUE;
 

 };
umount($mount_point)

Unmount device.

 task "umount", "server01", sub {
    umount "/tmp";
 };
glob($glob)
 task "glob", "server1", sub {
    my @files_with_p = grep { is_file($_) } glob("/etc/p*");
 };

1 POD Error

The following errors were encountered while parsing the POD:

Around line 83:

Non-ASCII character seen before =encoding in '} list_files("/etc");'. Assuming UTF-8