[software and hardware technology originating from or otherwise pertinent to planet earth]
This command has the effect of checking each of the indicated files in the source tree against the CVS repository - errors should be propagated to stderr if a file in the source tree does not exist in the CVS repository - this cmd should be refined into a script which tests for error on status and tries to add source files which do not appear to be in the repository....
for fn in *.{css,js,html,php} ./xml/*.xml ./xml/services/*.xml ./js/*.js ;
do echo $fn ;
cvs status $fn;
echo ""; done > cvs-status.txt
Note that the command cvs status [in src dir, w/ no args] does something similar to the above command, differing in that using cvs status may not handle the cases a source file exists which has not been added to the repository.
The CVS manpage does not address this:
status [-lRqQ] [-v] [files...]
Requires: working directory, repository.
Changes: nothing.
Display a brief report on the current status of files with
respect to the source repository, including any ``sticky'' tags,
dates, or -k options. (``Sticky'' options will restrict how
`cvs update' operates until you reset them; see the description
of `cvs update -A...'.)
You can also use this command to anticipate the potential impact
of a `cvs update' on your working source directory. If you do
not specify any files explicitly, reports are shown for all
files that cvs has placed in your working directory. You can
limit the scope of this search to the current directory itself
(not its subdirectories) with the standard -l option flag; or
you can explicitly request recursive status reports with the -R
option.
The -v option causes the symbolic tags for the RCS file to be
displayed as well.
http://linux.com/learn/docs/ldp/811-Visual-Bell
The Visible bell mini-Howto describes the measures necessary to disable audio processing of the ASCII system bell (0x07 – BEL) character as a console "beep" in various shells and applications, including Bash and Emacs. under Linux.
Labels: 0x0000, ascii, bash, bell, emacs, howto, linux, shell, visual-bell
The following is text copied from the mysql(3) manual page:
You can execute SQL statements in a script file (batch file) like this:
shell> mysql db_name < script.sql > output.tab
The MySQL version 5.x and greater also provide a mysqldump which has an XML output switch. This causes mysqldump to output XML on stdout such that the mysqldump output can be used directly in an XML document output stream.
http://www.gnu.org/software/bash/manual/bashref.html
## ## Set that annoying Cygwin Bash prompt...;) ## ## There was an error in this string the previously ## published version - here is the corrected version. ## This is Bash shell script code; it should go in the ## file ~/.bashrc in the user's HOME directory - it ## could also go in /etc/bashrc ## export PS1='\[\033[32m\]\u@\h: \[\033[33m\w\033[0m\] \$'
In constructing a web application with more than 2 PHP source modules, I found that it is useful to have a quick and easy way of finding a syntax error that may exist in one (or more) of a list of included modules.
Getting a List of PHP Includes
There is a function in PHP for this, which we will get back to in a moment. For right now I wanted to address some things we can do at a Bash prompt to troubleshoot why a script may not be sending any output to the browser on STDOUT.
That's a very common situation when you're working on a large application with many modules. It becomes important in those situations to be meticulous about syntax checking each change in any code before making additional changes.
I've been using the 'Lint' mechanism provided by PHP to syntax check PHP source code. It works like this:
$php -l <fileName>
Now, some of you might already be seeing the implications of this. Hows about:
$for fn in \
`grep require frmPlayerInformation_body.09.inc\
| perl -ne '/\"([a-zA-Z0-9.]+)\"\;/ && print "$1\n";'` ;;
do
echo $fn ;;
php -l $fn ;;
echo "########" ;;
done
The implications for scripting this operation from the command line are clear.
PHP provides a function to get a list of module dependencies for a running script. It's called
get_included_files()
… and here's the URL for the docs: http://us2.php.net/manual/en/function.get-included-files.php
Problems with this Approach
There is at least one serious deficiency inherent in using the require, require_once, include, and include_once directives as the sole indicators of module dependency; that is that, simply, the modules which are required or "included" due to HTML element attribute values.
Examples include the ACTION attrubute value(s) of HTML FORM element(s), the SRC attribute values for SCRIPT elements. and so on. IFRAME and LINK elements are also among those that can cause a module dependency within the HTML, CSS, or Javascript layer(s) generated by PHP code of a site.
Labels: 0x0000, bash, code, css, html, javascript, linux, perl, php, script, source, webappdev
Labels: 0x0000, bash, gpg, linux, perl, php, script, shebang shell, SSH, ssh-add, ssh-agent, ssh-copy-id, vnc
http://perldoc.perl.org/perlop.html#Quote-Like-Operators
This is an excerpt from the Perl manuals at perlDoc.perl.org concerning redirection of STDOUT and STDERR in Perl:
Because backticks do not affect standard error, use shell file descriptor syntax (assuming the shell supports this) if you care to address this. To capture a command's STDERR and STDOUT together:
$output = `cmd 2>&1`;To capture a command's STDOUT but discard its STDERR:
$output = `cmd 2>/dev/null`;To capture a command's STDERR but discard its STDOUT (ordering is important here):
$output = `cmd 2>&1 1>/dev/null`;To exchange a command's STDOUT and STDERR in order to capture the STDERR but leave its STDOUT to come out the old STDERR:
$output = `cmd 3>&1 1>&2 2>&3 3>&-`;To read both a command's STDOUT and its STDERR separately, it's easiest to redirect them separately to files, and then read from those files when the program is done:
system("program args 1>program.stdout 2>program.stderr");The STDIN filehandle used by the command is inherited from Perl's STDIN. For example:
open BLAM, "blam" || die "Can't open: $!"; open STDIN, "<&BLAM"; print `sort`;will print the sorted contents of the file "blam".
The I/O Operators manual also has some interesting information about standard file I/O in Perl.
I needed something to tell me what VNC server (vncserver()) instances were running, and on which DISPLAY ports, and with what resolution(s) (geometry), so I wrote one. Here is the HTMLized Perl source code:
#!/usr/bin/perl -w ###################################################################### ## FILE: findvncport.pl ## DESC: display information about VNC server instances ## VERS: 01 ## DATE: 2009-05-13 ## AUTH: pdw@thesoftwaremaster.com ############################################################################## ## USAGE NOTES: ## ## This is a script to find out the connection port number and screen ## geometry of any VNC server instances currently running on a host. ## ## This functionality is most useful to a user who needs to know what VNC ## server instance(s) is(are) running, and on what port(s) - E.G. at logon ## (to a shell) time when a vncserver has been left running. ## ## For convenience, the geometry of the X interface, the PID of Xvnc (the ## actual X server invoked by vncserver), and such other info as we can ## glean from the process listing on the host. ## ## Note that this script only returns information about VNC instances ## running under the UID of the user who runs the script. The value of ## the environment variable $USER is used to filter the process listing. ## The user's $UID value is displayed, but is not used. ## ## This program is designed to be run on a remote, ssh-accessible host ## computer during the login and user account initialization process. ## ## EXAMPLE: ## ## I place this script in the .bash_login shell script that runs at user ## login. ## ## ## _TODO_: there is no buglist, yet, but there are some things need done to ## this script right to begin with (i.e. the functionality is ## marginal, and will almost certainly "break" the first time someone ## tries to use it on some other platform or environment. First on ## the list of things to do must be: Fix the regular expression ## parsing which finds the data in the process listing. As the code ## is now, these regex statements will break e.g. if the Xvnc command ## line doesn't look like it expects. 2nd on the list has to be the ## addtion of command line parameters to modify the output of the ## script. :_TODO_ ## ############################################################################# ## REVISION HISTORY: ## ## 01: 2009-05-13 pdw ## Initial version ## ############################################################################# ## ## Load up some environmental info... $curruid = `echo \$UID`; $curruser = `echo \$USER`; @processes = `ps x -u \$USER`; chomp($curruid); chomp($curruser); ## @displays gets the data about whatever VNC displays are running @displays = (); while ($_ = shift(@processes)) { my $d = {}; my $found = 0; chomp; next unless ($_); next unless (/^\s*(\d+).+Xvnc\s*(\:\d+)/) && ( $display = $2, $vncpid = $1 ); # get desktop m/-desktop(.+)-httpd/ && ($desktop = $1); m/-geometry\s+(\d+x\d+)/ && ( $geometry = $1 ); m/-depth\s+(\d+)/ && ( $depth = $1 ); $d = { 'Display' => $display, 'VNC PID' => $vncpid, 'Desktop' => $desktop, 'Geometry' => $geometry, 'Depth' => $depth, }; push(@displays, $d); } ## Display what we found out print "VNC server info for USER \'$curruser\':\n"; if (scalar(@displays)) { foreach my $disp (@displays) { foreach my $k (keys(%$disp)) { print" $k: \t".$disp->{$k}."\n"; } } } else { print " VNC server not found in process listing. "; }
Labels: bash, linux, perl, shebang, shell, source, tightvnc, vnc, x, xorg.conf
#!/usr/bin/perl -w # # ls2csv.pl - show a listing of the PHP file # (*.inc and *.php) # as a CSV table; no table headings included in # output; no params defined # sub create_listing($) { my $xtn = shift; my @files = `ls -ghoG *.$xtn`; foreach my $f (@files) { chomp($f); $f =~ s/^\s*[-rw]+\s+\d\s+(.+)/$1/; $f =~ s/ /\",\"/g; $f =~ s/^(.)/\"$1/; $f =~ s/(.)$/$1\"/; print "$f\n"; } } map { create_listing($_) } ("inc","php");
Labels: 0x0000, bash, code, gnu, linux, perl, script, shebang, source
This is a one-liner that shows something about why grep has behaved so strangely in the past when we've tried to feed it regular expressions as the pattern to match:
du -h | grep "^[1-9]\+\.[0-9]\+[M]" | sort
The trick here was to add the backslashes ('\') in front of the plus signs ('+'). apparenlty grep interprets the '+' literally if it is not escaped.
Note A: the Debian-blows-goats version of grep is not built with support for Perl regular expressions (bug #15051), which figures, since the Debian-POS developers only seem to know Python.
Note B: it apparenlty makes no difference to [this version] grep if the quote delimiters used in the above command are single- or double-quotes [this is counter-intuitive, since use of single quotes typically means no escape characters are needed], but the quotes must be there for the command to work - leaving them out causes the command to emit no output.
2006/12 2007/01 2007/05 2007/06 2007/07 2007/08 2007/10 2008/01 2008/02 2008/03 2008/05 2008/11 2008/12 2009/01 2009/02 2009/03 2009/04 2009/05 2009/07 2009/09 2009/10 2009/11 2009/12 2010/01
Subscribe to Posts [Atom]