Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/arturoherrero/command-line-one-liners
- Owner: arturoherrero
- Created: 2013-11-29T10:57:33.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2019-10-08T10:59:39.000Z (over 5 years ago)
- Last Synced: 2024-08-01T15:06:55.368Z (5 months ago)
- Topics: bash, command-line, one-liners
- Homepage:
- Size: 23.4 KB
- Stars: 395
- Watchers: 30
- Forks: 50
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- starred-awesome - command-line-one-liners - Command line one-liners. (Others)
- jimsghstars - arturoherrero/command-line-one-liners - Command line one-liners. (Others)
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