Merge branch 'master' of https://gitlab.com/ole.tange/tangetools
This commit is contained in:
commit
9644acd278
8
Makefile
8
Makefile
|
@ -1,8 +1,8 @@
|
||||||
CMD = blink bsearch em field forever G gitnext goodpasswd histogram \
|
CMD = blink bsearch em encdir field forever G gitnext goodpasswd \
|
||||||
neno pdfman puniq ramusage rand rclean rn rrm stdout T timestamp \
|
histogram neno pdfman puniq ramusage rand rclean rn rrm stdout T \
|
||||||
tracefile upsidedown w4it-for-port-open wifi-reload wssh
|
timestamp tracefile upsidedown w4it-for-port-open wifi-reload wssh
|
||||||
|
|
||||||
all: blink/blink.1 bsearch/bsearch.1 G/G.1 gitnext/gitnext.1 goodpasswd/goodpasswd.1 histogram/histogram.1 neno/neno.1 pdfman/pdfman.1 puniq/puniq.1 rand/rand.1 rn/rn.1 rrm/rrm.1 stdout/stdout.1 timestamp/timestamp.1 tracefile/tracefile.1 T/T.1 upsidedown/upsidedown.1 wifi-reload/wifi-reload.1 wssh/wssh.1
|
all: blink/blink.1 bsearch/bsearch.1 encdir/encdir.1 G/G.1 gitnext/gitnext.1 goodpasswd/goodpasswd.1 histogram/histogram.1 neno/neno.1 pdfman/pdfman.1 puniq/puniq.1 rand/rand.1 rn/rn.1 rrm/rrm.1 stdout/stdout.1 timestamp/timestamp.1 tracefile/tracefile.1 T/T.1 upsidedown/upsidedown.1 wifi-reload/wifi-reload.1 wssh/wssh.1
|
||||||
|
|
||||||
%.1: %
|
%.1: %
|
||||||
pod2man $< > $@
|
pod2man $< > $@
|
||||||
|
|
22
README
22
README
|
@ -2,6 +2,8 @@ Tools developed by Ole Tange <ole@tange.dk>.
|
||||||
|
|
||||||
Probably not useful for you, but then again you never now.
|
Probably not useful for you, but then again you never now.
|
||||||
|
|
||||||
|
blink - blink disks in a disk enclosure
|
||||||
|
|
||||||
bsearch - binary search through sorted text files.
|
bsearch - binary search through sorted text files.
|
||||||
|
|
||||||
em - Force emacs to run in terminal. Use xemacs if installed.
|
em - Force emacs to run in terminal. Use xemacs if installed.
|
||||||
|
@ -10,32 +12,40 @@ field - Split on space. Give the given field number. Supports syntax 1-3,6-
|
||||||
|
|
||||||
forever - Run the same command or list of commands every second.
|
forever - Run the same command or list of commands every second.
|
||||||
|
|
||||||
G - short hand for multi level grep.
|
G - shorthand for multi level grep.
|
||||||
|
|
||||||
gitnext - Checkout next revision. Opposite of 'checkout HEAD^'.
|
gitnext - Checkout next revision. Opposite of 'checkout HEAD^'.
|
||||||
|
|
||||||
gitundo - Undo last commit.
|
histogram - make and display a histogram on the command line.
|
||||||
|
|
||||||
neno - No error no output. Only print STDERR and STDOUT if the command fails.
|
neno - No error no output. Only print STDERR and STDOUT if the command fails.
|
||||||
|
|
||||||
puniq - Print unique lines the first time they are seen.
|
|
||||||
|
|
||||||
pdfman - Convert man page to pdf and display it using evince.
|
pdfman - Convert man page to pdf and display it using evince.
|
||||||
|
|
||||||
rand - Generate (pseudo-)random data
|
puniq - Print unique lines the first time they are seen.
|
||||||
|
|
||||||
|
ramusage - Display the ram usage of a program using `time -v`.
|
||||||
|
|
||||||
|
rand - Generate (pseudo-)random data.
|
||||||
|
|
||||||
rclean - Remove files with MD5 sums recorded by rrm (see below).
|
rclean - Remove files with MD5 sums recorded by rrm (see below).
|
||||||
|
|
||||||
reniced - Renice all commands running more than 1 CPU minute unless they are niced or whitelisted.
|
reniced - Renice all commands running more than 1 CPU minute unless they are niced or whitelisted.
|
||||||
|
|
||||||
rn - Move file(s)/dir(s) to ~/.rm/ (wastebasket).
|
rn - Move file(s)/dir(s) to .rm/ (wastebasket).
|
||||||
|
|
||||||
rrm - Record file's MD5 sum before removing it.
|
rrm - Record file's MD5 sum before removing it.
|
||||||
|
|
||||||
stdout - Redirect both STDERR and STDOUT to STDOUT.
|
stdout - Redirect both STDERR and STDOUT to STDOUT.
|
||||||
|
|
||||||
|
T - tee stdout to and from temporary files.
|
||||||
|
|
||||||
|
timestamp - prepend timestamp to output.
|
||||||
|
|
||||||
tracefile - List files/dirs being accessed by program.
|
tracefile - List files/dirs being accessed by program.
|
||||||
|
|
||||||
|
upsidedown - flip input upside down.
|
||||||
|
|
||||||
w4it-for-port-open - Block until the given port opens on a given host.
|
w4it-for-port-open - Block until the given port opens on a given host.
|
||||||
|
|
||||||
wastebasket - VLC extension for moving current file to a wastebasket
|
wastebasket - VLC extension for moving current file to a wastebasket
|
||||||
|
|
73
encdir/encdir
Executable file
73
encdir/encdir
Executable file
|
@ -0,0 +1,73 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
: <<=cut
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
encdir - mount encfs dir or create it if missing
|
||||||
|
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<encdir> I<dir>
|
||||||
|
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
B<encdir> uses B<encfs> to mount I<dir>.enc on I<dir>.
|
||||||
|
|
||||||
|
If I<dir> or I<dir>.enc do not exist then they will be created.
|
||||||
|
|
||||||
|
=head1 EXAMPLE
|
||||||
|
|
||||||
|
Mount mydir.enc on mydir:
|
||||||
|
|
||||||
|
encdir mydir
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Copyright (C) 2017 Ole Tange,
|
||||||
|
http://ole.tange.dk and Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
=head1 LICENSE
|
||||||
|
|
||||||
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
at your option any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
=head1 DEPENDENCIES
|
||||||
|
|
||||||
|
B<encdir> uses B<encfs>.
|
||||||
|
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
B<encfs>
|
||||||
|
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
fusermount -u $1 2>/dev/null
|
||||||
|
encfs `readlink -f $1.enc` `readlink -f $1`
|
||||||
|
else
|
||||||
|
fusermount -u `readlink -f $2` 2>/dev/null
|
||||||
|
encfs `readlink -f $1` `readlink -f $2`
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
"$@" 2>&1
|
|
||||||
|
|
||||||
: <<=cut
|
: <<=cut
|
||||||
=encoding utf8
|
=encoding utf8
|
||||||
|
|
||||||
|
@ -54,3 +52,5 @@ B<bash>(1)
|
||||||
|
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
"$@" 2>&1
|
||||||
|
|
|
@ -6,9 +6,9 @@ tracefile - list files being accessed
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
B<tracefile> [-adenu] I<command>
|
B<tracefile> [-adefnu] I<command>
|
||||||
|
|
||||||
B<tracefile> [-adenu] -p I<pid>
|
B<tracefile> [-adefnu] -p I<pid>
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
@ -44,6 +44,13 @@ List only dirs.
|
||||||
List only existing files.
|
List only existing files.
|
||||||
|
|
||||||
|
|
||||||
|
=item B<-f>
|
||||||
|
|
||||||
|
=item B<--file>
|
||||||
|
|
||||||
|
List only files.
|
||||||
|
|
||||||
|
|
||||||
=item B<-n>
|
=item B<-n>
|
||||||
|
|
||||||
=item B<--nonexist>
|
=item B<--nonexist>
|
||||||
|
@ -81,7 +88,8 @@ know which one.
|
||||||
Here B<ls> tries to find B</usr/include/shisa.h>. If it fails,
|
Here B<ls> tries to find B</usr/include/shisa.h>. If it fails,
|
||||||
B<apt-file> will search for which package it is in:
|
B<apt-file> will search for which package it is in:
|
||||||
|
|
||||||
tracefile -n -u ls /usr/include/shisa.h | apt-file -f search -
|
tracefile -n -u ls /usr/include/shisa.h | apt-file -f search - |
|
||||||
|
grep /usr/include/shisa.h
|
||||||
|
|
||||||
=head1 REPORTING BUGS
|
=head1 REPORTING BUGS
|
||||||
|
|
||||||
|
@ -90,7 +98,7 @@ Report bugs to <tange@gnu.org>.
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Copyright (C) 2012,2016 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2012,2016,2017 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
@ -220,7 +228,7 @@ $Global::progname = "tracefile";
|
||||||
Getopt::Long::Configure("bundling","pass_through");
|
Getopt::Long::Configure("bundling","pass_through");
|
||||||
get_options_from_array(\@ARGV) || die_usage();
|
get_options_from_array(\@ARGV) || die_usage();
|
||||||
|
|
||||||
if(not ($opt::exists or $opt::nonexists or $opt::all or $opt::dir)) {
|
if(not ($opt::exists or $opt::nonexists or $opt::all or $opt::dir or $opt::file)) {
|
||||||
$opt::all = 1;
|
$opt::all = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,17 +248,16 @@ while(<IN>) {
|
||||||
my $file = shell_unquote($1);
|
my $file = shell_unquote($1);
|
||||||
# Relative to $dir
|
# Relative to $dir
|
||||||
$file =~ s:^([^/]):$dir/$1:;
|
$file =~ s:^([^/]):$dir/$1:;
|
||||||
my $print = 0;
|
my $print = 1;
|
||||||
if($opt::all
|
if(($opt::dir and not -d $file)
|
||||||
or
|
or
|
||||||
($opt::exists and -e $file)
|
($opt::file and not -f $file)
|
||||||
or
|
or
|
||||||
($opt::dir and -d $file)
|
($opt::exists and not -e $file)
|
||||||
or
|
or
|
||||||
($opt::nonexists and not -e $file)) {
|
($opt::nonexists and -e $file)
|
||||||
$print = 1;
|
or
|
||||||
}
|
($opt::unique and $seen{$file}++)) {
|
||||||
if($opt::unique and $seen{$file}++) {
|
|
||||||
$print = 0;
|
$print = 0;
|
||||||
}
|
}
|
||||||
$print and print $file,"\n";
|
$print and print $file,"\n";
|
||||||
|
@ -262,6 +269,7 @@ sub options_hash {
|
||||||
return
|
return
|
||||||
("debug|D" => \$opt::debug,
|
("debug|D" => \$opt::debug,
|
||||||
"dir|d" => \$opt::dir,
|
"dir|d" => \$opt::dir,
|
||||||
|
"file|f" => \$opt::file,
|
||||||
"uniq|unique|u" => \$opt::unique,
|
"uniq|unique|u" => \$opt::unique,
|
||||||
"exists|exist|e" => \$opt::exists,
|
"exists|exist|e" => \$opt::exists,
|
||||||
"nonexists|nonexist|non-exists|non-exist|n" => \$opt::nonexists,
|
"nonexists|nonexist|non-exists|non-exist|n" => \$opt::nonexists,
|
||||||
|
|
|
@ -83,6 +83,9 @@ end
|
||||||
|
|
||||||
function directory_exists(dir)
|
function directory_exists(dir)
|
||||||
-- Simple checker if dir exists
|
-- Simple checker if dir exists
|
||||||
|
-- shell quote the dirname
|
||||||
|
dir, _ = dir:gsub("([\002-\009\011-\026\\#?`(){}%[%]^*<>=~|; \"!$&'\130-\255])", "\\%1")
|
||||||
|
dir, _ = dir:gsub("\n", "'\n'")
|
||||||
return os.execute("cd " .. dir)
|
return os.execute("cd " .. dir)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue