Linux基础
Lesson1-常用基本命令
1.
Ctrl c
:取消命令,并且换行
Ctrl u
:清空本行命令
tab键
:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
ls
:列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件ㅤㅤ●ㅤ
ls -a
:查看所有文件包括隐藏文件(以.开头的文件就是隐藏文件)ㅤㅤ●ㅤ
ls -l
:查看当前路径下文件的读、写、执行权限ㅤㅤ●ㅤ
ls | wc -l
:查看ls下有多少个文件
pwd
:显示当前路径
cd XXX
:进入XXX目录下,cd ..返回上层目录ㅤㅤ●ㅤ.:当前目录 ..:上级目录
ㅤㅤ●ㅤ~:家目录,回回到路径/home/acs下
ㅤㅤ●ㅤcd -:返回改变路径前的路径,比如当前在/home/acs/homework然后cd** **/这个时候就处于/目录下,然后cd -就会回到改变路径前的路径也就是/home/acs/homework
cp XXX YYY
:将XXX文件复制成YYY,XXX和YYY可以是同一个路径,比如../dir_c/a.txt,表示上层目录下的dir_c文件夹下的文件a.txtㅤㅤ●ㅤcp XXX YYY -r将XXX目录(文件夹)复制到YYY下
ㅤㅤ●ㅤ非当前路径重命名方法:cp a.txt ../b.txt
mkdir XXX
:创建目录(文件夹)XXXㅤㅤ●ㅤ
mkdir -p
:-p:如果文件夹不存在,则创建
rm XXX
:删除普通文件; rm XXX -r:删除文件夹ㅤㅤ●ㅤ支持正则表达式,删除所有.txt类型文件:rm *.txt
ㅤㅤ●ㅤ删除所有文件(不包括文件夹):rm *
ㅤㅤ●ㅤ正则表达式删除所有文件夹:rm * -r即可
mv XXX YYY
:将XXX文件移动到YYY下,和cp命令一样,XXX和YYY可以是同一个路径;重命名也是用这个命令ㅤㅤ●ㅤ非当前路径移动方法:mv a.txt ../b.txt
touch XXX
:创建一个文件
cat XXX
:展示文件XXX中的内容复制文本:windows/Linux下:
Ctrl + insert
粘贴文本:windows/Linux下:
Shift + insert
history
:查看历史输入指令
tree
:以树形显示文件目录结构
Lesson2-tmux和vim
tmux
作用
1.分屏:可以在一个开发框里分屏
2.允许terminal在连接断开之后可以继续运行,让进程不会因为断开连接而中断
结构
一个tmux可以有一堆session
每个sesion可开很多的window
每个window可以开很多pane
每个pane可以打开一个shell交互
如图所示:
基础命令
1.切分:
- 竖直切分:先按
ctrl+A
松开,输入%
,也就是按下shift+5
- 当按下
ctrl+d
,可以关闭tmux- 水平切分:先按
ctrl+A
,再按”
,即shift+'
同样的按下ctrl+d
取消- 对于切分来说,每一块都可以继续切分
2.退出:
ctrl+d
退出
当window没有pane时,自动退出
当session没有window时,自动退出
故一直ctrl+d下去会直接退出3.选择pane:
- 鼠标点击即可或输入
ctrl+a
,然后按方向键选择相邻的pane4.调整分割线:
- 选中并拖动即可或者
ctrl+a
同时(同时也不松开)按方向键5.全屏与取消全屏:
- 某个窗口全屏:选中并按下
ctrl+A
再按z
,同样取消按ctrl+A
再按z
6.挂起窗口:
ctrl+a
然后按d
,此为从session中退出- 输入
tmux a
或tmux attach
,再开启session窗口7.选择其他的session:
- 先进入tmux,然后在tmux里输入
ctrl+a
再按s
- 再session里的方向键操作:
→展开,→再按一次是展开所有pane ←按下是合上所有pane
←合上
↑↓选择session
如下所示:一共9个session,点开展开是一系列window,再展开window是pane8.session中创建window与选择window:
ctrl+a
再按c
:创建window
ctrl+a
再按w
:选择其他window也可以展开合上每个window注:ctrl+a+s与ctrl+a+w的区别:前者打开只展开session一级,展示session级中所有的window如图一,后者打开默认是w一级,展开window级中所有的pane,如图二
9.翻阅内容:↑滚轮向上
如果没有鼠标:ctrl+a再按Pageup向上翻,按PageUp向下翻
按PageUp也可以唤醒10.从tmux中复制文本:
- tmux中复制/粘贴文本的通用方式:
(1) 按下Ctrl + a
后松开手指,然后按[
(2) 用鼠标选中文本,被选中的文本会被自动复制到tmux的剪贴板
(3) 按下Ctrl + a
后松开手指,然后按]
,会将剪贴板中的内容粘贴到光标处
vim
作用
vim filename
如果有该文件则打开
没有则打开一个新的文件,命名为filename
模式
1.一般命令模式/默认模式:无法编写,输入命令,每一个命令对应一个字母,支持复制粘贴删除文本
2.编辑模式:在默认模式下按i
,进入编辑模式,按esc
退出
3.命令行模式:默认模式下按:/?
三个中任意一个进入命令行模式,命令行在最下面(个人建议用:)支持查找、替换、保存、退出、配置编辑器等
输入:wq
,保存并退出
基础命令
1.
i
:进入编辑模式2.
esc
:进入一般命令模式3.小键盘可以操作前后左右
注:在命令模式下:vim会卡在最后一个字符前面,编辑模式会卡在最后一个字符,不像win,移动到最后会直接换行
同样的,无论是什么模式,往左移动到开头就会停下4.光标的移动操作:
n<Space>
n是数字,光标会自动右移n个字符
一般命令模式下:0/home
将光标移动到本行开头
$/End
将光标移动到本行结尾
G
将光标移动到最后一行5.具体到哪一行的操作:
1).n/nG
:表示想去具体到哪一行(n是到某一行的下面,nG是直达)
2).gg
:到达第一行
3).n<Enter>
:向下跳n行6.查找与修改字符串的操作:
1)./word
:在命令行模式下,光标之下寻找第一个值为word的字符串
2).?word
:在光标之上第一个值为word的字符串
3).n
:重复前一个查找操作
4).N
:反向查找,也就是说前一个命令向前找,此命令下向后找
5).:n1,n2s/word1/word2/g
:n1,n2为数字,在第n1与n2之间找word1,并替换为word2
:1,$s/word1/word2/g
:将全文的word1换成word2
:1,$s/word1/word2/gc
:在每一次替换的时候都会让用户进行确认7.
:noh
关闭所查找的关键词的高亮8.选中与删除
v
:选中文本,按两下esc
取消
d
:删除选中文本(其实有剪切的特性)
dd
:删除整行9.复制与粘贴:
y
:复制(文本)
p
:在光标所处位置的下一行或下一个位置(通常当光标在两边时)粘贴
yy
:复制当前行10.撤销
u
:撤销
ctrl+r
:取消撤销
注:在windows里,ctrl+z撤销,ctrl+shift+z取消撤销11.
>
将选中的文本整体向右移动
<
将选中的文本整体向左移动12.保存与退出:
:w
保存
:w!
强制保存
一般命令模式下:按下ESC,按q退出
:q!
强制退出(不保存)
:wq
保存并退出
:wq!
强制保存退出13.行号的显示与隐藏:
:set nonu
隐藏行号
:set nu
显示行号14.paste模式:
为什么:当要粘贴过来的代码很长时,命令可能会失效,占用很大带宽,导致出现多重缩进
:set paste
取消代码缩进,设置成粘贴模式
:set nopaste
开启代码缩进15.其他与
gg
有关的
gg+d+G
删除全部内容
gg=G
将全文格式化16.vim的卡死处理
ctrl+q
:当vim
卡死时,可取消当前正在执行的命令17.异常处理:当前进程出现冲突时,会出现异常
解决方法:1).找到正在多个打开的文件程序,并关掉,保证同一个进程只有同一个文件能打开
2).问题:当一个进程不小心被其他进程杀掉,当再打开main.cpp
时,此时如果出现一个.swp
缓存文件时会报错
解决:在没有任何一个进程打开该文件时,将.swp
文件删掉即可
Lesson3-git命令分类整理
全局设置
git config --global user.name xxx
:设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email [email protected]
:设置全局邮箱地址,信息记录在~/.gitconfig文件中
git init
:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
常用命令
git add XX
:将XX文件添加到暂存区
git commit -m
: "给自己看的备注信息":将暂存区的内容提交到当前分支
git status
:查看仓库状态
git log
:查看当前分支的所有版本
git push -u
(第一次需要-u以后不需要) :将当前分支推送到远程仓库
git clone [email protected]:xxx/XXX.git
:将远程仓库XXX下载到当前目录下
git branch
:查看所有分支和当前所处分支
查看命令
git diff XX
:查看XX文件相对于暂存区修改了哪些内容
git status
:查看仓库状态
git log
:查看当前分支的所有版本
git log --pretty=oneline
:用一行来显示
git reflog
:查看HEAD指针的移动历史(包括被回滚的版本)
git branch
:查看所有分支和当前所处分支
git pull
:将远程仓库的当前分支与本地仓库的当前分支合并
删除命令
git rm --cached XX
:将文件从仓库索引目录中删掉,不希望管理这个文件
git restore --staged xx
:将xx从暂存区里移除
git checkout — XX或git restore XX
:将XX文件尚未加入暂存区的修改全部撤销
代码回滚
git reset --hard HEAD^ 或git reset --hard HEAD~
:将代码库回滚到上一个版本
git reset --hard HEAD^^
:往上回滚两次,以此类推
git reset --hard HEAD~100
:往上回滚100个版本
git reset --hard 版本号
:回滚到某一特定版本
远程仓库
git remote add origin [email protected]:xxx/XXX.git
:将本地仓库关联到远程仓库
git push -u (第一次需要-u以后不需要)
:将当前分支推送到远程仓库
git push origin branch_name
:将本地的某个分支推送到远程仓库
git clone [email protected]:xxx/XXX.git
:将远程仓库XXX下载到当前目录下
git push --set-upstream origin branch_name
:设置本地的branch_name分支对应远程仓库的branch_name分支
git push -d origin branch_name
:删除远程仓库的branch_name分支
git checkout -t 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 branch branch_name
:创建新分支
git branch
:查看所有分支和当前所处分支
git checkout -b branch_name
:创建并切换到branch_name这个分支
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 checkout -t 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分支对应