Shell Commands - kimschles/schlesinger-knowledge GitHub Wiki
- Create a file using
echoand text redirection>
echo 'Hello World!' > say_hello.txt
- Append lines to a file using
echoand text redirection>>
echo 'How are you?' >> say_hello.txt
- Use
catto look at the contents of one or more files
cat file1.txt file2.txt
- Look at the last part of one or more files with
tail
tail file1.txt file2.txt
- Look at the last part of a file while it is being written
tail -f file1.txt
- Count the number of words in one or more files with word count!
wc -w file1.txt
- Count the number of lines in one or more files
wc -l file1.txt
- Count the number of characters in one or more files
wc -m file1.txt
- Count the number of bytes in one or more files
wc -c file1.txt
- See all the information in one or more files
wc file1.txt
- Look at your options (and add more!) for your shell
sudo nano /etc/shells
- Change your default shell
chsh -s <path to your default shell>
echo -n 'kim schlesinger was here' | base64
-
result:
a2ltIHNjaGxlc2luZ2VyIHdhcyBoZXJl -
Decode
echo -n 'a2ltIHNjaGxlc2luZ2VyIHdhcyBoZXJl' | base64 -D
-
result:
kim schlesinger was here -
note: use
-dfor anything other than OSX -
See the route tables on your machine
netstat -rn
-
SSH into an ubuntu server on port 2222
ssh -i <key> ubuntu@<address> -p 2222 -vvvv -
add read permissions to all users (owner/user, group, others)
chmod a+r -
read only
chmod 400 -
turn a group of commands into a single command that ssh can consume
bash -c -
Send a lot of requests to a url
ab -n 30000 -c 100 http://<external_ip_here -
This sends 30,000 requests, 100 at a time
-
Name server lookup
nslookup <domain.com> -
Copy something from your cli to your mac clipboard
pbcopyecho $PWD | pbcopy
-
list what is in a directory and their attributes
ls
-
list what is in the directory, and show directory ownership, permissions and sizes
-
-means it is a file -
dmeans it is a directoryls -l
-
-
show sizes in a human-readable format
ls -lh
-
show all files and directories, including hidden ones
ls -a
-
sort files by size with the biggest one at the top
ls -S
-
list directories recursively
ls -R
-
sort files by the last time they were modified
ls -t
Note: these flags can be combined. For example, ls -lt
-
whoami- shows the username of the user that is currently logged in
- it displayes the $LOGNAME variable
-
substitute user command:
susu <user_name>-
su -will change you to the root user
-
Reboot a linux system
reboot
-
Shutdown a linux system
-
haltorpoweroff
-
-
Show your top running processes
top
Let's you see information about your kernel
-
Show the name of the kernel
uname
-
See the kernel's release number
uname -r
-
Build version
uname -v
-
Machine type
uname -m
-
Operating System
uname -oecho $OSTYPE
-
All the info uname can show
uname -a
-
domain information groper (perform DNS lookups)
dig NS <domain_here>
- You command history is stored in
.bash_history -
$HISTFILESIZEsets how many commands to keep in your history -
$HISTCONTROLallows you to modify the behavior of your bash history- For example,
ignoredupsignores duplicate commands
- For example,
-
historyprints out your command history - If you want to run a command again:
-
!<history_number>runs that command again
-
The order files are executed during login:
- The first file that is called during a login shell is
/etc/profile
- system-wide and startup scripts
- Next, the system looks for the following files and runs the first one it finds:
-
~/.bashprofile- sets user specific shell envs
~/.bash_login~/.profile
- Next,
~/.bashrc
- non-login functions and aliases
- Then,
/etc/bashrc
- system-wide functions and aliases
Logout
.bash_logout
$PWD$OLDPWD- Create a variable in your current shell:
NAME=Kim
- Create a global variable that is accessible from any shell:
export NAME=Kim
- Look at all your variables
env
- Look at your variables in alphabetical order (this doesn't work on a mac)
set
- Use this when you don't know the exact name or location of a file
-
*is the wildcard.-
ls *.txtsearches the directory for all .txt files -
ls test*searches for all files that have the word test
-
-
?matches one character;????matches four characters-
ls ????.txtsearches for a text file with a name that is four characters in length -
ls test?.txtseaches for a text file with test and one additional character
-
-
[xyz]matches any one of the characters in the list-
ls [Ss]*.shlooks for files that have an s in their name - Find a file regarding test scores: ls
[tT]est[Ss]cores20[0-9]*
-
-
[^abc]matches everything execpt these characters -
[0-9]matches this range of numbers201[0-8]
- Double quotes
" "allow$VARIABLESbe evaluated"My username is $USER"- The variable is evaluated like
echo
- Single quotes
' 'ensure the string is evaluated literally. No special behavior for$ -
\disables special character functionality right after the\
-
kschlesinger@Kims-MacBook-Air:~*user@computer-name:current-directory
-
locatesearches a local database of files and folders -
findsearches the file system. Use this syntax:find /path/to/directory -name file
-
whereisshows you the location of the binary and man pages (if available)
-
man <command_name>pulls up the manual page for that command-
man pages are all formatted the same way
The standard sections of the manual include: 1 User Commands 2 System Calls 3 C Library Functions 4 Devices and Special Files 5 File Formats and Conventions 6 Games et. al. 7 Miscellanea 8 System Administration tools and Daemons Distributions customize the manual section to their specifics, which often include additional sections.```
-
-
whatis <search_term>lists man pages related to the search term-
man -f <search_term>does the same thing
-
-
apropos <search_term>searches thewhatisdatabase for the search term- shows a list of man pages that contain the search term
man -k <search_term>does the same thing
- shows a list of man pages that contain the search term
-
reset- Reset your terminal window.
-
kubectl get pods | grep -v 3d- Exclude 3d from the search
-
Change into root user
sudo -i
-
Search for an executable (the example is openvpn)
sudo find / -type f -name "openvpn"
-
Find your IP address from the command line:
curl ifconfig.co
- Standard Output,
stdout, is the default. When in the command line, it is when thing are printed to the console - It is common to redirect to Standard Error,
stderr.2>- Example:
ls 2> e
- Example:
- To send output to both
stoutandstderruse2>&1