Skip to content

Ahm... Do you know about test? #1

Closed
@yamadapc

Description

@yamadapc

Sorry if this isn't relevant. This repository showed up on my GitHub newsletter.

Do you know the shell's if statement is actually just syntactic sugar for the test coreutils utility?

http://www.gnu.org/software/coreutils/manual/html_node/test-invocation.html#test-invocation

So on pretty much any shell, you can run:

$ test -e asdf && echo "asdf exists"
$ test -d adsf && echo "adsf exists and is a directory"

And more... You can test for a file's length, it's permissions, it's type, if it's executable, if it's a socket, if it's newer than another file... You can make assertions over strings etc.

This specific case of test can be rewritten as:

$ if [ -e asdf ]; then echo "asdf exists"; fi
$ if [ -d adsf ]; then echo "asdf exists and is a directory"; fi

This is also how loops work in the shell, as far as I recall. Heh... A loop that spawns a Node.js runtime on every iteration would be pretty bad.


I just think it's a little weird for this kind of stuff to exist and even require another module to work...

This would be a pretty good example of going to far with modules, don't you think?

test from coreutils is an example of a useful, fast implementation of something that does 1 thing in the UNIX way... Which sort of means constructing a verb that's modular enough to be composed, but useful enough... A verb.

It seems like if this utility's approach was going to write coreutils, instead of test, there'd be:

  • path-exists
  • path-exists-and-is-directory
  • path-exists-and-is-directory-and-is-newer-than
  • path-exists-and-has-filename-equal-to

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions