Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/arturoherrero/command-line-one-liners

Command line one-liners.
https://github.com/arturoherrero/command-line-one-liners

bash command-line one-liners

Last synced: 2 months ago
JSON representation

Command line one-liners.

Awesome Lists containing this project

README

        

# Command line one-liners

After my article about [command line one-liners][1], many people want to
contribute with their own commands. This is the place to do it, pull requests
are welcome!

## Table of Contents

- [History](#history)
- [Directories](#directories)
- [Files](#files)
- [Searching](#searching)
- [Networking](#networking)
- [User environment](#user-environment)
- [File system](#file-system)
- [Date & Time](#date--time)
- [Processes](#processes)
- [Miscellaneous](#miscellaneous)

- - -

### History

- Run the last command

```
$ !!
```

- Run the last command as root

```
$ sudo !!
```

- Create a script of the last executed command

```
$ echo "!!" > script.sh
```

- Reuse all parameter of the previous command line

```
$ echo cd .
$ !*
```

- Run the last command with some argument

```
$ echo a b c d e
$ echo !!:2
$ echo !!:3-$
```

- Insert the last argument of the previous command

```
$ cp script.sh /usr/bin/
$ cd !$
$ cd .
$ cd .
```

- Runs previous command but replacing

```
$ echo no typos
$ ^typos^errors
```

- Escape any command aliases

```
$ alias ls="ls -a"
$ \ls
```

- Run a command from the history

```
$ history
...
1225 ls -l
1226 git status
1227 history
$ !-3
$ !1225
```

- Search the history for the most recent command beginning with `text`

```
$ !text
```

- Search the history for the most recent command containing `text`

```
$ text
```

- List of commands you use most often

```
$ history | awk '{print $2}' | sort | uniq -c | sort -rn | head
```

- Execute a command without saving it in the history

```
$ command
```

### Directories

- Make a directory creating intermediate directories

```
$ mkdir -p a/long/directory/path
```

- Create a directory and change into it

```
$ mkdir dir && cd $_
```

- Change to the previous working directory

```
$ cd -
```

- Jump to a directory. Execute a command in a subshell. Jump back to current directory

```
$ (cd /tmp && ls)
```

### Files

- Quickly rename a file

```
$ mv filename.{old,new}
$ mv filename.{png,jpg}
```

- Create a quick back-up copy of a file

```
$ cp file.txt{,.bak}
```

- Create a simple text file from command line

```
$ cat > file.txt
{your text here}
{your text here}

```

- Create a simple text file from command line or script (`EOF` is just a token, can be any word)

```
$ cat > file.txt << EOF
{your text here}
{your text here}
EOF
```

- Empty a file from command line (usefull to truncate log file from running processes)

```
$ > file.txt
```

- Empty a file from command line or script

```
$ cat /dev/null > file.txt
```

- Make `less` behave like `tail -f`

```
$ less +F somelogfile
```

- Display line numbers in a file

```
$ cat -n file
$ less -N file
```

- Redirect standard input to a file. Print it to standard output

```
$ command | tee file.txt | less

┌─────────┐ ┌─────────┐ ┌─────────┐
│ command │─▸│ tee │─▸│ stdout │
└─────────┘ └────┬────┘ └─────────┘


┌───────────┐
│ file │
└───────────┘
```

### Searching

- Search for a string inside all files in the current directory

```
$ grep -RnsI --color=auto *
```

- Beyond grep

```
_ /|
\'o.O'
=(___)=
U ack!

$ ack
```

- Recursively remove all empty directories

```
$ find . -type d -empty -delete
```

### Networking

- Serve current directory tree at `http://$HOSTNAME:8000/`

```
$ python -m SimpleHTTPServer
$ ruby -run -e httpd . -p 8000
```

- Share a file between two computers

```
receiver $ nc -l 5566 > data-dump.sql
sender $ nc 5566 < data-dump.sql
```

- Share a BIG file between two computers and show progress bar

```
receiver $ nc -l 5566 > big-file.iso
sender $ pv big-file.iso | nc 5566
```

- Transfer a folder between two computers

```
receiver $ nc -l 5566 | tar -zxv
sender $ tar -zcv | nc -w1 5566
```

- Download an entire website

```
$ wget -m -k http://website.com
```

### User environment

- Show `PATH` in a human-readable way

```
$ echo $PATH | tr ':' '\n'
$ tr ':' '\n' <<< $PATH
```

- Clear the terminal screen

```
$
$ clear
```

- Salvage a borked terminal

```
$ reset
```

- Close shell keeping all subprocess running

```
$ disown -a && exit
```

- Run a command immune to hangups

```
$ nohup command &
```

### Networking

- Attach screen over ssh

```
$ ssh user@host -t screen -r
```

- Compare a remote file with a local file

```
$ ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
```

- Get your public IP address

```
$ curl ifconfig.me
```

- Set audible alarm when an IP address comes online

```
$ ping -a IP_address
```

- List programs with open ports and connections

```
$ lsof -i
```

- Check which process is listening on a specific port

```
$ netstat -nlp | grep 8080
$ netstat -nlp tcp | grep 8080 (BSD)
```

### File system

- Currently mounted filesystems in nice layout

```
$ mount | column -t
```

- Display free disk space

```
$ df -h
```

- Display disk usage statistics for the current directory

```
$ du -sh *
```

- Display 10 biggest files/folders for the current directory

```
$ du -s * | sort -nr | head
```

- Create a zip archive of a directory

```
$ zip -r archive.zip directory
```

- Extract compressed archive

```
$ unzip archive.zip
```

- Show File System Hierarchy

```
$ man hier
```

### Date & Time

- Shutdown the system at a given time

```
$ shutdown -h now
$ shutdown -h 22:49
```

- Execute a command at a given time

```
$ echo "ls -l" | at midnight
```

- Simple stopwatch

```
$ time read

```

- Put a console clock in top right corner

```
$ while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &
```

- Displays a calendar

```
$ cal 12 1984
```

- What day was yesterday or will it be tomorrow, etc...

```
$ date -d yesterday
$ date -d tomorrow +%Y-%m-%d
$ date -d "7 days ago" +%Y-%m-%d
$ date -j -v-1d (BSD)
```

### Processes

- Display the top ten running processes. (Sorted by memory usage)

```
$ ps aux | sort -nk +4 | tail
```

- Kill all Ruby processes

```
$ ps aux | grep ruby | awk '{ print $2 }' | xargs kill -9
$ ps aux | awk '/ruby/ && ! /awk/ { system("kill -9 "$2) }'
$ pkill -f ruby
$ killall -9 ruby
```

- Check which process is modifying a certain directory or file

```
$ auditctl -w /path/to/directory -p war
```

See results

```
$ ausearch -f /path/to/directory
```

### Miscellaneous

- 32 bits or 64 bits?

```
$ getconf LONG_BIT
```

- Quick access to the ascii table

```
$ man ascii
```

- Count your commits

```
$ git shortlog -sn
```

- Russian Roulette in Bash (remember kids don't try this at home)

```
$ [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "You live"
```

- Watch Star Wars via telnet

```
$ telnet towel.blinkenlights.nl
```

## Who made this?

This was made by Arturo Herrero under the MIT License. Find me on Twitter
[@ArturoHerrero][2].

[1]: http://arturoherrero.com/command-line-one-liners/
[2]: https://twitter.com/ArturoHerrero