← Back to context

Comment by godelski

1 year ago

I feel the same way. The big part for me is that it tells us that owyn doesn't use tab completion if they're forgetting about the ".service" part. Sure, I don't remember either, I don't have to.

I'll add the abstraction for anyone confused

  program [command [subcommand]] [flags] [object]
  e.g.s
  systemctl status sshd.service
  systemctl enable --now sshd.service
  touch -c test.sh
  echo 'Hello World'
  echo "Hello ${USER}"
  

Anything in brackets is optional and might not appear or be available. By command I mean a category of commands. Such as 'pip install' vs 'pip uninstall', which are sub-programs inside the main program. But this can have layers such as 'uv pip install'. Often flags can be used in any order because you'll just loop over all the arguments but this is still the standard order.

There's also the two actor pattern

  program [command [subcommand]] [flags] source destination
  e.g.s
  cp /foo/bar/baz.txt "${HOME%/}/"
  scp -i "${HOME}/.ssh/foo" ${HOME}/to_upload.sh user@remote:~/
  dd if=/dev/urandom of=/dev/diskToDestroy
  rsync /mnt/hdd1/ /mnt/hdd2/

Also the `.service` part is optional anyway for most commands (including the start, stop, restart etc. ones they use in their examples). Only commands that can operate on services and other non-service units require it.