As you spend more and more time working on Linux environment, you tend to learn some cool tricks that make your life easy and save you lot of time. Here are a few commands that should make things easier for you
- Check if remote port is open with bash: echo >/dev/tcp/8.8.8.8/53 && echo “open”
- Suspend process: Ctrl + z
- Move process to foreground: fg
- Generate random hex number where n is number of characters: openssl rand -hex n
- Execute commands from a file in the current shell: source /home/user/file.name
- Substring for first 5 characters: ${variable:0:5}
- SSH debug mode: ssh -vvv user@ip_address
- SSH with pem key: ssh user@ip_address -i key.pem
- Get complete directory listing to local directory with wget: wget -r –no-parent –reject “index.html*” http://hostname/ -P /home/user/dirs
- Create multiple directories: mkdir -p /home/user/{test,test1,test2}
- List processes tree with child processes: ps axwef
- Create war file: jar -cvf name.war file
- Test disk write speed: dd if=/dev/zero of=/tmp/output.img bs=8k count=256k conv=fdatasync; rm -rf /tmp/output.img
- Test disk read speed: hdparm -Tt /dev/sda
- Get md5 hash from text: echo -n “text” | md5sum
- Check xml syntax: xmllint –noout file.xml
- Extract tar.gz in new directory: tar zxvf package.tar.gz -C new_dir
- Get HTTP headers with curl: curl -I http://www.funwithtricks.com
- Modify time stamp of some file or directory (YYMMDDhhmm): touch -t 0712250000 file
- Download from ftp using wget: wget -m ftp://username:password@hostname
- Generate random password (16 char long in this case): LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
- Quickly create a backup of a file: cp some_file_name{,.bkp}
- Access Windows share: smbclient -U “DOMAIN\user” //dc.domain.com/share/test/dir
- Run command from history (here at line 100): !100
- Unzip to directory:unzip package_name. zip -d dir_name
- Multiline text (CTRL + d to exit): cat > test.txt
- Create empty file or empty existing one: > test.txt
- Update date from Ubuntu NTP server: ntpdate ntp.ubuntu.com
- netstat show all tcp4 listening ports: netstat -lnt4 | awk ‘{print $4}’ | cut -f2 -d: | grep -o ‘[0-9]*’
- Convert image from qcow2 to raw: qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \ precise-server-cloudimg-amd64-disk1.raw
- Run command repeatedly, displaying it’s output (default every two seconds): watch ps -ef
- List all users: getent passwd
- Mount root in read/write mode: mount -o remount,rw /
- Mount a directory (for cases when symlinking will not work): mount –bind /source /destination
- Send dynamic update to DNS server: nsupdate <
- Recursively grep all directories: grep -r “some_text” /path/to/dir
- List ten largest open files: lsof / | awk ‘{ if($7 > 1048576) print $7/1048576 “MB “$9 }’ | sort -n -u | tail
- Show free RAM in MB: free -m | grep cache | awk ‘/[0-9]/{ print $4″ MB” }’
- Open Vim and jump to end of file: vim + some_file_name
- Git clone specific branch (master): git clone git@github.com:name/app.git -b master
- Git switch to another branch (develop): git checkout develop
- Git delete branch (myfeature): git branch -d myfeature
- Git delete remote branch:git push origin : branchName
- Git push new branch to remote: git push -u origin mynewfeature
- Print out the last cat command from history: !cat:p
- Run your last cat command from history: !cat
- Find all empty subdirectories in /home/user: find /home/user -maxdepth 1 -type d -empty
- Get all from line 50 to 60 in test.txt: < test.txt sed -n ‘50,60p’
- Run last command (if it was: mkdir /root/test, below will run: sudo mkdir /root/test):sudo !!
- Create temporary RAM filesystem – ramdisk (first create /tmpram directory): mount -t tmpfs tmpfs /tmpram -o size=512m
- Grep whole words: grep -w “name” test.txt
- Append text to a file that requires raised privileges: echo “some text” | sudo tee -a /path/file
- List all supported kill signals: kill -l
- Generate random password (16 characters long in this case): openssl rand -base64 16
- Do not log last session in bash history: kill -9 $
- Scan network to find open port: nmap -p 8081 172.20.0.0/16
- Set git email: git config –global user.email “me@example.com”
- To sync with master if you have unpublished commits: git pull –rebase origin master
- Move all files with “txt” in name to /home/user: find -iname “*txt*” -exec mv -v {} /home/user \;
- Put the file lines side by side: paste test.txt test1.txt
- Progress bar in shell: pv data.log
- Send the data to server with netcat: echo “hosts.sampleHost 10 `date +%s`” | nc 192.168.200.2 3000
- Convert tabs to spaces: expand test.txt > test1.txt
- Skip bash history: < >cmd
- Go to the previous working directory: cd –
- Split large tar.gz archive (100MB each) and put it back: split –b 100m /path/to/large/archive /path/to/output/files cat files* > archive
- Get HTTP status code with curl: curl -sL -w “%{http_code}\\n” www.example.com -o /dev/null
- When Ctrl + c not works: Ctrl + \
- Get file owner: stat -c %U file.txt
- List block devices: lsblk -f
- Find files with trailing spaces: find . -type f -exec egrep -l ” +quot; “{}” \;
- Find files with tabs indentation: find . -type f -exec egrep -l #39;\t’ “{}” \;