来自y总的Linux基础课
常用文件管理命令
- 常用命令介绍
ctrl c
: 取消命令,并且换行ctrl u
: 清空本行命令tab键
:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项ls
: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件pwd
: 显示当前路径cd XXX
: 进入XXX目录下, cd .. 返回上层目录cp XXX YYY
: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,比如../dir_c/a.txt,表示上层目录下的dir_c文件夹下的文件a.txtmkdir XXX
: 创建目录XXXrm XXX
: 删除普通文件; rm XXX -r: 删除文件夹mv XXX YYY
: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令touch XXX
: 创建一个文件cat XXX
: 展示文件XXX中的内容- 复制文本
windows/Linux下:Ctrl + insert
,Mac下:command + c
- 粘贴文本
windows/Linux下:Shift + insert
,Mac下:command + v
tmux&vim
- tmux
- 功能:
- 分屏。
- 允许断开Terminal连接后,继续运行进程。
- 结构:
一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane。
实例:
tmux:
session 0:
window 0:
pane 0
pane 1
pane 2
...
window 1
window 2
...
session 1
session 2
... - 操作:
(1)tmux
:新建一个session,其中包含一个window,window中包含一个pane,pane里打开了一个shell对话框。
(2) 按下Ctrl + a
后手指松开,然后按%:将当前pane左右平分成两个pane。
(3) 按下Ctrl + a
后手指松开,然后按"(注意是双引号"):将当前pane上下平分成两个pane。
(4)Ctrl + d
:关闭当前pane;如果当前window的所有pane均已关闭,则自动关闭window;如果当前session的所有window均已关闭,则自动关闭session。
(5) 鼠标点击可以选pane。
(6) 按下ctrl + a
后手指松开,然后按方向键:选择相邻的pane。
(7) 鼠标拖动pane之间的分割线,可以调整分割线的位置。
(8) 按住ctrl + a
的同时按方向键,可以调整pane之间分割线的位置。
(9) 按下ctrl + a
后手指松开,然后按z:将当前pane全屏/取消全屏。
(10) 按下ctrl + a
后手指松开,然后按d:挂起当前session。
(11)tmux a
:打开之前挂起的session。
(12) 按下ctrl + a
后手指松开,然后按s:选择其它session。
方向键 —— 上:选择上一项 session/window/pane
方向键 —— 下:选择下一项 session/window/pane
方向键 —— 右:展开当前项 session/window
方向键 —— 左:闭合当前项 session/window
(13) 按下Ctrl + a
后手指松开,然后按c:在当前session中创建一个新的window。
(14) 按下Ctrl + a
后手指松开,然后按w:选择其他window,操作方法与(12)完全相同。
(15) 按下Ctrl + a
后手指松开,然后按PageUp:翻阅当前pane内的内容。
(16) 鼠标滚轮:翻阅当前pane内的内容。
(17) 在tmux中选中文本时,需要按住shift
键。(仅支持Windows和Linux,不支持Mac,不过该操作并不是必须的,因此影响不大)
(18) tmux中复制/粘贴文本的通用方式:
(1) 按下Ctrl + a
后松开手指,然后按[
(2) 用鼠标选中文本,被选中的文本会被自动复制到tmux的剪贴板
(3) 按下Ctrl + a
后松开手指,然后按],会将剪贴板中的内容粘贴到光标处
- 功能:
- vim
- 功能:
(1) 命令行模式下的文本编辑器。
(2) 根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮等功能。
(3) 使用方式:vim filename
如果已有该文件,则打开它。
如果没有该文件,则打开个一个新的文件,并命名为filename - 模式:
(1) 一般命令模式
默认模式。命令输入方式:类似于打游戏放技能,按不同字符,即可进行不同操作。可以复制、粘贴、删除文本等。
(2) 编辑模式
在一般命令模式里按下i,会进入编辑模式。
按下ESC会退出编辑模式,返回到一般命令模式。
(3) 命令行模式
在一般命令模式里按下:/?三个字母中的任意一个,会进入命令行模式。命令行在最下面。
可以查找、替换、保存、退出、配置编辑器等。 - 操作:
(1)i
:进入编辑模式
(2)ESC
:进入一般命令模式
(3)h
或左箭头键
:光标向左移动一个字符
(4)j
或向下箭头
:光标向下移动一个字符
(5)k
或向上箭头
:光标向上移动一个字符
(6)l
或向右箭头
:光标向右移动一个字符
(7)n<Space>
:n表示数字,按下数字后再按空格,光标会向右移动这一行的n个字符
(8)0
或 功能键[Home]:光标移动到本行开头
(9)$
或 功能键[End]:光标移动到本行末尾
(10)G
:光标移动到最后一行
(11):n
或nG
:n为数字,光标移动到第n行
(12)gg
:光标移动到第一行,相当于1G
(13)n<Enter>
:n为数字,光标向下移动n行
(14)/word
:向光标之下寻找第一个值为word的字符串。
(15)?word
:向光标之上寻找第一个值为word的字符串。
(16)n
:重复前一个查找操作
(17)N
:反向重复前一个查找操作
(18):n1,n2s/word1/word2/g
:n1与n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2
(19):1,$s/word1/word2/g
:将全文的word1替换为word2
(20):1,$s/word1/word2/gc
:将全文的word1替换为word2,且在替换前要求用户确认。
(21)v
:选中文本
(22)d
:删除选中的文本
(23)dd
: 删除当前行
(24)y
:复制选中的文本
(25)yy
: 复制当前行
(26)p
: 将复制的数据在光标的下一行/下一个位置粘贴
(27)u
:撤销
(28)Ctrl + r
:取消撤销
(29) 大于号>
:将选中的文本整体向右缩进一次
(30) 小于号<
:将选中的文本整体向左缩进一次
(31):w
保存
(32):w!
强制保存
(33):q
退出
(34):q!
强制退出
(35):wq
保存并退出
(36):set paste
设置成粘贴模式,取消代码自动缩进
(37):set nopaste
取消粘贴模式,开启代码自动缩进
(38):set nu
显示行号
(39):set nonu
隐藏行号
(40)gg=G
:将全文代码格式化
(41):noh
关闭查找关键词高亮
(42)Ctrl + q
:当vim卡死时,可以取消当前正在执行的命令
(43)o
:跳转到下一行的开头并且进入insert模式,O
跳转到上一行
(44)x
:删除当前字符
(45)dw
:"删除从光标开始到单词结尾"
(46)db
:删除从光标开始到单词开头
(47)x
:删除当前字符 - 异常处理:
每次用vim编辑文件时,会自动创建一个.filename.swp的临时文件。
如果打开某个文件时,该文件的swp文件已存在,则会报错。此时解决办法有两种:
(1) 找到正在打开该文件的程序,并退出
(2) 直接删掉该swp文件即可
- 功能:
shell语法
https://www.acwing.com/file_system/file/content/whole/index/content/2855883/
ssh&scp
https://www.acwing.com/file_system/file/content/whole/index/content/2897078/
git
- git基本概念
- 工作区:仓库的目录。工作区是独立于各个分支的。
- 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
- 版本库:存放所有已经提交到本地仓库的代码版本
- 版本结构:树结构,树中每个节点代表一个代码版本。
-
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 add
.:将所有待加入暂存区的文件加入暂存区git rm --cached XX
:将文件从仓库索引目录中删掉git commit -m "给自己看的备注信息"
:将暂存区的内容提交到当前分支git status
:查看仓库状态git diff XX
:查看XX文件相对于暂存区修改了哪些内容git log --pretty=oneline
:查看当前分支的所有版本git reflog
:查看HEAD指针的移动历史(包括被回滚的版本)git reset --hard HEAD^
或git reset --hard HEAD~
:将代码库回滚到上一个版本git reset --hard HEAD^^
:往上回滚两次,以此类推git reset --hard HEAD~100
:往上回滚100个版本git reset --hard 版本号
:回滚到某一特定版本git revert
:将旧的作为新提交放在当前版本的下一版本git checkout — XX
或git restore XX
:将XX文件尚未加入暂存区的修改全部撤销git remote add origin git@git.acwing.com:xxx/XXX.git
:将本地仓库关联到远程仓库git push -u (第一次需要-u以后不需要)
:将当前分支推送到远程仓库git push origin branch_name
:将本地的某个分支推送到远程仓库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 branch branch_name
:创建新分支git branch -f main HEAD^3
:将main分支强制指向HEAD的第三级父提交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
:查看栈中所有元素git rebase
变基 todogit rebase -i
:交互式rebasegit cherry-pick C1
:将C1提交提交到当前HEAD下面git tag
:打标签git describe X
:查找离X最近的标签
Comments | NOTHING