Linux Tool
Some basic knowledge about Linux and git
常用命令
- man(手册)
- pwd(路径)
- cd
1 2 3
cd -- #返回上级目录 cd ~ #切换到主目录 cd 路径 # 切换到对应路径
- mv(重命名文件或移动文件)
1 2
mv 文件 目标文件名 # 重命名 mv 文件 -t 目标路径 #移动
- cp(拷贝文件)
1
cp -r 移动文件夹 目标文件夹
- mkdir
1
mkdir 对应文件名
- chmod
1 2
chmod 777 file #改变对应文件的权限 chmod ugo+r file #所有人都可读文件
- ln
1
ln -s file_path Link_name #符号链接 s表示symbol
- j
autojump 快速跳转工具,能够根据最近常用的文件夹调整1
j 文件夹
- tldr
与man
功能类似,但是更加清楚1
tldr 工具
输入流和输出流
>
输入流,<
输出流
对于输入和输出进行重定向,将某个文件里进行输出或将某个文件进行输入
1
2
3
echo hello > hello.txt
cat hello.txt
# 将echo的输出重定向至hello.txt,并输出hello.txt文件内容
管道
通过管道我们可以将一个程序的输出和另一个程序的输入连接起来
1
ls -l | tail -n10 #打印最后10个文件属性
Shell脚本基本语言
$bar
访问变量中储存的数值
1
2
3
4
5
foo=bar
echo "$foo"
# 打印 bar
echo '$foo'
# 打印 $foo
函数
1
2
3
4
mcd () {
mkdir -p "$1"
cd "$1"
}
其中 $1
表示第一个变量
bash中一些特殊的变量
$0
- 脚本名$1
到$9
- 脚本的参数。 $1 是第一个参数,依此类推。$@
- 所有目标文件$#
- 参数个数$?
- 前一个命令的返回值$$
- 当前脚本的进程识别码!!
- 完整的上一条命令,包括参数。常见应用:当你因为权限不足执行–命令失败时,可以使用sudo !!
再尝试一次。$_
- 上一条命令的最后一个参数。如果你正在使用的是交互式 shell,你可以通过按下 Esc 之后键入 . 来获取这个值。$<
- 第一个依赖文件$^
- 所有依赖文件
执行命令 - $(cmd)
将输出结果替换 $cmd
如
1
for file in $(ls)
通配符
通常使用 ?
或 *
来匹配一个或任意一个字符如foo*
则代表foo1
、foo2
、foo3
等等
花括号
当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。
1
2
3
4
5
6
7
8
mkdir foo bar
# 下面命令会创建 foo/a, foo/b, ... foo/h, bar/a, bar/b, ... bar/h 这些文件
touch {foo,bar}/{a..h}
touch foo/x bar/y
# 比较文件夹 foo 和 bar 中包含文件的不同
diff <(ls foo) <(ls bar)
- export
export可新增,修改或删除环境变量,供后续执行的程序使用1 2
# 将/tmp/hello的路径加入到PATH,从而可以在任何地方直接使用hello命令。 export PATH=$PATH:/tmp/hello
Git
版本控制系统(Version System System, VCS)是一类用于追踪源代码(或其他文件、文件夹)改动的工具。
Git 拥有一个经过精心设计的VCS模型,这使其能够支持版本控制所需的所有特性,例如维护历史记录、支持分支和促进协作。
Git Fuction
git init
创建一个git的仓库,其数据会存放在一个名为.git
的目录下git status
显示当前的仓库状态git log
显示历史日志git log --all --graph --decorate
可视化历史记录(有向无环图)git diff <filename>
显示与暂存区文件的差异git diff <revison> <filename>
显示某个文件两个版本之间的差异git checkout <revison>
显示HEAD和目前的分支git branch
显示分支git branch <name>
创建分支git checkout -b <name>
创建分支并切换到分支git merge <revision>
合并到当前分支
Git的进阶用法
1
2
3
4
5
6
7
8
9
10
11
git rm --cached -rf <filename>
# 删除working tree 中commit的文件 -r 递归删除 -f force
git submodule deinit
# submodule 类似项目中的子项目
# deinit 删除某一个子项目
# submodule 可以有着独立的缓存
git reset
# 对于commit的缓存进行回述
# -- soft index 和 working tree 都不会改变
# -- mixed index 改变 working tree 不该变
# -- hard index 和 working tree 都会改变
慎用
git reset --hard
1
2
3
4
5
6
git config
# 用来配置提交用户属性
# --list 可以看到config的一些属性
# 一些使用的功能
git config remote.origin.url xxx
# 修改url
.gitignore文件
通常配置一些上传需要忽略的文件(如一些配置文件,保护一些隐私)
This post is licensed under CC BY 4.0 by the author.