Follows are command lines that I often use (not necessarily the best approach) while interacting with Unix shell.
Find files (including files in subdirectories) whose size is larger than x k bytes (replace k with M for mega bytes).
sudo find . -type f -size + xk
Re-run through some tasks periodically (e.g., every 10 minutes = 10 * 60s):
while true; do ...; sleep 600; done
Get size (disk usage) of a file/directory:
du -sh path_to_file_or_dir # -s for summary, -h for humman readable size
Remove files that do/don’t match a specific pattern:
find .| grep "match_patten"| xargs rm find .| grep -v "except_patten"| xargs rm
Look up a DNS records of a domain without
dig, in Ubuntu:
host -a <domainame> # e.g.: google.com
Mount/unmount a remote Samba server in Ubuntu. You will first need to create a mounting point by
mkdir(e.g., /media/my_smb_server), and install the Common Internet File System Utilities with
apt-get install cifs-utils. You then can use the following command to mount the remote SMB server to the directory just made.
mount -t cifs -o username=$your_user_name,vers=2.0 //IP_address_or_hostname/shared_dir /media/my_smb_server
Note that the parameter
vers=is important, some machine won’t mount if you don’t specify this parameter. It can be either
2.0, if you mount with
1.0the owner of all directories and files in the mounted folder will have
usersas owner. With
2.0, the owner will be
root. After all, you may want to unmount the sharing folder using this command. Also, you can add
username=$your_user_name, but this is not a good practice since the command gets stored in bash history. For security purpose, you will need to delete bash history later. Without having the password in the command line, you will be prompted to input it.
umount -a -t cifs -l /media/my_smb_server
Change the clock of Ubuntu OS to a different timezone:
sudo timedatectl set-timezone <timeszone> #e.g.: UTC
timedatectl list-timezonesto list all possible values for timezone.
Get current Epoch time of the system, or of the created time of a file in Ubuntu:
date +%s # current Epoch time of the OS date +%s -r <file> # get created time of a file
Advanced tip to remove files which were created more than
15seconds. (for finding files which were created less than x seconds, see this):
for i in /dir/*; do if [[ $(expr $(date +%s) - $(date +%s -r $i)) > 10 ]]; then rm $i; fi; done
Note that you may get the following error since the above command is only intended to remove file, not the parent dir. So you may just ignore the error.
date: '/dir/*': No such file or directory expr: syntax error
find . -name "*.txt" -newermt 'x seconds ago' # replace x to and seconds to minutes to meet your need
Or, you can also do this to find files modified within the last 0.1 minute, i.e. last 6 seconds:
find . -name "*.txt" -mmin -0.1
Note that you can change
cwhich mean accessed or changed, respectively (e.g.,
Pipe multiple lines of string using
cat << EOF <do_your_job_here> # read as End of File, you can pick any other tag (e.g. STOP) > line 1 > line 2 > ... > line n > EOF
<do_your_job_here>you can pipe the output to a file by
>> file.txtor chain the output by
| other_command. If you pipe the output to a file, it will contain all string from
line n, but not
All sorts of network-manager commands for Ubuntu, one of my most favorite commands:
nmcli #[see http://manpages.ubuntu.com/manpages/bionic/man1/nmcli.1.html]
Check if a remote TCP port is Open/Closed from a Linux machine:
timeout 1 bash -c '</dev/tcp/remote_IP_address/port_number && echo Port is open || Port is closed' || echo Connection timeout
Unzip tar.lz4 file (install
lz4on Ubuntu with
sudo apt-get install liblz4-tool):
lz4 -d "$FILEPATH" | tar xfk -
kflag is to skip if file already exists.