How to use the shell, terminal and the advanced tools
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
--------- : permissions1-3
--- : set for the owner of the file4-6
--- : set for the group of the file7-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 whitespaceIf 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-openWe 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 commandUsage
-
... : 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 $PATHIt 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 directoryIn 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
How to use the shell, terminal and the advanced tools的更多相关文章
- 利用Go2Shell 实现 Mac Finder 直接shell端打开当前文件夹
Finder 窗口 ,点击下图所示的按钮(红色框内),即可打开Shell Terminal. 打开后,如图 用法 安装go2shell后,打开finder的application文件夹,找到go2sh ...
- doris: shell invoke .sql script for doris and passing values for parameters in sql script.
1. background in most cases, we want to execute sql script in doris routinely. using azkaban, to l ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- RASPBERRY PI 外设学习资源
参考: http://www.siongboon.com/projects/2013-07-08_raspberry_pi/index.html Raspberry Pi Get st ...
- 看懂理解 keyboard中 , navigation的设置: 切换工作区和移动窗口到不同的工作区.
navigation中, 主要有两个方面的内容: 移动窗口到工作区 的shortcuts 切换工作区的shortcuts 首先清楚: 工作区workspace, fedora 23中 好像只有上下方向 ...
- Find mac address
Windows Method 1: Using the Command Prompt 1 Click on the Start button. 2 Type cmd in the search b ...
- 9个使用前必须再三小心的Linux命令
Linux shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹.文件或者路径文件夹等被删除.在一些情况下,Linux 甚至不会询问你而直接执行命令,导致你丢失各种数据信 ...
- Jmeter安装设置
Linux: 其实下载之后就可以用,不过为了能在命令行直接敲入”jmeter"就可以调出Jmeter程序,还需要进行如下设置. 1. Download apache-jmeter-2.12. ...
- Nagios监控生产环境redis群集服务战
前言: 曾经做了cacti上展示redis性能报表图.能够看到redis的性能变化趋势图,可是还缺了实时报警通知的功能,如今补上这一环节. 在redis服务瓶颈或者异常时候即使报警通知,方便d ...
- tmux tutorial
This is a great tutorial about tmux quick start: http://www.youtube.com/watch?v=wKEGA8oEWXw&nore ...
随机推荐
- 硬件开发笔记(三十二):TPS54331电源设计(五):原理图BOM表导出、元器件封装核对
前言 一个12V转5V.3.3V和4V的电源电路设计好了,下一步导出BOM表,二次核对元器件型号封装,这是可以生产前的最后一步了. 导出BOM表 步骤一:打开原理图 打开项目,双击点开原理 ...
- Qt编写物联网管理平台31-用户权限管理
一.前言 随着需求的不断变化,功能的增多,在用户信息这块,除了需要用户登录退出验证以外,还需要有个简单的用户权限逻辑处理,比如限定某些用户只有查看权限,没有删除记录.清空记录.系统设置的权限,与之相对 ...
- Qt编写安防视频监控系统19-日志查询
一.前言 日志查询功能是基础功能,主要分两块,一个是本地日志查询,包括运行日志.报警日志.操作日志:一个是设备日志查询,就是通过SDK去拉去NVR设备的日志信息,包括系统操作.配置操作.报警操作.录像 ...
- [转]快速搭建简单的LBS程序——地图服务
很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...
- 百度高效研发实战训练营-Step1
百度高效研发实战训练营-Step1 1 设计方法与实践介绍 1.1. 软件设计原则 (1)软件设计的目的 软件设计是为了使软件在长期范围内能够容易的进行变化. 变化:软件不是一成不变的,无论是软件本身 ...
- vue基础4
Q:1.动画的使用方法以及动画库的使用方式 2.vue中的指令有哪些? 3.vue中生命周期钩子函数有哪些?分别代表什么含义? 4.filter的语法是什么? 5.computed的特点是什么? 6. ...
- MySQL 开发规范
建表规约 1.[强制]每张表必须设置一个主键ID,并且这个主键ID要自增(在满足需要的情况下尽量短),除非是分库分表 理解:由于InnoDB存储引擎决定了需要有一个主键,而且这个主键ID是自增的话可以 ...
- 阿里云-数据库-表格存储Tablestore
入门篇一 初步调研了解 Step.1 场景锲合度判断选择使用表格存储前关键需要明确你的场景是否适合.表格存储是阿里云自2010起自研使用的一个多模型NoSQL数据库,面向海量大数据存储,身经百战.非常 ...
- fopen在VS中不安全的问题
问题 fopen函数哎VS中使用,报错: error C4996: 'fopen': This function or variable may be unsafe. Consider using f ...
- Ubuntu13 安装vim
问题 由于系统没有vim,只有vi,而vi 编辑文件时比较麻烦,不易操作,还没有关键词高亮显示等,故想安装vim 输入命令: sudo apt install vim 报错,找不到 apt 命令,即没 ...