Builtin Bash
echo string string string : multiple string
echo ~ : tilde expansion return user absolute path
echo "string string string" : single string
echo $((arithmetic operation)) : arithmetic operations support + - * / % **
echo "x"{a,b,c} : xa xb xc brace expansion
file f1 f2 f3 = file "f"{1,2,3} = file "f"{1..3}
echo $(ls x) : command sustitution syntax
ls dir | sort : pipeline commands
ls -l *.html : wild card expansion
ls > file :to write output to the file
ls >> file :to append output to the file
command .................. & : to run command in background
what is different between double quote and single quote
double-quote is prevent space expansion and tilde expansion and brace expansion but arithmetic expansion and parameter expansion and command substitution still performed in the other hand single quote will prevent all of them
& after command to let the command execute in the background
&&
lets you do something based on whether the previous command completed successfully
for example in c++ if main function return -1 the command on right && never perform
The nohup
command executes another program specified as its argument and ignores all SIGHUP
(hangup) signals. SIGHUP
is a signal that is sent to a process when its controlling terminal is closed.
apt install wget && wget url
for more resources visit
https://www.geeksforgeeks.org/basic-operators-in-shell-scripting/?ref=lbp
File System
cp originalFile newFile : copy original to new
cp -r originalDir newDir : copy directory recursively
rm file or directory : remove file or directory
rm -rf directory : force remove non-empty directory
rm -r directory : remove directory recursively
mkdir directory : create directory
mv fileFrom fileTo : move file from to
ls director : display all directory content
ls -l dir: display files create date and owner and mod
ls -a dir: display all files including files start with dot(.)
cd path: set the current path
pwd : get current path
file filename : get file type like if it text or binary or symbolic link
dir directory : diplay all directories inside directory
touch file : create file
cat filename file2name : display file content
cat -n filename : display file content with line number
cat > filename : to write to file
cat >> filename : to append to file
less filename : display file content
less -n filename : display file content with line number
head -n number filename : display the first number lines of the content
tile -n number filename : display the last number lines of the content
ln -s targetfile linkname : create symbolic link for target file
readlink linkname : get the absolute path of the target this file linked to it
which command : get absolute path for command
chmod {options} filename : change permision of file
chown USERNAME:GROUPNAME path : change owner
chown -R USERNAME:GROUPNAME path : change owner recursive
chgrp group file1 file2 dir1 : change group of file
zip|unzip file
cat ./file.txt | grep "^hello .*ld.*$"
user@host:/home/user$ chmod ugo+rwx file4 #add read and write and execute permision for owner and group and others
System
lspci : pci hardware info
inxi : hardware info more readable need to install
free : memory size and how much used and free
dmesg : debug all devices
lsusb : all serial devices connected
top : monitor all processors
kill -9 pid : force kill for proccesor
ps -aux :to get all arunnig processors
Users
sudo : play command as root
sudo -i : always as root
adduser userName : add user
su : switch user
usermod -aG group user : add user to group
deluser user group : remove user from group
groups : display groups of current user
exit : logout
passwd : change passward of current user
adduser –system userName : add system user
addgroup group : add new group
userdel username : to delete user -r for remove every thing belong to user
note: if you want to add new command move your program to /usr/bin directory