update some info about rust
This commit is contained in:
parent
472cf81df1
commit
0175fae291
|
@ -26,11 +26,19 @@
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
// 条件编译
|
// 条件编译
|
||||||
|
cfg // 控制条件编译
|
||||||
|
cfg_attr // 有条件地包含属性
|
||||||
// 测试
|
// 测试
|
||||||
// 派生
|
// 派生
|
||||||
|
derive // 自动特性实现
|
||||||
// 宏
|
// 宏
|
||||||
macro_use // 扩展宏的可见性,或从其它crate导入宏。
|
macro_use // 扩展宏的可见性,或从其它crate导入宏。
|
||||||
// 诊断
|
// 诊断
|
||||||
|
allow, warn, deny, forbid // 改变默认的检测级别
|
||||||
|
allow(c) // 撤销对c的检查,这样违规行为将不会被报告
|
||||||
|
warn(c) // 对c的违规行为将发出警告,但仍然会继续编译
|
||||||
|
deny(c) // 如遇到c的违规行为,将发出error信号
|
||||||
|
forbid(c) // 类似于deny(c),且禁止更改检测级别
|
||||||
// ABI,链接,符号,FFI
|
// ABI,链接,符号,FFI
|
||||||
no_main // 不会加载"main"标记
|
no_main // 不会加载"main"标记
|
||||||
no_mangle // 禁止符号名编码
|
no_mangle // 禁止符号名编码
|
||||||
|
@ -41,6 +49,7 @@ no_std // 不会预加载std
|
||||||
// 模块
|
// 模块
|
||||||
// 限制
|
// 限制
|
||||||
// 运行时
|
// 运行时
|
||||||
|
global_allocator // 实现了GlobalAlloc特性的静态条目用此属性来设置全局内存分配器.
|
||||||
// 性质
|
// 性质
|
||||||
feature // 使能开发中的,或实验性的编译器属性。
|
feature // 使能开发中的,或实验性的编译器属性。
|
||||||
// 类型系统
|
// 类型系统
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#### 简介
|
|
||||||
|
|
||||||
格式化字符串或打印字符串的工具。
|
|
||||||
|
|
||||||
#### 宏
|
|
||||||
|
|
||||||
Debug
|
|
||||||
|
|
||||||
#### 结构体
|
|
||||||
|
|
||||||
#### 枚举类型
|
|
||||||
|
|
||||||
#### 特性
|
|
||||||
|
|
||||||
#### 函数
|
|
||||||
|
|
||||||
write
|
|
||||||
|
|
||||||
#### 类型定义
|
|
||||||
|
|
||||||
Result
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
使用了buddy系统的裸金属分配器。
|
||||||
|
|
||||||
|
#### 模块
|
||||||
|
|
||||||
|
##### linked_list
|
||||||
|
|
||||||
|
#### 结构体
|
||||||
|
|
||||||
|
##### FrameAllocator
|
||||||
|
|
||||||
|
##### Heap
|
||||||
|
|
||||||
|
次序可配置的堆
|
||||||
|
|
||||||
|
##### LockedFrameAllocator
|
||||||
|
|
||||||
|
##### LockedHeap
|
||||||
|
|
||||||
|
堆的带锁版本
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// 实现
|
||||||
|
pub const fn new() -> Self // 创建一个空堆
|
||||||
|
pub const fn empty9) -> Self // 创建一个堆
|
||||||
|
|
||||||
|
// 来自于Deref<Target = Mutex<Heap<ORDER>>>的方法
|
||||||
|
pub fn is_locked(&self) -> bool // 如果持有锁则返回true
|
||||||
|
pub fn lock(&self) -> MutexGuard<'_, T> // 锁定Mutex并返回guard,使用此guard可以访问内部数据
|
||||||
|
pub unsafe fn force_unlock(&self) // 强制解锁Mutex
|
||||||
|
pub fn try_lock(&self) -> Option<MutexGuard<'_, T>> // 尝试锁定Mutex,如成功则返回一个guard
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### LockedHeapWithRescue
|
|
@ -0,0 +1,15 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
一个用于延迟静态求值的宏。
|
||||||
|
|
||||||
|
#### 宏
|
||||||
|
|
||||||
|
##### lazy_static
|
||||||
|
|
||||||
|
#### 特性
|
||||||
|
|
||||||
|
##### LazyStatic
|
||||||
|
|
||||||
|
#### 函数
|
||||||
|
|
||||||
|
##### initialize
|
|
@ -0,0 +1,29 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
提供`std::sync`和`std::lazy`里关于自旋的原语。适用于`no_std`的环境。
|
||||||
|
|
||||||
|
#### 重新导出
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub use mutex::MutexGuard;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 模块
|
||||||
|
|
||||||
|
##### mutex
|
||||||
|
|
||||||
|
mutex的锁
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// 模块
|
||||||
|
spin
|
||||||
|
ticket
|
||||||
|
|
||||||
|
// 结构体
|
||||||
|
Mutex // 一个基于自旋的锁,提供对数据的互斥访问
|
||||||
|
MutexGuard // 对数据访问提供通用的保护,使用ticket锁或自旋锁
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 类型定义
|
|
@ -0,0 +1,63 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
内存分配APIs。
|
||||||
|
|
||||||
|
#### 结构体
|
||||||
|
|
||||||
|
##### AllocError
|
||||||
|
|
||||||
|
##### Global
|
||||||
|
|
||||||
|
##### Layout
|
||||||
|
|
||||||
|
##### LayoutError
|
||||||
|
|
||||||
|
#### 特性
|
||||||
|
|
||||||
|
##### Allocator
|
||||||
|
|
||||||
|
##### GlobalAlloc
|
||||||
|
|
||||||
|
这是一个内存分配器,可通过`#[global_allocator]`属性注册为标准库的默认值。
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub unsafe trait GlobalAlloc {
|
||||||
|
pub unsafe fn alloc(&self, layout: Layout) -> *mut u8;
|
||||||
|
pub unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout);
|
||||||
|
|
||||||
|
pub unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { ... }
|
||||||
|
pub unsafe fn realloc(
|
||||||
|
&self,
|
||||||
|
ptr: *mut u8,
|
||||||
|
layout: Layout,
|
||||||
|
new_size: usize
|
||||||
|
) -> *mut u8 { ... }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 函数
|
||||||
|
|
||||||
|
##### alloc
|
||||||
|
|
||||||
|
使用全局分配器分配内存
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub unsafe fn alloc(layout: Layout) -> *mut u8
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### alloc_zeroed
|
||||||
|
|
||||||
|
##### dealloc
|
||||||
|
|
||||||
|
##### handle_alloc_error
|
||||||
|
|
||||||
|
##### realloc
|
||||||
|
|
||||||
|
#### 类型定义
|
||||||
|
|
||||||
|
##### LayoutErr
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
用于堆分配的指针类型。
|
||||||
|
|
||||||
|
#### 结构体
|
||||||
|
|
||||||
|
##### Box
|
||||||
|
|
||||||
|
用于堆分配的指针类型。
|
|
@ -0,0 +1,17 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
一个可以持续增长的数组类型,它的内容由堆来分配,写作`Vec<T>`。
|
||||||
|
|
||||||
|
#### 数据结构
|
||||||
|
|
||||||
|
##### DrainFilter
|
||||||
|
|
||||||
|
##### Drain
|
||||||
|
|
||||||
|
##### Intolter
|
||||||
|
|
||||||
|
##### Splice
|
||||||
|
|
||||||
|
##### Vec
|
||||||
|
|
||||||
|
一个可以持续增长的数组类型,写作`Vec<T>`。
|
|
@ -0,0 +1,38 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
基本的特性和类型,代表了类型的基本属性。
|
||||||
|
|
||||||
|
按照Rust类型的固有属性,可以有多种分类方式。这些分类用特性来表示。
|
||||||
|
|
||||||
|
#### 宏
|
||||||
|
|
||||||
|
```
|
||||||
|
Copy // 派生宏,生成Copy特性
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 结构体
|
||||||
|
|
||||||
|
```
|
||||||
|
PhantomData // 长度为0的类型,这种类型表现的像它们拥有<T>。
|
||||||
|
pub struct PhantomData<T: ?Sized>;
|
||||||
|
PhantomPinned // 一个marker类型,它不实现Unpin。
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 特性
|
||||||
|
|
||||||
|
```
|
||||||
|
DiscriminantKind
|
||||||
|
StructuralEq
|
||||||
|
StructuralPartialEq
|
||||||
|
Unsize
|
||||||
|
Copy
|
||||||
|
Send
|
||||||
|
Sized
|
||||||
|
Sync
|
||||||
|
Unpin
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
内存分配API
|
||||||
|
|
||||||
|
#### 结构体
|
||||||
|
|
||||||
|
##### AllocError
|
||||||
|
|
||||||
|
##### Layout
|
||||||
|
|
||||||
|
一块内存的布局
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub struct Layout { /* fields omitted */ }
|
||||||
|
// 实现
|
||||||
|
// 特性实现
|
||||||
|
// 自动特性实现
|
||||||
|
// 空白实现
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### LayoutError
|
||||||
|
|
||||||
|
#### 特性
|
||||||
|
|
||||||
|
##### Allocator
|
||||||
|
|
||||||
|
##### GlobalAlloc
|
||||||
|
|
||||||
|
#### 类型定义
|
||||||
|
|
||||||
|
LayoutErr : 已弃用。
|
|
@ -0,0 +1,37 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
格式化字符串或打印字符串的工具。
|
||||||
|
|
||||||
|
#### 宏
|
||||||
|
|
||||||
|
Debug
|
||||||
|
|
||||||
|
#### 结构体
|
||||||
|
|
||||||
|
#### 枚举类型
|
||||||
|
|
||||||
|
Alignment
|
||||||
|
|
||||||
|
#### 特性
|
||||||
|
|
||||||
|
Binary
|
||||||
|
|
||||||
|
##### Debug
|
||||||
|
|
||||||
|
`?`格式。即把输出格式化为面向程序员的,要调试的内容。若使用可选格式`#?`,输出会更好看些。
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub trait Debug {
|
||||||
|
fn fmt(&self, f: &mut Formatter<'_>) -> Result;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 函数
|
||||||
|
|
||||||
|
write
|
||||||
|
|
||||||
|
#### 类型定义
|
||||||
|
|
||||||
|
Result
|
|
@ -34,6 +34,10 @@ crate::util // 模块路径crate::util,即文件路径./util.rs或util/mod.rs
|
||||||
|
|
||||||
##### 6.3使用的声明(use)
|
##### 6.3使用的声明(use)
|
||||||
|
|
||||||
|
##### 6.10静态条目
|
||||||
|
|
||||||
|
静态条目类似于常量,只不过它代表的是程序中精确的内存位置。所有对静态条目的引用都会指向内存中相同的位置。静态条目有静态的生命周期,即Rust程序中最长的生命周期。静态条目在程序结束的时候不会调用drop。
|
||||||
|
|
||||||
##### 6.13外部块
|
##### 6.13外部块
|
||||||
|
|
||||||
外部块是基本的Rust外部程序接口,提供了不存在于当前crate中的条目。
|
外部块是基本的Rust外部程序接口,提供了不存在于当前crate中的条目。
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
注:不成功
|
|
||||||
|
|
||||||
#### 安装
|
|
||||||
|
|
||||||
##### 0. 环境
|
|
||||||
|
|
||||||
`ubuntu 16.04 x86_64`
|
|
||||||
|
|
||||||
##### 1. 下载源代码
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git clone https://github.com/riscv-rust/riscv-rust-toolchain.git
|
|
||||||
cd riscv-rust-toolchain
|
|
||||||
git submodule update --init --recursive
|
|
||||||
```
|
|
||||||
|
|
||||||
##### 2. 安装依赖
|
|
||||||
|
|
||||||
```shell
|
|
||||||
sudo apt install autoconf automake bash bison cmake coreutils curl device-tree-compiler diffutils doxygen expat file findutils flex gawk git libgmp-dev make grep gzip libedit2 libssh2-1 libtool libusb-1.0-0 libxml2 mpc libmpfr4 ninja libncurses5 openssl patchelf pkg-config python2.7 sed swig tar texinfo zlib1g zsh
|
|
||||||
|
|
||||||
# 需要gcc-6
|
|
||||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install gcc-6 g++-6
|
|
||||||
```
|
|
||||||
|
|
||||||
##### 3. 编译
|
|
||||||
|
|
||||||
```shell
|
|
||||||
vim build-env.sh # 可选:修改安装目录,否则默认会安装在当前目录
|
|
||||||
sudo make toolchain
|
|
||||||
```
|
|
||||||
|
|
|
@ -26,6 +26,14 @@
|
||||||
|
|
||||||
数组:单一类型的复合,长度固定。使用中括号和逗号定义。数据元素的访问方法为通过数组索引访问。
|
数组:单一类型的复合,长度固定。使用中括号和逗号定义。数据元素的访问方法为通过数组索引访问。
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let a = [1, 2, 3]; // a是包含1,2,3三个数的数组
|
||||||
|
let a: [i32; 3] = [1, 2, 3]; // a是包含三个数的数组,且元素类型为i32
|
||||||
|
let a = [0; 3]; // 数组a包含三个元素,且这三个元素的值都是0
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 3_3函数
|
#### 3_3函数
|
||||||
|
|
||||||
以`fn`关键字定义函数。
|
以`fn`关键字定义函数。
|
||||||
|
@ -34,7 +42,11 @@
|
||||||
|
|
||||||
语句是不返回值的指令,以分号结尾;表达式计算并产生一个值,结尾没有分号。
|
语句是不返回值的指令,以分号结尾;表达式计算并产生一个值,结尾没有分号。
|
||||||
|
|
||||||
函数如有返回值,要用箭头`->`声明其类型。`return`用以指明返回值,如没有`return`关键字则最后一个表达式的值为返回值。
|
函数如有**非空**的返回值,要用箭头`->`声明其类型。`return`用以指明返回值,如没有`return`关键字则最后一个表达式的值为返回值。
|
||||||
|
|
||||||
|
函数如有**空**的返回值,则表示为`-> ()`,意思是返回一个没有元素的元组。`-> ()`常常被省略。
|
||||||
|
|
||||||
|
函数如果**不**返回,则表示为`-> !`,这种函数叫发散函数(diverging function)。
|
||||||
|
|
||||||
#### 3_5控制流
|
#### 3_5控制流
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
#### wait, waitpid, waitid
|
||||||
|
|
||||||
|
等待子进程状态改变
|
||||||
|
|
||||||
|
```c
|
||||||
|
pid_t wait(int *wstatus);
|
||||||
|
// 只要有一个子进程终止就不再等待。相当于waitpid(-1, wstatus, 0).
|
||||||
|
// 返回值:成功则返回子进程id,错误返回-1。
|
||||||
|
// wstatus : NULL,则忽略。非NULL,则用于保存子进程的状态信息。
|
||||||
|
|
||||||
|
pid_t waitpid(pid_t pid, int *wstatus, int options);
|
||||||
|
// 只有给定子进程pid状态改变才不再等待。
|
||||||
|
// 返回值:成功则返回子进程id,错误返回-1,某些情况下返回0.
|
||||||
|
// pid : 小于-1则所等待的子进程的组id要等于|pid|,
|
||||||
|
// 等于-1则等待任意子进程即可,
|
||||||
|
// 等于0所等待的子进程的组id要等于父进程,
|
||||||
|
// 大于0则所等待的子进程的id要等于pid。
|
||||||
|
// optons : 所等待的子进程的状态。
|
||||||
|
// WNOHANG : 无子进程退出。
|
||||||
|
// WUNTRACED :
|
||||||
|
// WCONTINUED :
|
||||||
|
|
||||||
|
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
|
||||||
|
// 提供更精确的控制
|
||||||
|
// 返回值:成功返回0,错误返回-1。
|
||||||
|
// idtype : P_PID , 所等待的子进程的进程号为id。
|
||||||
|
// P_PGID , 所等待的子进程的组id为id。
|
||||||
|
// P_ALL , 等待任意子进程,此时忽略id。
|
||||||
|
struct siginfo_t {
|
||||||
|
pid_t si_pid; // 子进程的id
|
||||||
|
uid_t si_uid; // 子进程的用户id
|
||||||
|
int si_signo; //
|
||||||
|
int si_status; //
|
||||||
|
int si_code; //
|
||||||
|
}
|
||||||
|
// options : WEXITED
|
||||||
|
// WSTOPPED
|
||||||
|
// WCONTINUED
|
||||||
|
// WNOHANG
|
||||||
|
// WNOWAIT
|
||||||
|
|
||||||
|
pid_t wait3(int *wstatus, int options, struct rsuage *rusage);
|
||||||
|
// 返回值 : 与waitpid相同。
|
||||||
|
// rusage : NULL则忽略,非NULL则保存子进程的统计信息。
|
||||||
|
pid_t wait4(pid_t pid, int *wstatus, int options, struct rusage *rusage);
|
||||||
|
// 返回值: 与waitpid相同。
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### gettimeofday
|
||||||
|
|
||||||
|
获取从1970-01-01 00:00:00 +0000(UTC)到现在经历的时间。这个时间记录在`TimeVal`中。
|
||||||
|
|
||||||
|
```c
|
||||||
|
ing gettimeofday(struct timeval *tv, int timezone)
|
||||||
|
struct timeval {
|
||||||
|
time_t sec; // 秒数
|
||||||
|
suseconds_t usec; // 微秒数
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
|
@ -157,7 +157,6 @@ push
|
||||||
rename
|
rename
|
||||||
restart # 重启容器。
|
restart # 重启容器。
|
||||||
rmi # 移除一个或多个镜像(最顶层)。可以使用-f来删除中间的只读层。
|
rmi # 移除一个或多个镜像(最顶层)。可以使用-f来删除中间的只读层。
|
||||||
run # 相当于create + start
|
|
||||||
search
|
search
|
||||||
stats
|
stats
|
||||||
stop # 停止一个或多个运行中的容器。
|
stop # 停止一个或多个运行中的容器。
|
||||||
|
@ -239,6 +238,20 @@ docker rm [options] <containers> # 删除容器
|
||||||
-v, --volumes # 删除与容器相关的卷(volumes)
|
-v, --volumes # 删除与容器相关的卷(volumes)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### run
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run [options] <image> [cmd] [args]
|
||||||
|
# 在一个新容器里运行命令,相当于create + start
|
||||||
|
# 选项
|
||||||
|
-d, --detach # 在后台运行容器,并打印容器的id
|
||||||
|
--name <string> # 指定容器名
|
||||||
|
--network <network> # 把容器连接到一个network
|
||||||
|
-v, --volume <list> # 绑定并挂载一个卷
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### save
|
##### save
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
--global # 修改~/.gitconfig里的配置文件,但如果$XDG_CONFIG_HOME/git/config存在则修改之,而不再修改~/.gitconfig。
|
--global # 修改~/.gitconfig里的配置文件,但如果$XDG_CONFIG_HOME/git/config存在则修改之,而不再修改~/.gitconfig。
|
||||||
--system # 修改/etc/gitconfig
|
--system # 修改/etc/gitconfig
|
||||||
--local # 修改.git/config里的配置文件
|
--local # 修改.git/config里的配置文件
|
||||||
|
-l, --list # 列出配置文件中所有的键值对
|
||||||
|
--unset # 从配置文件中删除与key相匹配的行
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +40,8 @@
|
||||||
|
|
||||||
```
|
```
|
||||||
core.quotePath # 把路径里的不常用字符用反斜杠的方式来编码,当这个变量设置为false的时候,字符均不认为是不常用的。
|
core.quotePath # 把路径里的不常用字符用反斜杠的方式来编码,当这个变量设置为false的时候,字符均不认为是不常用的。
|
||||||
|
http.proxy # 设置HTTP代理,常使用环境变量http_proxy, https_proxy, all_proxy来设置。
|
||||||
|
http.<url>.* # 让配置http.*仅作用于给定的url。
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 使用示例
|
#### 使用示例
|
||||||
|
|
|
@ -2,19 +2,86 @@
|
||||||
|
|
||||||
把改变保存在一个dirty的工作区。它会把工作区和暂存区的状态都保存起来,但只是保存到本地而不会推送到远程。
|
把改变保存在一个dirty的工作区。它会把工作区和暂存区的状态都保存起来,但只是保存到本地而不会推送到远程。
|
||||||
|
|
||||||
|
```
|
||||||
|
git stash <subcommand> [options]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 子命名
|
#### 子命名
|
||||||
|
|
||||||
```
|
```
|
||||||
apply
|
|
||||||
branch <branch> [stash] # 从stash创建分支
|
branch <branch> [stash] # 从stash创建分支
|
||||||
clear # 删除所有的stash
|
|
||||||
create
|
create
|
||||||
drop # 移除stash
|
|
||||||
list # 列出当前stash
|
|
||||||
pop [stash] # 恢复之前的stash,如不给出stash则默认使用stash@{0}
|
|
||||||
# 使用此命令有可能产生冲突,此时需要手动解决冲突,并使用git stash drop命令手动删除对应的stash
|
|
||||||
push [-m <message>] [--] [pathspec...] # 把本地的修改保存起来
|
|
||||||
show # 显示stash的内容
|
show # 显示stash的内容
|
||||||
store
|
```
|
||||||
|
|
||||||
|
##### apply
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git stash apply [options] [stash] # 把一个stash添加到工作区,但不会从stash列表里删除对应stash
|
||||||
|
|
||||||
|
# 选项
|
||||||
|
--index
|
||||||
|
-q, --quiet
|
||||||
|
```
|
||||||
|
|
||||||
|
##### clear
|
||||||
|
|
||||||
|
```bash
|
||||||
|
clear # 删除所有的stash
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### drop
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git stash drop [-q| --quiet] [stash] # 移除stash
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### list
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git stash list [options] # 列出当前stash
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
##### pop
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git stash pop [options] [stash] # 从stash列表里删除一个stash,并把它添加到工作区,如不给出stash则默认使用stash@{0}
|
||||||
|
# 使用此命令有可能产生冲突,此时需要手动解决冲突,并使用git stash drop命令手动删除对应的stash
|
||||||
|
|
||||||
|
# 选项
|
||||||
|
--index
|
||||||
|
-q, --quiet
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### push
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git stash [push] [options] [--] [pathspec...] # 把本地的修改保存起来,并回滚到HEAD
|
||||||
|
|
||||||
|
# 选项
|
||||||
|
-p, --patch
|
||||||
|
-k, --[no-]keep-index
|
||||||
|
-q, --quiet
|
||||||
|
-u, --include-untracked
|
||||||
|
-a, --all
|
||||||
|
-m, --message <msg>
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
##### store
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git stash store
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
#### 选项
|
||||||
|
|
||||||
|
```
|
||||||
|
-C <string> # 配置文件
|
||||||
|
-D # 开启调试日志
|
||||||
|
-F <value> # 设置转发地址,可做成转发链
|
||||||
|
-L <value> # 监听地址,可监听多个端口
|
||||||
|
-V # 打印版本信息
|
||||||
|
-obfs4-distBias # 开启obfs4
|
||||||
|
|
||||||
|
# <value>的格式
|
||||||
|
[scheme://][user:pass@host]:port[?param1=value1¶m2=value2]
|
||||||
|
# scheme : 协议类型或传输类型,或二者的组合,或空
|
||||||
|
# 默认协议类型:-L参数是HTTP&SOCKS5,-F参数是HTTP
|
||||||
|
# 默认传输层类型:原始TCP类型
|
||||||
|
# 组合用法示例:http+tls, socks5+wss
|
||||||
|
```
|
|
@ -0,0 +1,12 @@
|
||||||
|
```
|
||||||
|
gzip [options] [names] # 压缩或解压
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 选项
|
||||||
|
|
||||||
|
```
|
||||||
|
-d, --decompress, --uncompress # 解压
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
显示最近登陆的用户
|
|
@ -13,6 +13,39 @@ tmux使用c/s结构,主要包括如下模块:
|
||||||
tmux [options] [command [flags]]
|
tmux [options] [command [flags]]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 命令
|
||||||
|
|
||||||
|
##### 客户端与会话
|
||||||
|
|
||||||
|
```bash
|
||||||
|
attach, attach-session [-dEr] [-c working-dir] [-t target-session]
|
||||||
|
# 如在tmux外部,则在当前终端创建一个新的client并把它附加到target-session。如在tmux内部,则切换到当前client。
|
||||||
|
|
||||||
|
ls, list-sessions [-F format]
|
||||||
|
# 列出server管理着的所有会话
|
||||||
|
|
||||||
|
new-session [options] [shell-cmd] # 创建一个新的会话。
|
||||||
|
-d # 新会话不附加到当前终端。(默认是附加到当前终端的)
|
||||||
|
|
||||||
|
rename, rename-session [-t target-session] new-name
|
||||||
|
# 给会话重命名
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 窗口与面板
|
||||||
|
|
||||||
|
```bash
|
||||||
|
renamew, rename-window [-t target-vindow] new-name
|
||||||
|
# 给窗口重命名
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 键绑定
|
||||||
|
|
||||||
#### 选项
|
#### 选项
|
||||||
|
|
||||||
可以通过变量的值来控制tmux的外观和行为。有三类选项:server选项、session选项和window选项。
|
可以通过变量的值来控制tmux的外观和行为。有三类选项:server选项、session选项和window选项。
|
||||||
|
@ -27,27 +60,6 @@ show-window-options [-gv] [-t target-window] [option]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 命令
|
|
||||||
|
|
||||||
##### 窗户端与会话
|
|
||||||
|
|
||||||
```
|
|
||||||
attach, attach-session [-dEr] [-c working-dir] [-t target-session]
|
|
||||||
# 如在tmux外部,则在当前终端创建一个新的client并把它附加到target-session。如在tmux内部,则切换到当前client。
|
|
||||||
|
|
||||||
ls, list-sessions [-F format]
|
|
||||||
# 列出server管理着的所有会话
|
|
||||||
|
|
||||||
new-session [options] [shell-cmd] # 创建一个新的会话。
|
|
||||||
-d # 新会话不附加到当前终端。(默认是附加到当前终端的)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 窗口与面板
|
|
||||||
|
|
||||||
##### 键绑定
|
|
||||||
|
|
||||||
#### 激活控制台
|
#### 激活控制台
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
显示登陆的用户,以及这些用户做了些什么。
|
|
@ -41,5 +41,23 @@ wget [option] [url]
|
||||||
|
|
||||||
##### 递归搜索
|
##### 递归搜索
|
||||||
|
|
||||||
|
```
|
||||||
|
-r, --recursive # 开启递归搜索,默认深度为5.
|
||||||
|
-k, --convert-links # 下载完成后转换文档中的链接使其适合本地观看。
|
||||||
|
-p, --page-requisites # 下载所有必需的文件,以正确显示给定HTML页。
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 递归接收/拒绝
|
##### 递归接收/拒绝
|
||||||
|
|
||||||
|
```
|
||||||
|
-np, --no-parent # 不向父目录的方向递归检索。
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 示例
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget -r -p -np -k <url> # 批量下载url下的所有网页
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#### 简介
|
#### 简介
|
||||||
|
|
||||||
创建新用户。
|
创建新用户,属于底层命令。一般用高层命令`adduser`即可。
|
||||||
|
|
||||||
#### 语法
|
#### 语法
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
|
#### 简介
|
||||||
|
|
||||||
|
nohup的意思是"no hang up",在运行命令的时候忽略hangup信号。
|
||||||
|
|
||||||
```
|
```
|
||||||
nohup <command> [args] # 运行command,忽略hangup信号
|
nohup <command> [args] # 运行command,忽略hangup信号
|
||||||
# 当用户注销或远程连接断开时,终端会收到hangup信号,从而关闭其所有子进程
|
# 当用户注销或远程连接断开时,终端会收到hangup信号,从而关闭其所有子进程
|
||||||
# 一般会在最后加'&'把命令放后台执行
|
# 一般会在最后加'&'把命令放后台执行
|
||||||
# 标准输出和标准错误会默认重定向到nohup.out的文件
|
# 标准输出和标准错误会默认重定向到当前目录的nohup.out的文件,若无法输出到当前目录的nohup.out文件,则输出到$HOME/nohup.out文件。
|
||||||
|
# 可以使用 > 把输出重定向到指定的文件。
|
||||||
|
# 可以使用 2>&1 把标准错误和标准输出都重定向到指定文件。
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue