sudo !!
to rerun last command as sudo.history
can be paired with!5
to run the fifth command listed in history.@papertowels@lemmy.one I’ve been working in the bash shell since 1993 and did not know
sudo !!
was a thing. Good lord, I no longer have to press up, press crtl-left a bunch of times, then type sudo enter space anymore. And I can give it an easy-to-remember alias like ‘resu’ or ‘redo’! Ahahaha, this changes everything! Thank you!!We’re all learning tricks in this thread! Grateful for all y’all nerds.
Fifth as in fifth most recent command or fifth oldest?
I believe it’s the fifth oldest - I think
!-5
will get you the fifth impost recent, but I was shown that and haven’t put it into practice.The most common usecase I do is something like
history | grep docker
to find docker commands I’ve ran, then use!
followed by the number associated with the command I want to run in history.
Love these, I used a terminal select from history with fuzzy finding to do the !5 as
redo
cd
thenls
thencd
thenls
maybe I’ll throw ala -a
I use -A instead, which doesn’t show “.” and “…”
Nah you gotta alias ls -a to la for more efficiency.
l
Don’t forget your
pwd
thrown in to get back your bearings!Done be silly, that’s part of my prompt.
I really like that
cd
command. :PYou’ll love
zoxide
then.deleted by creator
The command is ‘z’
deleted by creator
It’s in the official docs for zoxide, you are supposed to use the z alias, and many distros just set it up directly like that. I love doing
z notes
from wherever I am.That doesn’t require a separate package, especially one which uses eval on every new shell. And isn’t messing with my distros or personal aliases (and doesn’t introduce cargo-packaging).
Simply adding one to two (you get the gist) directories and a keybind for
cd ..
is more slick. There are cases where you might usepushd .
but even then other tooling should already cover your needs.It’s also so easy that you can temporarly append to
$CDPATH
for a specific session. But again, then a second pane or pushd is already available.Now downvote me, lemmy.
When you set it up you tell it which command you want. Default is “cdi” but I changed it to “cd” immediately.
On arch the command is just
z
Hm I wonder, is it really a command? I thought it is just a function of the shell to change the working directory.
A command is anything you execute in the shell.
cd
is just a built-in command
Sudo !!
It reruns the last command as sudo.
Pretty useful since I’m always forgetting.
Most commands soon followed by sudo !!
control+R
in bash, it lets you quickly search for previously executed commands.
its very useful and makes things much quicker, i recommend you give it a try.
I use this constantly
i rely on this in my job. if i really need it, i’ll be using it often enough that it’ll always be in ^R distance :)
I went a little overboard and wrote a one-liner to accurately answer this question
history|cut -d " " -f 5|sort|uniq -c|sort -nr|head -5
Note:
history
displays like this for me20622 2023-02-18 16:41:23 ls
I don’t know if that’s because I setHISTTIMEFORMAT='%F %T '
in .bashrc, or if it’s like that for everyone. If it’s different for you change-f 5
to target the command. Use-f 5-7
to include flags and arguments.My top 5 (since last install)
2002 ls 1296 cd 455 hx 427 g 316 find
g
is an alias for gitui. When I include flags and arguments most of the top commands are aliases, often shortcuts to a project directory.Not to ramble, but after doing this I figured I should alias the longest, most-used commands (even aliasing
ls
tol
could have saved 2002 keystrokes :P) So I wrote another one-liner to check for available single characters to alias with:for c in a b c d e f g h i j k l m n o p q r s t u v w x y z; do [[ ! $(command -v $c) ]] && echo $c; done
In .bash_aliases I’ve added
alias b='hx ${HOME}/.bash_aliases'
to quickly edit aliases andalias r='source ${HOME}/.bashrc'
to reload them.Helix?
Yup! Migrated from VSCodium; wanted to learn a modal editor but didn’t have the time or confidence to configure vim or neovim. It’s been my go-to editor for 2+ years now.
I’ve been using vi (just the basics) for ~4 years, I don’t think I could be arsed to pick up the keybindings the other way around lol. I’ve heard very good things about Helix, of course
As another longtime Vi user - I had a hell of a time & wound up switching back lol
I think for a lot of folks Helix would be intuitive. Vi has her hooks in me, though.
Holy shit, you’re a madman
deleted by creator
history -i
clear
because apparently I am too scatterbrained to comprehend more than one full page of text in the terminalI like using CRTL+L to clear. It’s nice because you can have a command typed out and still be able to press CTRL+L to clear the screen and keep the command typed out.
I almost never use clear because i’m afraid if i will need the text later.(just like infinity tab number on firefox)
Use script instead, you can even have it in your .*shrc to run automatically whenever a shell is invoked (make sure to add a check that the shell wasn’t invoked by script, so you don’t inadvertently forkbomb yourself)
Alternatively, just use Terminator as yout terminal emulator and enable the logger anytime you need it to record the shell session.
Also, use bookmarks. That’s what they’re there for. 100 tabs is a great way to clutter your brain, but terrible for productivity. If you forget about it after bookmarking, it wasn’t important to begin with.
tldr
is great. Basically a crowd-sourced alternative toman
with much more concise entries. Example:$ tldr dhcpcd DHCP client. More information: <https://roy.marples.name/projects/dhcpcd>. Release all address leases: sudo dhcpcd --release Request the DHCP server for new leases: sudo dhcpcd --rebind
Well…slap my ass and call me Mary…
Thanks kind internet stranger!:O
Woah, that’s dope as heck. Thank you!
sudo udevadm monitor
Figuring out which usb device went on holiday.
Wow, super useful command. Starring this comment
After using too much WINE, I type
pwd
,whoami
tldr
because I am too impatient to read through man pages or google the exact syntax for what I want to do.There are exactly three kinds of manpages:
- Way too detailed
- Not nearly detailed enough
- There is no manpage
I will take 1 any day over 2 or 3. Sometimes I even need 1, so I’m grateful for them.
But holy goddamn is it awful when I just want to use a command for aguably its most common use case and the flag or option for that is lost in a crowd of 30 other switches or buried under some modal subcommand.
grep
helps if you already know the switch, which isn’t always.You could argue commands like this don’t have “arguably most common usecases”, so manpages should be completely neutral on singling out examples. But I think the existence of tl;dr is the counterargument.
Tangent complaint: I thought the Unix philosophy was “do one thing, and do it well”? Why then do so many of these shell commands have a billion options? Mostly /s but sometimes it’s flustering.
tldr is the first of 4 ways I rtfm. Then -h, man, and then the arch wiki
i never use man at all. It’s just too confusing.
I can appreciate that. Appologies if you know this already, but just don’t like them. Here are some tips.
It helps a lot to get title/subtitle/flag highlighting. By default man pages are hard to use simply because of how dense they are. It’s much easier to skim when you can separate the parts you are looking for up front from the text.
Don’t forget ‘/’, ‘n’, and ‘N’. First way to use man pages more effectively is to search them easily. And you can search via regex. Often I’m looking for more info on a particular flag. So I’ll press ‘/’ followed by ‘^ *-g’. For a g flag.
Take notes on the side. It saves you time later. Your future self will thank you. And you learn a lot by skimming them.
Man pages can be intimidating/confusing, but, imho, it’s worth training that skill. Even if you are slower up front, it’s totally worth it.
thanks for the advice. I knew about the search feature, but sometimes the stuff you need isn’t even on the page. I have no idea how to find what I need when it’s not in “man cmdname” how am I supposed to know that the feature i want has a dedicated page?
how could I find certain commands if i didn’t already know it was a shell builtin and not a command? It’s not like you get a manpage saying “this is not a command”. And even if i did have the idea to open the bash page, it’s still useless, because builtins are their own dedicated page. That sort of stuff. It rarely ever makes things easier for me.
If something is a bash built-in run
help blah
for it’s “man page”But yeah, man pages tick me off. Wait until you learn that there are sometimes more than one per command. I have to Google which page is which because they’re all for specific things.
man foo
is the equivalent ofman 1 foo
. What’s annoying is that the few times I’ve seen something referenced on another page the entry usually just says something like it’s on “the relevant man page” rather than just telling you exactly which.
pv (Pipe Viewer) is a command line tool to view verbose information about data streamed/piped through it. The data can be of any source like files, block devices, network streams etc. It shows the amount of data passed through, time running, progress bar, percentage and the estimated completion time.
Since nobody has said yet, I use screen pretty heavily. Want to run a long running task, starting it from your phone? Run screen to create a detachable session then the long running command. You can then safely close out of your terminal or detach with ctrl a, d and continue in your terminal doing something else. screen -r to get back to it.
I would know this as tmux, is there a difference?
no, tmux is a newer screen. some of us havent switched cos we’re too lazy i guess? i think the common wisdom is that it’s better. i havent tried cos i already know enough of screen and it’s fine for me
Or you can learn both and spend the rest of your life trying screen commands in tmux and vice versa.
In a similar vein,
nohup
lets you send tasks to the background and seems to be everywhere.You can’t mention
nohup
without at least mentioningkill -9
orpkill
to slay the monster you created you madmanEyyy, don’t hate, this is how I start all my work programs. That command is really nice and creates all work programs as children of a single terminal session for easy closing later.
No hate! Just need to make sure people know so they don’t create a bazillion threads without realizing it, or how to stop them effectively
Sometimes I’ll just reboot the entire damn machine just to be safe ;)
shutdown -r now
I recently switched to tmux and boy, it’s way better. I basically use only tmux now anymore. Creating panes to have two processes in one glance, multiple windows, awesome. Plus all the benefits of screen.
Maybe someone reading wants to now about
prefix+s
. This doubles your excitement.Try zellij. Not as popular as tmux, but very intuitive to use.
Don’t use
screen
, but I do usetmux
pretty heavily.Also, screen can connect to an UART device or serial or anything that offers up a TTY
I Always forget to run screen first, so I just rely heavily on dtach
Simply change your terminal command to execute the terminal multiplexer of your choice.
man terminal_of_choice
, look for (start) command.
How does screen / tmux work when detached from a session, how does it keep the session alive (both when running locally, and while ssh:ing to a server)? Is there a daemon involved?
Not a specific command, but I learned recently you can just dump any executable script into ~/bin and run it from the terminal.
I suffer greatly from analysis paralysis, I have a very hard time making decisions especially if there’s many options. So I wrote a script that reads a text file full of tasks and just picks one. It took me like ten minutes to write and now I spend far more time doing stuff instead of doing nothing and feeling badly that I can’t decide what to do.
I think the standard is ~/.local/bin, for the people that like standards.
This is because
$HOME/bin
is in your$PATH
environment variable. You can add more paths that you’d like to execute scripts from, like a personal git repo that contains your scripts.
As primarily a Windows admin (Yes, we exist on Lemmy ;) ) here are few I use often.
Enter-PSSesion
Get-ADUser
(also group and computer)CLS
(aka the superiorclear
)ii .
(short forInvoke-Item .
which runs the selected object using the default method. For paths (like.
) the default is explorer, soii .
opens the current directory using explorer.)ft
(short forFormat-Table
formats piped input as a table.)fl
(short forformat-like
. Used likeft
but for lists.)Where-Object
Select-Object