How to use the shell, terminal and the advanced tools
Introduction
Why use English instead of Chinese when writing a blog? As time goes by, the more I have learned, the more I have to handle with the English documents or papers. So, I realized it was time for me to adapt to the full English environment to improve my ability.
Though it's not easy for me to write a blog in English, as my mother tongue isn't English, I still write this blog as the first step to determine that I will make full use of my energy to do so.
Just start it from "The Missing Semester of Your CS Education".
Catalog
目录
Permissions
User
-
root
can do anything -
#
: a root(shell) -
$
: not a root(shell) -
sudo
: run command as a root -
sudo su
: switch as a root user
Files and Directories
-
ls -l
: gives the additional information-
----------
: 1+3+3+3 -
d---------
: directory-
---------
: permissions-
1-3
---
: set for the owner of the file -
4-6
---
: set for the group of the file -
7-9
---
: set for the others of the file -
---
: read(r
), write(w
), execute(x
)-
File: allowed to read, write, and execute this file
-
directory :
- read: allowed to see which files are inside this directory
- write: allowed to rename, create, or remove files within that directory
- execute: allowed to enter this directory
-
-
: do not have that permission
-
-
How about
7
?-
---
can be present by using the three bits binary digit -
7
=111
: rwx-
1
: set the permission -
0
: not set the permission
-
-
-
-
-
Command
-
date
: show the time -
echo
: display the given arguments that are separated by whitespace-
If the arguments consist of multiple words
Use the
""
or'
to quote it. -
You can use
\
to escape single characters
-
-
which
: allows us to know the path of the program that we want to run -
tee
: write the contents of input to a file and to the standard out -
mv
: change the location or name of the file -
rm
: remove a file-
rm -r
: remove a directory and all the files within it
-
-
rmdir
: remove the empty directory -
mkdir
: create a new directory -
man
: for manual pages of the program -
cat
: cat<
files>
standard output -
cd
: change the current working directory-
~
: home directory -
-
: previous directory
-
-
tail
: Print the last 10 lines of each FILE to standard output -
pwd
: Print the name of the current working directory. -
find
-
xdg-open
-
We can give a path to
ls
by offering arguments(flags | options)-
flags and options usually start with a
-
-
--help
can print out a bunch of information about that command-
Usage
-
...
: means zero or one or more options -
[]
: means optional
-
-
Funtion description
-
flag:
-
+ single letter- No value content also is a flag
-
option: anything that does take a value
-
-
-
In reality, we don't need to memorize them all, because we can query the usage of the command by adding the --help
or use the man
for more information about it.
stream
-
Every program by default has two primary streams
-
Input stream : keyboard(default)
-
output stream : terminal(default)
-
rewire these streams
-
<
: rewire the input for this program to be the contents of this file -
>
: rewire the output for this program to be the contents of this file
-
-
>>
: append the content but not overwrite the original one.
-
-
|
: left program output right program input
Path
When we simply type the echo hello
or date
, it will work and print the result on the terminal, but how can our shell locate them? The answer is: by paths.
Our shell can locate the program through the environment variable. Paths are a way to name the location of a file on your computer.
-
Environment variable: a variable
Things that are set whenever you start your shell
-
Example:
echo $PATH
It shows you all of the paths on my machine that the shell will search for programs
-
What is paths?
- Linux/macOS:
/
separate the paths - Windows:
\
separate the paths - Absolute paths: fully determine the location of a file
- Relative paths: relative to where you currently are
- Command
pwd
can show the present working directory
- Linux/macOS:
-
Working directory
All the relative paths are relative to the current working directory- Configure the terminal can show the full path
-
.
: the current directory -
..
: the parent directory
Run program
-
Methods for running the program anyway
- method1: give the name of the program and let the shell figure out where it is as if you have added the absolute paths to the
$PATH
- method2: give the absolute paths of the program
- method1: give the name of the program and let the shell figure out where it is as if you have added the absolute paths to the
-
Program always works on the current working directory(without any other arguments)
-
Command
ls
can list all the files in the current directory -
In fact, you can regard the shell and the Bash(Bourne Again Shell) as a kind of programing language
- You can run a program with arguments
- You can do things like while loops, for loops, conditionals, functions and variables
-
ctrl+L
: clear the terminal and go back to the top
Exercises
-
Already on Linux
-
mkdir missing && cd missing
-
man touch
-
touch semester
-
echo '#!/bin/sh' > semester && echo 'curl --head --silent https://missing.csail.mit.edu' >> semester
-
./semester
ls -l
-rw-rw-r--
: no permission to execute the file -
sh semester
#
(root) run the/bin/sh
$
run the./semester
-
man chmod
-
chmod u+x semester
./semester
-
./semester | grep 'last-modified' > ~/last-modified.txt
-
cat /sys/class/power_supply/BAT0/capacity_level
References
标签:paths,use,shell,terminal,semester,program,file,directory From: https://www.cnblogs.com/riskmoumou/p/18421574/how-to-use-the-shell-terminal-and-the-advanc