This might be a stupid question, but hear me out.
I regularly document steps to install various software for myself on my wiki
More recently, I managed to use different custom text in the source markdown to prepend # and $ automatically, so commands can be copied more easily while still clarifying if it should be run as a normal user or as root.

Run command as user

$ some cool command

Run command as root/superuser with sudo

# some dangerous command

I usually remove and sudo and use the # prefix. However, in some cases, the sudo actually does something different that needs to be highlighted. For example, I might use it to execute a command as the user www-data

sudo -u www-data cp /var/www/html/html1 /var/www/html/html2

I often use $ as a prefix, but # would also make sense.
How would you prefix that line?

  • smo@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I have a fairly opinionated stance on this. Except in your sudo example where you’re specifically using sudo for a reason, I document all commands as non-root, and do not instruct them to raise privs. Whether or not they have, want or need privs, and how they raise them, is their system not mine.

    It’s not exactly user friendly, but I don’t like to encourage people to blindly copy & paste commands that raise privs. That should be a conscious decision where they stop and ask themselves if & why it’s necessary.

  • bizdelnick@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    # is a standard shell prompt for root, and only for root. For commands executed by any other user, including sudo, use $.

    In general it is a bad practice to use sudo in documentation because in many distros it is not available by default. I would use su for your example. However system users have no passwords, so you need to become root first, and only after that change user to avoid prompting a password. So I would write

    # su -s /bin/bash www-data
    $ cp /var/www/html/html1 /var/www/html/html2
    

    or

    # su -s /bin/sh -c 'cp /var/www/html/html1 /var/www/html/html2' www-data
    

    But if you are sure that sudo is installed and configured on a user’s machine, you may write

    $ sudo -u www-data cp /var/www/html/html1 /var/www/html/html2
    
    • MimicJar@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      I disagree completely.

      The bad practice is running commands directly as root. It’s fine if you prefer for your own environment but sudo is the best practice.

      Additionally, which distro doesn’t have sudo? I’m sure there are some but by far the majority of distos have and use sudo.

      • bizdelnick@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Bad practice is not using sudo (I do use it), but assuming that everyone has sudo installed and configured the same way as you have.

        Additionally, which distro doesn’t have sudo? I’m sure there are some but by far the majority of distos have and use sudo.

        Almost all distros have sudo. But many of them don’t install it by default. Most popular distros except Ubuntu (I mean Debian, Fedora and RHEL clones) provide a choice to user at install time: set the root password or install sudo and enable it for the admin user. In OpenSUSE sudo is installed by default, however it is configured in slightly different way than usually. Etc., etc.