this post was submitted on 11 Jul 2023
2 points (100.0% liked)

Linux

1259 readers
77 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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?

top 8 comments
sorted by: hot top controversial new old
[–] StudioLE@programming.dev 2 points 1 year ago

You should consider who your audience is, are they all CLI experts familiar with the difference in syntax? That seems unlikely.

I'd always write documentation in a way that's accessible to most users. The difference between $ and # syntax is highly esoteric.

sudo on the other hand is familiar to almost everyone. It's one of the first things mentioned in beginners guides.

I wouldn't even prefix your commands with $ as an experienced user is quite likely to include that when copying the command.

A lot of people are citing the arch wiki as a standard that uses # but isn't the entire meme around arch that its a notably complex system?

[–] smo@lemmy.sdf.org 2 points 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.

[–] reggie@lemmy.fmhy.ml 1 points 1 year ago (1 children)

I dislike when documentations add sudo because what if I am root already or what if sudo is not installed on my machine and I cannot just copy and paste the lines because I have to avoid pasting sudo.

Also fyi ArchWiki also uses the # approach.

[–] StudioLE@programming.dev 2 points 1 year ago

Can't you just select the text without the sudo prefix..?

[–] bizdelnick@lemmy.ml 1 points 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
[–] canpolat@programming.dev 1 points 1 year ago (1 children)

I don't work much with Linux systems these days, but I would vote for $ sudo over #. Two reasons:

  1. It's easy to overlook the prompt. That part is basically "some characters before the actual command", so I don't normally pay attention it.
  2. # is also used for comments. I think it would be confusing to use the same character for two widely different things.
[–] exu@feditown.com 0 points 1 year ago (1 children)

So $ sudo in general any time I need to run something as root?
I'll have to think about that some more. I think I rather dislike "forcing" sudo on all commands as root.

[–] canpolat@programming.dev 1 points 1 year ago

Ok, maybe I misunderstood your question. I though you were proposing # instead of $ sudo and I meant to say that being explicit is better.