【Linux学习】

学习目标:Linux

  • 常用文件管理命令
  • tmux和vim
  • shell语法
  • ssh
  • git
  • thrift
  • 管道、环境变量与常用命令
  • 租云服务器及配docker环境

常用文件管理命令:

  1. 创建 mkdir或touch
  2. 删除 rm (-r)
  3. 复制 cp
  4. 重命名/移动 mv
  5. 显示 cat
  6. 快捷键:tab(智能补全)、ctrl+c(中断)、ctrl+u(清空该行)
  7. 一些常用的如ls、pwd

tmux和vim

tmux功能:分屏+断开terminal进程还继续
vim功能:高级文本编辑器

tmux结构:session - window - pane

  1. 创建tmux tmux或者tmux a
  2. 查看其他session ctrl+a再按s
  3. 【分屏】ctrl+a然后再%或者然后再“
  4. 【删除某个分屏】ctrl+d
  5. 【选择某个分屏】鼠标点击
  6. 【调整分屏大小】鼠标拖动
  7. 【全屏/取消全屏】ctrl+a然后z
  8. 挂起 ctrl+a 然后d
  9. 选中文本 按住shift同时用鼠标选中

vim模式:一般命令格式、编辑模式、命令行模式

  1. 光标向右移动这一行的n个字符 n<空格>
  2. 光标移动到本行开头 功能键[Home] 或 0
  3. 光标移动到本行末尾 功能键[End] 或 $
  4. 光标移动到最后一行 G
  5. 光标移动到第一行 gg或1G
  6. 光标移动到第n行 nG或者:n
  7. 向光标之下寻找第一个值为word的字符串 /word
  8. 向光标之上寻找第一个值为word的字符串 ?word
  9. 重复前一个查找操作 n
  10. 反向重复前一个查找操作 N
  11. 在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2 :n1,n2s/word1/word2/g
  12. 将全文的word1替换为word2,且在替换前要求用户确认 :1,$s/word1/word2/gc
  13. 选中文本 v
  14. 删除选中的文本 d
  15. 删除当前行 dd
  16. 复制选中的文本 y
  17. 复制当前行 yy
  18. 将复制的数据在光标的下一行/下一个位置粘贴 p
    如果复制或剪切的是多行字符串,粘贴时不会在光标所在的下一行另起一行粘贴,会将剪切或复制的内容直接粘贴在光标后面。如果复制或剪切的是单行字符串,粘贴时会在光标所在的下一行另起一行进行粘贴。
  19. 撤销 u
  20. 取消撤销 ctrl+r
  21. 将选中的文本整体向右缩进一次 >
  22. 将选中的文本整体向左缩进一次 <
  23. 将全文代码格式化 gg=G
  24. 设置成粘贴模式,取消代码自动缩进 :set paste
  25. 取消粘贴模式,开启代码自动缩进 :set nopaste
  26. 显示行号 :set nu
  27. 隐藏行号 :set nonu
  28. 关闭查找关键词高亮 :noh
  29. 当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文件中

  1. HOME:用户的家目录。
  2. PATH:可执行文件(命令)的存储路径。路径与路径之间用:分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。
  3. C_INCLUDE_PATH:C语言的头文件路径,内容是以冒号分隔的路径列表。
  4. CPLUS_INCLUDE_PATH:CPP的头文件路径,内容是以冒号分隔的路径列表。
  5. PYTHONPATH:Python导入包的路径,内容是以冒号分隔的路径列表。
  6. JAVA_HOME:jdk的安装目录。
  7. CLASSPATH:存放Java导入类的路径,内容是以冒号分隔的路径列表。

常用命令

tar:压缩文件
tar -zcvf xxx.tar.gz /path/to/file/*:压缩
tar -zxvf xxx.tar.gz:解压缩

  1. 技术笔记 2 遍
  2. CSDN 技术博客 3 篇
  3. 习的 vlog 视频 1 个

学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值