All commands (14,030)

  • In this case it's better do to use the dedicated tool


    44
    ssh-keygen -R <the_offending_host>
    bunam · 2010-07-11 19:37:24 0
  • You can get one specific line during any procedure. Very interesting to be used when you know what line you want. Show Sample Output


    44
    sed -n 5p <file>
    Waldirio · 2009-10-15 11:00:48 3
  • I did not know this, i'd like to share...


    44
    open .
    vigo · 2009-06-10 10:55:20 14
  • Create a persistent SSH connection to the host in the background. Combine this with settings in your ~/.ssh/config: Host host ControlPath ~/.ssh/master-%[email protected]%h:%p ControlMaster no All the SSH connections to the machine will then go through the persisten SSH socket. This is very useful if you are using SSH to synchronize files (using rsync/sftp/cvs/svn) on a regular basis because it won't create a new socket each time to open an ssh connection.


    44
    ssh -MNf <user>@<host>
    raphink · 2009-02-26 14:11:19 4
  • Also works with: chgrp --reference file1 file2 chown --reference file1 file2


    43
    chmod --reference file1 file2
    rpavlick · 2010-03-31 12:05:48 1
  • If you want a visual representation of the parent/child relationships between processes, this is one easy way to do it. It's useful in debugging collections of shell scripts, because it provides something like a call traceback. When a shell script breaks, just remember "awwfux".


    43
    ps awwfux | less -S
    ToyKeeper · 2009-07-04 09:39:28 4
  • Uses shell expansion to create a back-up called file.txt.bak


    43
    cp file.txt{,.bak}
    root · 2009-01-26 12:11:29 1
  • Change Seville for your prefered city. Show Sample Output


    42
    curl wttr.in/seville
    nordri · 2016-08-28 09:43:38 9

  • 42
    timeout 5s COMMAND
    kev · 2011-11-19 06:14:33 2
  • Directly attach a remote screen session (saves a useless parent bash process)


    42
    ssh -t remote_host screen -r
    recursiverse · 2009-07-23 06:15:04 7

  • 41
    tar -tf <file.tar.gz> | xargs rm -r
    prayer · 2009-07-06 22:23:11 3
  • Good for one off jobs that you want to run at a quiet time. The default threshold is a load average of 0.8 but this can be set using atrun. Show Sample Output


    41
    echo "rm -rf /unwanted-but-large/folder" | batch
    root · 2009-02-04 19:07:52 3
  • This command shows the various shortcuts that can be use in bash, including Ctrl+L, Ctrl+R, etc... You can translate "\C-y" to Ctrl+y, for example. Show Sample Output


    40
    bind -P
    ricardofunke · 2012-05-28 18:51:59 3
  • RTFMFTW.


    40
    rtfm() { help [email protected] || man [email protected] || $BROWSER "http://www.google.com/[email protected]"; }
    hunterm · 2011-01-05 02:53:38 2
  • run 'nc yourip 5000', 'nc yourip 5001' or 'nc yourip 5002' elsewhere will produce an exact same mirror of your shell. This is handy when you want to show someone else some amazing stuff in your shell without giving them control over it.


    40
    script -qf | tee >(nc -kl 5000) >(nc -kl 5001) >(nc -kl 5002)
    clvv · 2010-10-11 07:55:30 12
  • This command takes a snapshot of the open files for a PID 1234 then waits 10 seconds and takes another snapshot of the same PID, it then displays the difference between each snapshot to give you an insight into what the application is doing.


    39
    diff <(lsof -p 1234) <(sleep 10; lsof -p 1234)
    zlemini · 2010-03-15 22:55:32 1
  • Of course you need to be able to access host A for this ;-)


    39
    ssh -t hostA ssh hostB
    0x89 · 2009-08-27 21:35:19 4

  • 38
    until !!; do :; done
    unixmonkey21806 · 2013-05-14 18:08:54 3
  • Short command, easy to remember


    38
    curl ifconfig.me
    CodSpirit · 2010-08-01 13:56:01 0
  • Google just released a new commend line tool offering all sorts of new services from the commend line. One of them is uploading a youtube video but there are plenty more google services to interact with. Download it here: http://code.google.com/p/googlecl/ Manual: http://code.google.com/p/googlecl/wiki/Manual This specific command courtesy of lifehacker:http://lifehacker.com/5568817/ Though all can be found in manual page linked above. Show Sample Output


    38
    google docs edit --title "To-Do List" --editor vim
    spiffwalker · 2010-06-21 16:15:42 3
  • The empty file /forcefsck causes the file system check fsck to be run next time you boot up, after which it will be removed. This works too: sudo >/forcefsck


    38
    sudo touch /forcefsck
    johnraff · 2009-10-29 17:04:47 6
  • -d: list directory entries instead of contents, and do not dereference symbolic links


    38
    ls -d */
    brianmuckian · 2009-10-08 22:07:22 2
  • Sometimes you need to use a port that is already opened by some program , and you don't know who to "kill" for it to release - so, now you do ! Show Sample Output


    38
    lsof -i tcp:80
    ar_levi · 2009-04-16 14:51:53 7
  • If you enable multiuser, then you can permit others to share your screen session. The following conditions apply: 1. screen must be suid root; 2. "multiuser on" must be configured in ~/.screenrc; 3. control the others user(s) access with "aclchg": # ----- from ~/.screenrc-users ----- aclchg someuser +rx "#?" #enable r/o access to "someuser" aclchg someuser -x "#,at,aclchg,acladd,acldel,quit" # don't allow these aclchg otheruser +rwx "#?" # enable r/w access to "otheruser" aclchg otheruser -x "#,at,aclchg,acladd,acldel,quit" # don't allow them to use these commands # ----- After doing this (once), you start your session with: $ screen Then, the other user can join your terminal session(s) with youruserid: $ screen -r youruserid/ Note: the trailing "/" is required. Multiple users can share the same screen simultaneously, each with independent access controlled precisely with "aclchg" in the ~/.screenrc file. I use the following setup: # ~/.screenrc-base # default screenrc on any host source $HOME/.screenrc-base source $HOME/.screenrc-$HOST source $HOME/.screenrc-users # ----- Then, the base configurations are in ~/.screenrc-base; the host-specific configurations are in ~/.screenrc-$HOST, and the user configurations are in ~/.screenrc-users. The host-specific .screenrc file might contain some host-specific screen commands; e.g.: # ~/.screen-myhost # ----- screen -t 'anywhere' /bin/tcsh screen -t 'anywhere1' /bin/tcsh # ---- The .screenrc-base contains: # ~/.screenrc-base ## I find typing ^a (Control-a) awkward. So I set the escape key to CTRL-j instead of a. escape ^Jj termcapinfo xterm* [email protected]:[email protected]: autodetach on zombie kr verbose on multiuser on


    38
    % screen -r someuser/
    totoro · 2009-03-25 23:59:38 1
  • Shorter, easier to remember version of cmd#7636 NTP is better, but there are situations where it can't be used. In those cases, you can do this to sync the local time to a server. Show Sample Output


    37
    date --set="$(ssh [email protected] date)"
    splante · 2011-08-30 20:03:06 3
  • ‹ First  < 3 4 5 6 7 >  Last ›

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands


Check These Out

Copy a MySQL Database to a new Server via SSH with one command
Dumps a MySQL database over a compressed SSH tunnel and uses it as input to mysql - i think that is the fastest and best way to migrate a DB to a new server!

Open Remote Desktop (RDP) from command line having a custom screen size
This example uses xfreerdp, which builds upon the development of rdesktop. This example usage will also send you the remote machine's sound.

Create a mirror of a local folder, on a remote server
Create a exact mirror of the local folder "/root/files", on remote server 'remote_server' using SSH command (listening on port 22) (all files & folders on destination server/folder will be deleted)

Realtime lines per second in a log file
Displays the realtime line output rate of a logfile. -l tels pv to count lines -i to refresh every 10 seconds -l option is not in old versions of pv. If the remote system has an old pv version: ssh tail -f /var/log/apache2/access.log | pv -l -i10 -r >/dev/null

Replicate a directory structure dropping the files

Monitor bandwidth by pid
Nethogs is a useful tool for monitor bandwidth consumption by pid. Tested on Debian an CentOs

JSON processing with Python
Validates and pretty-prints the content fetched from the URL.

Close shell keeping all subprocess running

Find class in jar

Upgrading packages. Pacman can update all packages on the system with just one command. This could take quite a while depending on how up-to-date the system is. This command can synchronize the repository databases and update the system's packages.
Warning: Instead of immediately updating as soon as updates are available, users must recognize that due to the nature of Arch's rolling release approach, an update may have unforeseen consequences. This means that it is not wise to update if, for example, one is about to deliver an important presentation. Rather, update during free time and be prepared to deal with any problems that may arise. Pacman is a powerful package management tool, but it does not attempt to handle all corner cases. Read The Arch Way if this causes confusion. Users must be vigilant and take responsibility for maintaining their own system. When performing a system update, it is essential that users read all information output by pacman and use common sense. If a user-modified configuration file needs to be upgraded for a new version of a package, a .pacnew file will be created to avoid overwriting settings modified by the user. Pacman will prompt the user to merge them. These files require manual intervention from the user and it is good practice to handle them right after every package upgrade or removal. See Pacnew and Pacsave Files for more info. Tip: Remember that pacman's output is logged in /var/log/pacman.log.


Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: