学习目标:Linux
- 常用文件管理命令
- tmux和vim
- shell语法
- ssh
- git
- thrift
- 管道、环境变量与常用命令
- 租云服务器及配docker环境
常用文件管理命令:
- 创建 mkdir或touch
- 删除 rm (-r)
- 复制 cp
- 重命名/移动 mv
- 显示 cat
- 快捷键:tab(智能补全)、ctrl+c(中断)、ctrl+u(清空该行)
- 一些常用的如ls、pwd
tmux和vim
tmux功能:分屏+断开terminal进程还继续
vim功能:高级文本编辑器
tmux结构:session - window - pane
- 创建tmux tmux或者tmux a
- 查看其他session ctrl+a再按s
- 【分屏】ctrl+a然后再%或者然后再“
- 【删除某个分屏】ctrl+d
- 【选择某个分屏】鼠标点击
- 【调整分屏大小】鼠标拖动
- 【全屏/取消全屏】ctrl+a然后z
- 挂起 ctrl+a 然后d
- 选中文本 按住shift同时用鼠标选中
vim模式:一般命令格式、编辑模式、命令行模式
- 光标向右移动这一行的n个字符 n<空格>
- 光标移动到本行开头 功能键[Home] 或 0
- 光标移动到本行末尾 功能键[End] 或 $
- 光标移动到最后一行 G
- 光标移动到第一行 gg或1G
- 光标移动到第n行 nG或者:n
- 向光标之下寻找第一个值为word的字符串 /word
- 向光标之上寻找第一个值为word的字符串 ?word
- 重复前一个查找操作 n
- 反向重复前一个查找操作 N
- 在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2 :n1,n2s/word1/word2/g
- 将全文的word1替换为word2,且在替换前要求用户确认 :1,$s/word1/word2/gc
- 选中文本 v
- 删除选中的文本 d
- 删除当前行 dd
- 复制选中的文本 y
- 复制当前行 yy
- 将复制的数据在光标的下一行/下一个位置粘贴 p
如果复制或剪切的是多行字符串,粘贴时不会在光标所在的下一行另起一行粘贴,会将剪切或复制的内容直接粘贴在光标后面。如果复制或剪切的是单行字符串,粘贴时会在光标所在的下一行另起一行进行粘贴。 - 撤销 u
- 取消撤销 ctrl+r
- 将选中的文本整体向右缩进一次 >
- 将选中的文本整体向左缩进一次 <
- 将全文代码格式化 gg=G
- 设置成粘贴模式,取消代码自动缩进 :set paste
- 取消粘贴模式,开启代码自动缩进 :set nopaste
- 显示行号 :set nu
- 隐藏行号 :set nonu
- 关闭查找关键词高亮 :noh
- 当vim卡死时,可以取消当前正在执行的命令 ctrl + q
将第3个"two"后面的连续12个字符删掉
删除第11行第15个字符(包含该字符)至第13行第5个字符(包含该字符)
shell语法
shell是我们通过命令行与操作系统沟通的语言。常见的shell脚本有shell,bash,xshell,cshell…
Linux系统中一般默认使用bash,文件开头需要写#! /bin/bash,指明bash为脚本解释器
变量
定义变量 name=123 不需要$,并且=两边无空格
使用变量${}
只读变量
删除变量unset
默认变量
$0 $# $@ $? ``
数组
arr=(1 2 ‘3’)
expr命令
ans=`expr $i \* $i` 乘需要转义
read命令
read n -p "Please input your name: " < $1
echo命令
echo -e “Hi\n” 注意 -e 开启转义
echo -e “Hi \c” 注意-e 开启转义 \c 不换行
test命令与判断符号[]
一般和if一块用
函数
func() { # 递归计算 $1 + ($1 - 1) + ($1 - 2) + ... + 0
word=""
while [ "${word}" != 'y' ] && [ "${word}" != 'n' ]
do
read -p "要进入func($1)函数吗?请输入y/n:" word
done
if [ "$word" == 'n' ]
then
echo 0
return 0
fi
if [ $1 -le 0 ]
then
echo 0
return 0
fi
sum=$(func $(expr $1 - 1))
echo $(expr $sum + $1)
}
echo $(func 10)
文件重定向
>和>>的区别
ssh:
ssh登录服务器
scp传文件
ssh
ssh user@hostname------>太难记修改./ssh/config
Host myserver1
HostName IP地址或域名
User 用户名
密码太难记------>密钥登录
ssh-copy-id myserver
scp传文件
scp -r source1 source2 destination
git
git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中
git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
git add XX:将XX文件添加到暂存区
git commit -m “给自己看的备注信息”:将暂存区的内容提交到当前分支
git status:查看仓库状态
git diff XX:查看XX文件相对于暂存区修改了哪些内容
git restore XX:将XX文件尚未加入暂存区的修改全部撤销
git log:查看当前分支的所有版本
git reflog:查看HEAD指针的移动历史(包括被回滚的版本)
git reset --hard HEAD^:将代码库回滚到上一个版本
git reset --hard 版本号:回滚到某一特定版本
git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库
git push -u origin master
git clone git@git.acwing.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下
git checkout -b branch_name:创建并切换到branch_name这个分支
git branch:查看所有分支和当前所处分支
git checkout branch_name:切换到branch_name这个分支
git merge branch_name:将分支branch_name合并到当前分支上
git branch -d branch_name:删除本地仓库的branch_name分支
git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支
git push -d origin branch_name:删除远程仓库的branch_name分支
git pull:将远程仓库的当前分支与本地仓库的当前分支合并
git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并
git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应
git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地
git stash:将工作区和暂存区中尚未提交的修改存入栈中
git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop:删除栈顶存储的修改
git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
git stash list:查看栈中所有元素
管道、环境变量与常用命令:
提示:这里统计学习计划的总量
管道
管道类似于文件重定向,可以将前一个命令的stdout重定向到下一个命令的stdin
例如: find . -name ‘*.py’ | xargs cat | wc -l
环境变量
常见的环境变量 ~/.bashrc文件中
- HOME:用户的家目录。
- PATH:
可执行文件(命令)的存储路径。路径与路径之间用:分隔。
当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。 - C_INCLUDE_PATH:C语言的头文件路径,内容是以冒号分隔的路径列表。
- CPLUS_INCLUDE_PATH:CPP的头文件路径,内容是以冒号分隔的路径列表。
- PYTHONPATH:Python导入包的路径,内容是以冒号分隔的路径列表。
- JAVA_HOME:jdk的安装目录。
- CLASSPATH:存放Java导入类的路径,内容是以冒号分隔的路径列表。
常用命令
tar:压缩文件
tar -zcvf xxx.tar.gz /path/to/file/*:压缩
tar -zxvf xxx.tar.gz:解压缩
- 技术笔记 2 遍
- CSDN 技术博客 3 篇
- 习的 vlog 视频 1 个
学习产出:
提示:这里统计学习计划的总量
例如:
- 技术笔记 2 遍
- CSDN 技术博客 3 篇
- 习的 vlog 视频 1 个