Linux命令
Linux采用的是命令行方式操作,与Windows图形化鼠标操作不同。
1.文件和目录
//目录操作
$ ls //查看里面有什么东西(浏览目录内容)
$ tree -L 2 //查看当前的前两层目录树
$ tree /home //查看home目录下的子目录树
$ cd / //切换到系统根目录 cd (change directory)
$ cd ~ //切换到当前用户目录
$ pwd //查看当前路径
$ cd .. //切换到上一层目录
$ mkdir hello //创建目录
$ rm hello -rf //删除目录(文件夹)
$ cd hello //切换到当前目录下的hello子目录
$ ln -s /mnt/hgfs ./ //建立软链接(类似快捷方式)
//文件操作
$ touch main.c //创建文件
$ mv main.c hello.c //更改文件名
$ gedit main.c //用图形编辑器编辑
$ vi main.c //编辑文件
$ cat main.c //查看文件内容
$ cp main.c aa //拷贝文件
$ rm main.c //删除文件
//压缩解压
$ tar -zcvf /tmp/etc.tar.gz /etc //压缩
$ tar -zxvf /tmp/etc.tar.gz //解压
2.系统操作
//权限设置
$ sudo su //切换到root用户
$ su ivan //切换回普通的ivan用户
$ chmod 777 main.c //设置权限为所有
$ passwd //修改当前用户的密码(会有输入更长密码的限制)
$ sudo passwd yhai //用root用户权限去修改 yhai用户的密码,就没有限制了,可以设为1
//安装新命令
$ sudo apt-get install tree //安装命令
$ sudo apt-get remove tree //卸载命令
//搜索
$ find . -name hello.c //在当前目录下搜索文件(hello.c)
//磁盘空间
$ df -h //查看各磁盘空间使用情况
$ du -h yhai/ //查看文件夹占多大空间
3.VI命令
VI编辑器是嵌入式御用编辑器,有三种模式,分别是命令模式、输入模式和底行模式。
命令模式(默认启动进入)
//切换到输入模式
i //进入插入状态(按下i ,并不会输入一个字符,而被当作一个命令insert)
//再输入字符,会插入在光标前
a //进入追加状态(再输入字符,会追加在光标后)
o //进入新一行输入状态(再输入字符,会在新一行输入)
//移动光标
k 上
h 前 l 后
j 下
r //取代光标处的字符
x //删除当前光标所在处的字符。
ctrl + f //下翻页
ctrl + b //上翻页
gg //跳到第一行
shift + g //跳到最后一行
dd //删除一整行
//3dd: 删除3行
yy //复制一行
v + h/j/k/l //选取字符串
y //复制
p //粘贴
u //复原前一个动作
//再输入 Ctrl+r : 回退到修改前状态j
: //切换到底行模式(即可在最底一行输入命令)
输入模式
Esc //切换到命令模式
底行模式
:w //写入
:q //退出
:q! //不保存退出
:set nu //显示行号
:set nu! //隐藏行号
:30 //光标跳到第30行
/word //搜索字符串 word
// n: 查找下一个 shift + n: 查找上一个
Backspace //取消底行字符后,自动切换到命令模式
4.源码跟踪:vim + cscope + ctags
高效跟踪源码,是程序员 快速查bug 写程序的利器
vim:是vi的升级版,加了一些高亮显示和改进,如u可以无限撤销。
ctags cscope:帮助多个源文件间建立符号索引库(如跳到函数定义,查找函数的文件位置)
安装
$ sudo apt-get install vim ctags cscope
$ cd ~/linux-4.9.140 //进入源码目录
$ ctags -R //生成符号关联
$ cscope -Rbkq //生成索引库
vim配置
"-------------------------------------------------------------------------------
" 基本设置
"-------------------------------------------------------------------------------
" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
finish
endif
"启用Vim的特性,而不是Vi的(必须放到配置的最前边)
set nocompatible
" 设置编码
set encoding=utf-8
set fenc=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb2312,gb18030,big5
"显示行号
set number
"设置默认打开窗口大小
"set lines=70 columns=100
"设置窗口透明度
"set transparency=10
"设置背景色
"set bg=dark
"用 koehler 调色板
colorscheme koehler
"隐藏工具栏和滑动条
set guioptions=aAce
"设置标签栏
"最多30个标签
set tabpagemax=30
"显示标签栏
set showtabline=2
"设定文件浏览器目录为当前目录
"set bsdir=buffer
"set autochdir
"保存100条命令历史记录
set history=100
"总是在窗口右下角显示光标的位置
set ruler
"在Vim窗口右下角显示未完成的命令
set showcmd
" 启用鼠标
if has('mouse')
set mouse=a
endif
"设置语法高亮
if &t_Co > 2 || has("gui_running")
syntax on
endif
"-------------------------------------------------------------------------------
" 文本操作设置
"-------------------------------------------------------------------------------
"设置字体
set gfn=Courier:h15
"设置自动缩进
"设置智能缩进
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set smarttab
"设置Tab键跟行尾符显示出来
set list lcs=tab:>-,trail:-
"设置自动换行
set wrap
"设置Insert模式和Normal模式下Left和Right箭头键左右移动可以超出当前行
set whichwrap=b,s,<,>,[,]
"设置光标移动到屏幕之外时,自动向右滚动10个字符
set sidescroll=10
"设置使~命令成为操作符命令,从而使~命令可以跟光标移动命令组合使用
set tildeop
"在Insert模式下,设置Backspace键如何删除光标前边的字符。这里三个值分别表示空白字符,分行符和插入模式之前的字符。
set backspace=indent,eol,start
"定义键映射,不使用Q命令启动Ex模式,令Q命令完成gq命令的功能---即文本格式化。
map Q gq
" CTRL-U 在Insert模式下可以删除当前光标所在行所在列之前的所有字符. Insert模式下,在Enter换行之后,可以立即使用CTRL-U命令删除换行符。
inoremap <C-U> <C-G>u<C-U>
"使 "p" 命令在Visual模式下用拷贝的字符覆盖被选中的字符。
vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
"-------------------------------------------------------------------------------
" 搜索设置
"-------------------------------------------------------------------------------
"打开搜索高亮
set hlsearch
"忽略大小写
set ignorecase
"在查找时输入字符过程中就高亮显示匹配点。然后回车跳到该匹配点。
set incsearch
"设置查找到文件尾部后折返开头或查找到开头后折返尾部。
set wrapscan
"put ctrl+shift+- s for find string
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"auto add cscope.out to vim 如:cs f s 命令不能用
cs add cscope.out
set csto:0
set cscopetag
set nocsverb
set csverb
"添加内核目录,让你在任意文件下搜索时,都能跳到内核信息
"cs add /home/jetbot/kernel/cscope.out /home/jetbot/kernel/
"set tags:./tags,tags,/home/jetbot/kernel/tags
"-------------------------------------------------------------------------------
" 文件设置
"-------------------------------------------------------------------------------
"设置当Vim覆盖一个文件的时候保持一个备份文件,但vms除外(vms会自动备份。备份文件的名称是在原来的文件名上加上 "~" 字符
if has("vms")
set nobackup
else
set backup
endif
"Enter换行时总是使用与前一行的缩进等自动缩进。
set autoindent
"设置智能缩进
set smartindent
"编辑一个文件时,你所编辑的内容没保存的情况下,可以把现在的文件内容与编辑之前的文件内容进行对比,不同的内容将高亮显示
if !exists(":DiffOrig")
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
\ | wincmd p | diffthis
endif
常用命令
Ctrl + ] //调到定义处
Ctrl + o //返回上一次位置
//Ctrl + i 再返回
g f //跳到光标停留的include的头文件里
d w //删除个字符串
u //可无限撤销
:cs f f driver.c //搜索 driver.c 文件
g d //选中当前光标处的字符串
//再 n 查找下一个
ctrl shift - s //查找光标处的字符串
// j:下一条 k:上一条 f:下一页 b:上一页 shift+g: 到末尾
:cs f s attach //全局 搜索字符串 attach
Ctrl+w v // 垂直分割窗口
// Ctrl+w w 可在窗口间切换
ctrl + 变大字体
:e . //编辑当前目录
vim配置问题
百度网盘下载.vimrc文件 拖拉到虚拟机中
链接:https://pan.baidu.com/s/10D0WvgpsHV5wBjLtckKBeA
提取码:21ai
总结
点赞评论收藏,这三者任选其一就行,感谢您的资瓷!