ahh

~$ which cat
  • dan@upvote.au
    link
    fedilink
    arrow-up
    1
    ·
    4 days ago

    cat is misunderstood a lot. The purpose of cat is to combine multiple files together (it’s literally short for “concatenate”), like cat *.log to combine all log files together.

    If you’re just using it for a single file, then you should just redirect the file to stdin. These two command lines behave similarly:

    cat foo.txt | some-command
    
    some-command < foo.txt
    

    For head, tail, grep and some other commands, you can just pass in the file name directly as an argument (e.g. grep whatever foo.txt).

    • lokalhorst@feddit.org
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      4 days ago

      If I just want to look at the file, is there a better way than cat foo.txt? I guess I can’t just do < foo.txt

      • dan@upvote.au
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        3 days ago

        Admittedly I still use cat for this.

        This also works too, but it’s more verbose:

        echo "$(<foo.txt)"
        

        It’s mentioned in the Bash man pages:

        The command substitution $(cat file) can be replaced by the equivalent but faster $(< file).

        EDIT: I was just informed that simply <foo.txt works too.