http://qs321.pair.com?node_id=1038489


in reply to Re^6: What's wrong with @ARGV - or with me?
in thread What's wrong with @ARGV - or with me?

I can understand your point of view. If you mostly work in a *nix environment, but occasionally have to use a Windows machine, having the *nix shell of your preference available would undoubtedly improve your productivity for those brief interactions. Though if I were in that position, I'd probably just install a VM instance of my preferred *nix dist on the Windows machines.

From a Windows user POV, the problem I have will Cygwin is that it is neither one thing nor the other. The worst of both worlds. By emulating (badly) those native *nix features that windows does not provide for natively; and effectively disabling much of the feature set that Windows does provide natively; you end up with a sluggish and clumsy environment that is "okay" (perhaps) for the occasional visit, but not somewhere you want to spend any great amount of time.

For example, to safely run multiple concurrent Perls, *nix requires something like PerlBrew; whereas I easily run multiple perl installs using Windows native facilities -- which Cygwin effectively disables.

I actively prefer Windows not for its GUI aspects -- although they are still (IMO) superior to any of the various *nix windowing environments -- but because I much prefer cmd.exe to (z|k|z|ba)sh, which Cygwin imposes upon me.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^8: What's wrong with @ARGV - or with me?
by johngg (Canon) on Jun 12, 2013 at 21:30 UTC
    If you mostly work in a *nix environment, but occasionally have to use a Windows machine

    I'm always using a Windows machine because that's what my company insists I use to do my work. The standard build is pure MS Windows, suitable for all the management twonks who decide these things and who think Powerpoint and that well known database system Excel are all anyone needs :-/

    just install a VM instance of my preferred *nix dist

    If the laptop provided wasn't one of Noah's hand-me-downs that struggles to even boot I probably would, although my preference would be for a native Linux laptop with a Windows VM just for the corporate stuff like email and timesheets. Unfortunately, they won't let us do that so we have to add our own choice of tools, things like PuTTY and Cygwin, on top of the standard build to make our jobs easier.

    By emulating (badly)

    I don't know. Perhaps it does some things badly but it does the things I need very well. It gives me an X-Window Server so that I can run an xterm and use my favourite editor (nedit) to develop Perl scripts or display server GUI tools on my screen. SSH keys work seamlessly between Cygwin and Linux and I can use scp, sftp or rsync to deploy the scripts and move files between my laptop and servers. It gives me utilities like ccrypt, cpio and tar and plenty more. In short, it does what I need.

    I much prefer cmd.exe to (z|k|z|ba)sh

    I much prefer the more mouse-centric copy'n'paste of xterms and find that of cmd.exe extremely clunky when forced to use it on terminal servers that don't have Cygwin installed, which is all of them, a battle yet to be won :-)

    Until they allow me to use a Linux laptop for my work I'll continue to use what is for me the next best thing, Cygwin.

    Cheers,

    JohnGG

Re^8: What's wrong with @ARGV - or with me?
by Crackers2 (Parson) on Jun 12, 2013 at 15:28 UTC
    but because I much prefer cmd.exe to (z|k|z|ba)sh

    I'd be interested in knowing your reasons for this. I do most of my work at a linux shell prompt, and I've never really found cmd.exe to be useful for anything other than starting console programs.

    I'm not trying to start some windows vs linux flamewar here. I've only had to write a couple of batch files in the last few years, so maybe cmd.exe has more functionality now.

    This is one of the uglies from my last script:

    for /F "tokens=*" %%i in ('findvmip') do set vmip=%%i%

    For with the bash equivalent would be a simple

    vmip=`findvmip`

    A quick google also still doesn't turn up any way to create functions in cmd. And command line editing functionality in cmd appears to lack a lot of the (to me) convenient bash stuff as well

    So what's the thing that makes cmd preferable for you?

      You've got Perl, why do you need all that other stuff from a shell?

      (Sorry to butt into a private conversation, but I couldn't help overhearing)

        Fair enough. In that case it shouldn't really matter what shell you use though, so other than perhaps for its line-editing functionality there would be no reason to prefer one over the other, right?

      So what's the thing that makes cmd preferable for you?

      That's a really good question and one I may take some time to think abaout and come up with a more detailed answer.

      For now I'll mention 4 things:

      • It's not just one single thing, but rather the accumulation of many things.
      • I rarely ever write .bat/.cmd scripts -- a quick search showed up just 6 that I wrote and use regularly. If I need a script, I use Perl.

        Indeed, the vast majority of the .bat/.cmd files the search turned up on my system are those that are distributed with Perl itself that are produce using the pl2bat utility.

        These are weird -- and in my opinion, woeful -- hydrid scripts that contain complete perl programs wrapped over with a few lines of batch script that simple invoke perl to invoke the embedded Perl code.

        I see no purpose nor utility in this process and abhor them; any error messages they produce have the wrong line numbers; when you try to edit them, their having the wrong extension means your editor tries to apply the wrong syntax highlighting and you end up with a garbled mess; and if you edit the original .pl and then run the command you get the uneditted .bat version instead; if you try to abort them with ^C; you get a useless damn prompt asking Terminate batch job (Y/N)? which is just infuriating. Yuck!

      • In part, my preference for the simplicity of cmd.exe is related to my preference for the simplicity of my preferred editor: textpad.

        I prefer my 'simple', non-programmable editor because it is non-programmable. It is because I do not get tempted to try and perform tasks that actually require a programming language, and then waste time either jumping through hoops trying to make an inadequate tool do what I need; or having to perform a wholesale conversion to a proper programming language, once I reach the limits of the editors built-in facility.

        In the (distant) past I used various fully programmable editors; and programmed them extensively to my taste, only to find that when I no longer had access to my customised version -- as when on a customer site with protectionist policies in force; or when I changed jobs and had to use a different system were the editor I had customised was no longer available; that I had become dependent upon the things I had programmed it to do and my productively went through the floor for several weeks whilst I became used to their absence (or worse; wasted more time re-creating them as best I could in the new environment.)

        My feeling that programmable editors were more hindrance than help came a few years later when I subcontracted a guy for a month, to finish a piece of work that my workload didn't allow me time to do, and when after two weeks I asked for a progress report he had made none. I then inspected the files in hos home directores and discovered that he had literally made no changes at all to the source files he was supplied with. Further investigation -- of the nightly incremental backups -- showed that he had spent the entire 2 weeks customising the programmable editor. He'd spent his time writing reams and reams of editor scripts: to put elaborate decorations around blocks of comments; to single & double walled line-character boxes using the cursor keys; to construct and edit his timesheets; to maintain his CV -- including an entry showing his new expertise with the programmable editor!; and so on. But not a single line in any of the source files he was meant to be working on had changed.

        So it is with shells. The simpler the shell, the less likely it is that I wil be tempted to try and develop serious tools (or dog forbid, applications) using them, rather than a language (like Perl) designed for the job. Many years ago when working in a mixed NT/HP-UX environment, I developed an elaborate real-time monitoring tool using a mix of csh/sed/other *nix tools. I didn't know perl back then -- indeed, it was suggested to me and I took one look at half a dozen examples of Perl and rejected it as line noise. (In my defense, it was Perl 4 and from memory, the unknown author(s) of those examples (dug up by a altavista search) was probably no experts.

        Later when I had become a convert to Perl 5, I looked back on the extreme efforts (and hours) it had taken to get that tool working and realised just how much simpler it would have been using Perl, (probably even with Perl 4), but we live and learn.

      • Finally, I infinitely prefer the line editing, command line history and cut&paste facilities of a windowed cmd.exe session to anything available on *nix.

        In part that comes down to familiarity, but it goes much further. Every keyboard I've used in the past 20+ years has had arrow keys; home & end; delete & insert; pgup & pgdn; a set of programmable function keys. These keys perform the same tasks in just about every application I use -- pdf readers excepted. Switching from one application to another and muscle memory allows me to use them in essentially the same way everywhere. And that has been the case going right back to circa 1985 or so with the earliest versions of OS/2 that I helped develop. (And even before that with DOS to some degree; though much less so.)

        Having become used to that, every experience I have had with using *nix in various forms from HP-UX to BSD to half a dozen flavours of Linux just leaves me with finding them all wanting.

        Perhaps if I had started out using *nix at an earlier age it would be different. Having said that; my first truly programmable editor was a beast called TECO(VTEDIT) (the progenitor of EMACS) on PDP & VAX hardware running variously RSTS/E, RT11, and IAS; and nothing in this world would persuade me to go back to either it or its offspring.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        In part, my preference for the simplicity of cmd.exe is related to my preference for the simplicity of my preferred editor: textpad. I prefer my 'simple', non-programmable editor because it is non-programmable. It is because I do not get tempted to try and perform tasks that actually require a programming language, and then waste time either jumping through hoops trying to make an inadequate tool do what I need; or having to perform a wholesale conversion to a proper programming language, once I reach the limits of the editors built-in facility.

        Ok that makes sense. For me personally there's still a vast amount of tasks that make more sense to do in the shell than in an actual program, but I can certainly understand the other opinion.

        Finally, I infinitely prefer the line editing, command line history and cut&paste facilities of a windowed cmd.exe session to anything available on *nix.

        This one does still puzzle me, because:

        Every keyboard I've used in the past 20+ years has had arrow keys; home & end; delete & insert; pgup & pgdn; a set of programmable function keys. These keys perform the same tasks in just about every application I use

        arrows,home/end,pgup/pgdown work the same in most linux terminals as in the windows commands prompt (though I do admit that some may not be set up right by default). The functions keys in the command prompt do not appear to do anything remotely similar to what they do in other apps. (F3 isn't search like it is in most apps, F4 does some delete thing which I've never seen anywhere else)

        Cut and paste is probably just familiarity; I very much prefer being able to just select with the mouse and right-click to paste over have to explictly click "mark" first.

        Command history seems a lot more powerful in bash; cmd seems limited to a simple up/down arrow? But that might be another simpler-is-better thing for you?

        Overall that was a very enlightening answer. I'd been trying to think of functionality that was _missing_ from bash, while it turned out to be not about that at all.