Basic Shell scripting

shell scripting

1. How do you find out what's your shell? - echo $SHELL
  1. What's the command to find out today's date? - date
  2. What's the command to find out users on the system? - who
  3. How do you find out the current directory you're in? - pwd
  4. How do you remove a file? - rm
  5. How do you remove a - rm -rf
  6. How do you find out your own username? - whoami
  7. How do you send a mail message to somebody? - mail somebody@techinterviews.com -s 'Your subject' -c 'cc@techinterviews.com'
  8. How do you count words, lines and characters in a file? - wc
  9. How do you search for a string inside a given file? - grep string filename
  10. How do you search for a string inside a directory? - grep string *
  11. How do you search for a string in a directory with the subdirectories recursed? - grep -r string *
  12. What are PIDs? - They are process IDs given to processes. A PID can vary from 0 to 65535.
  13. How do you list currently running process? - ps
  14. How do you stop a process? - kill pid
  15. How do you find out about all running processes? - ps -ag
  16. How do you stop all the processes, except the shell window? - kill 0
  17. How do you fire a process in the background? - ./process-name &
  18. How do you refer to the arguments passed to a shell script? - $1, $2 and so on. $0 is your script name.
  19. What's the conditional statement in shell scripting? - if {condition} then … fi
  20. How do you do number comparison in shell scripts? - -eq, -ne, -lt, -le, -gt, -ge
  21. How do you test for file properties in shell scripts? - -s filename tells you if the file is not empty, -f filename tells you whether the argument is a file, and not a directory, -d filename tests if the argument is a directory, and not a file, -w filename tests for writeability, -r filename tests for readability, -x filename tests for executability
  22. How do you do Boolean logic operators in shell scripting? - ! tests for logical not, -a tests for logical and, and -o tests for logical or.
  23. How do you find out the number of arguments passed to the shell script? - $#
  24. What's a way to do multilevel if-else's in shell scripting? - if {condition} then {statement} elif {condition} {statement} fi
  25. How do you write a for loop in shell? - for {variable name} in {list} do {statement} done
  26. How do you write a while loop in shell? - while {condition} do {statement} done
  27. How does a case statement look in shell scripts? - case {variable} in {possible-value-1}) {statement};; {possible-value-2}) {statement};; esac
  28. How do you read keyboard input in shell scripts? - read {variable-name}
  29. How do you define a function in a shell script? - function-name() { #some code here return }
  30. How does getopts command work? - The parameters to your script can be passed as -n 15 -x 20. Inside the script, you can iterate through the getopts array as while getopts n:x option, and the variable $option contains the value of the entered option.

clean up script -- difference between two files

#!/usr/bin/perl


my $totalfile = $ARGV[0];
my $suspectfile = $ARGV[1];
my $outfile = $ARGV[2];

if ($#ARGV != 2) {
print "user script.pl realfile suspectfiel goodfile\n" ;
exit;
}

local $/;
open (SUS,"<" ,$suspectfile) or die " cannot open file " ;
my @allsus = split /\n/, <SUS>;
close( SUS) ;


open (TOT,"<" ,$totalfile) or die " cannot open file " ;
my @total = split /\n/, <TOT>;
close (TOT) ;

my %allsus = map {$_ => 1 } @allsus;

my @allgood = grep {!defined $allsus{$_ } } @total ;

my @new = join "\n", @allgood;

open (OUT,">",$outfile ) or die " cannot open file ";
print OUT "@new";
close (OUT);


Perl file to find duplicate files

#!/usr/bin/perl

use strict ;
use warnings;
use File::Find;
use Data::Dumper;
use Digest::MD5;

my $pth = $ARGV[0];
unless ($pth) {
  print " perl1 path";
  exit ;
}
$\ = $/;
my %size ;
my %unopenfile ;
my %md5;
my @resuts;
my $m5 = Digest::MD5->new;

find( sub {
    return if $_ eq '.' ;
    return  if $_ eq  '..';
    $size {$File::Find::name} = -s if -f ;

    }, $pth ) ;

foreach my $file ( keys %size ){
  next if $size{$file} < 1 ;

  unless (open (f1, "$file") ) {
    $unopenfile{$file}++;
    next ;
  }
  push @{$md5{$m5->addfile(*f1)->hexdigest}}, $file;

  close (f1);
}

foreach my $files ( keys %md5){
  if ($#{$md5{$files}} >= 1){
    push (@resuts, @{$md5{$files}});
  }

}

foreach my $dup (@resuts) {
  print "the duplicate files are $dup"

auto indent

need to put in you /root/.vimrc
:set tabstop=2 softtabstop=2 shiftwidth=2 expandtab
--

Other Articles

Enter your email address: