This is not a post from the series of those describing the cd command. It's just a list of commands and tricks I'm using (almost) every day.
...
For further actions, you may consider blocking this person and/or reporting abuse
Those are great tips.
In the terminal, one trick I like is going back to previous folder with
(that is a minus sign)
Say, you are in
/var/logs
and youcd /data/dev/myproject
, then you can go back to logs withcd -
.Useful in some situations only, but quite handy nonetheless.
If you're editing config files with vim and need to use that sudo tee hack, stop.
You should be using
sudoedit
. It safely copies the config to /tmp and runs$EDITOR
as your regular user with your user config, and only overwrites the file you're editing if you actually save. This is far more desirable than running your editor as root.Very good point, I think that we should never use sudo vim.
alt + .
is a great one too, in bash.$ mkdir -p /tmp/some/nested/directory
$ cd <alt+.> # types the LAST argument - /tmp/some/nested/directory
Re:
netstat
, it still works, of course, and you can continue using it, but it is deprecated in favour ofss
.Re:
ssh
ing into a DB server as root, no offence, but I don't believe your company actually has a security policy :D (hopefully it was just an example).Yup, it was a 'funny' example
For years I looked for this, and finally found it. Thank you very much for your contribution Patryk.
Working with drush, the last one is very neat!
I have a concern regarding "Yes". I find it a bad idea to use this since what if you encounter a new tool? Maybe you install something and Yes makes it install, or maybe skip, dependencies that's crucial to have/not have in the project
(Vague example scenario, but you get the point!)
A lot of commands take a
-y
flag too.If you're particularly concerned about it doing something you don't want, you can use an
expect
script instead. It's kind of like selenium for the command line.Yep! I tend to use the y flag.
Thanks, PatricNox! I've added little warning in the post
Yup, you are right.
yes
program may do unexpected thing, but sometimes you do know the script very well and you know all the questions.Maybe I should change the example and add some warning
While
!!
is great, the overall!
method becomes really powerful if you understand that you're neither limited to re-executing just the last command or re-executing the command relatively unmodified.ssh host1.my.domain
and now need to connect tohost2.my.domain
? Execute either of^host1^host2^
or!!:s/host1/host2
history
and see that you previously connected tohost1
with the 23rd command in your history-buffer, you could do!23:s/host1/host2
!43:gs/orig_string/new_string
I would be suuuuuuuper leery about developing habits around the
yes
command. Great sadness can ensue from habituating to its use ...especially if you have privileged access to a system. For commands that implement a built-in auto-yes feature (e.g. youryum
does via the-y
flag). Even there, I'd tend to avoid auto-yes except in the very specific context of scripted routines where you've validated the the auto-acknowleged behavior always acts the way you expect and need it to.It's also worth noting that not every command you use will understand accepting a yes from piped <STDIN>
There are a non-trivial number of commands that don't react well to being backgrounded. You might think, "lemme background this thing and let it go about its business" only to come back minutes/hours/days later to find that it's done nothing. Basically, whenever you background a command, it's always a good idea to run the
jobs
command immediately afterwards to verify that it's in a running state. You may, instead, find that your backgrounded command is in a stopped state.Even better than using shells' built-in job-control for long-running tasks may be to use a terminal-multiplexer like
screen
ortmux
. They're also great if you're connecting to a system over crappy links (remote in, fire up screen, kick off your tasks ...even if your connection dies, stuff keeps running and you can re-connect and re-attach to your session to finish things up).Yeah! I was also going to suggest
tmux
instead ofnohup
.Great tips! I think it worth to mention the !$ operator in addition to !!.
Where !$ is the argument of last command.
So if you:
mkdir foo
You can enter the folder typing:
cd !$
If you have to telecommute, and your company's vpn connection is sh*tty, and they don't allow you to ssh in, reverse ssh tunneling is your friend:
thegeekstuff.com/2013/11/reverse-s...
Also a good way to get your security team grumpy with you ;) Outbound SSH from prod sets off about a dozen alarm bells for us. Talking to your manager or DevOps team member is another option for addressing rough inbound access :)
Awesome list.
I vote to add
ctrl + r
for searching your previous commands to this list!Testing Gunicorn or Prometheus or something with a long pipeline? Run it once then
ctrl + r
and type some keywords to find it again without having to type it all out or mash the up arrow.If you've a common SSH login with sudo (shouldn't be the case mostly), do be careful with !! as you could end up running a potentially dangerous command in a hurry.
You could use
sudo lsof -i :80
to identify which app is taking up a port instead ofnetstat
&ps
Also
zless
to view gzipped logs without extraction &wget -c URL
to retry downloads in case of issues.For me 'screen' is unmissable when working in terminal applications. It is like having multiple windows! ctrl-a then 'c' creates new screen, ctrl-a 'space' switches through screens.
Agreed. I tend to map my F-keys to swich between next, prev and list screens.
bindkey -k k3 prev
bindkey -k k4 next
bindkey -k k5 windowlist
generally use tmux nowadays
This also works in git
A lot of git commands works with the
-
Like:
ll
is actually a convenient alias set on most systems. Aliases are really powerful in and of themselves and worth a separate article (in fact, thereβs a lot out thereβ¦)A "nice" command with 'yes' is:
yes >/dev/sdaX &
where X is 1, 2, etc
Wipes your hdd with "yes".
:)))
Your title is misleading kind of.
Says commands you use in daily job, implies you are using them every day? Or that you use those command in your daily job as developer. If second whats your night job?
I dont see any command i would run daily.
Sorry to say but i dont see any of these commands so useful for daily work.
Hard to believe you would be executing ssh -L{port on your PC}:localhost:{database's port} root@{server IP} daily (or almost) instead of creating an alias, same as for the other longer command you mention.
Or this:
0 22 * * 1-5 /opt/scripts/send-report.sh 2>/var/log/scripts/report-error.log
Really? Almost daily?
Cant take this seriously :)
CTRL - R is best to scroll through history
rsync -avz --delete --progress root@{server IP}:/dir_from_sync /dir_to_sync
I also use the home and end buttons to navigate to the start or ending of a long terminal command
Excellent, my favorite was the
!!
, thank you for sharing it!If you're using port forwarding for DayaGrip, you can use the connection settings dialog to set it directly (through the ssh tab).
Lol, you're right, I've missed that feature. Anyway it's still useful for Kibana or other services that are not exposed publicly.
Follow mode for less!
less +F
Great tips!
Found this extremely helpful! Thank you
Nice and useful.
Omfg the yes command. Love that one
You have a typo:
"jut type in VIM" should say "just type in VIM" :)
Fixed, thanks!
Great post, Mateusz! I shared it in our Telegram newsletter/channel for devs. ππΌ Link
A really useful post, thanks for sharing these. Specially ctrl+a and ctrl+e trick.
I can relate to the missing sudo exampleπππ
I'm a huge fan of one-liners and simple hacks, these are great! I'm going to start using the vim and sudo one immediately.
Magic, right in your command line! β¨
Thanks for sharing these.
Do you have to do compressing and uncompressing of files/folders?
Check disk usage?
List files inside a zip?