嵌入式基础准备 | Linux命令(包括 文件、目录和压缩、系统操作、vi、vim、ctags、cscope)

1、使用 ctrl+alt+t 打开命令行

2、按tab键补全文件名

3、ctrl+c 停止正在进行的过程

4、向上键向下键翻历史的命令(只有在当前用户才有效,比如切换根用户之后就无了)

5、根用户创建的文件 其他用户只有查看内容的权限,不能修改

6、具体命令:Linux vi/vim 使用

1、文件、目录和压缩

1.1 目录操作

c 复制代码
$ ls         //查看里面有什么东西(浏览目录内容)  默认开始进入主目录
$ tree      // 查看当前目录(直接出树状结构)(安装命令(软件) sudo apt-get install tree,sudo表示要用根用户(当前普通用户))
$ tree -L 2  //查看当前的前两层目录树
$ tree /home //查看home目录下的子目录树 
$ cd /    //切换到系统根目录(/)   cd (change directory)
$ cd ~       //切换到当前用户目录
$ pwd        //查看当前路径
$ cd ..    //切换到上一层目录(两个点 )
$ mkdir  hello  //创建目录(文件夹)
$ rm -rf hello/    //删除目录(文件夹hello)
$ cd hello      //切换到当前目录下的hello子目录
$ ln -s /mnt/hgfs  ./  //在主目录建立软链接(类似快捷方式,避免每次输入一大堆)

1.2 文件操作

c 复制代码
$ touch main.c //创建文件
$ mv  main.c hello.c //更改文件名(改成hello.c)
$ gedit main.c  //用图形编辑器编辑
$ vi  main.c   //编辑文件,要编辑要敲i进入编辑模式,按esc退出编辑模式,:wq退出
$ gedit  main.c   // 以图形化方式 编辑文件
$ cat main.c   //查看文件内容
$ cp main.c aa //拷贝文件(把main.c拷贝,新文件叫aa)
$ rm main.c    //删除文件(后面跟的名字默认是 文件)

1.3 压缩解压

c 复制代码
$ tar -zcvf music.tar.gz music/ //压缩(很多源码是tar.xz格式)
$ tar -xvf music.tar.gz        //解压

2、系统操作

2.1 权限设置

c 复制代码
$ sudo  su    //切换到root用户(比如要在根目录下操作)
$ su ivan     //切换回普通的ivan用户
$ chmod 777 main.c //设置权限为777(即所有(所有用户可改),777是最高的),只有根用户有这个权限可以改权限(使用chmod)
$ passwd  //修改当前用户的密码(会有输入更长密码的限制)
$ sudo passwd yhai  //用root用户权限去修改 yhai用户的密码,就没有限制了,可以设为1

2.2 安装新命令

c 复制代码
$ sudo apt-get install tree //安装命令
$ sudo apt-get remove tree  //卸载命令

2.3 搜索

c 复制代码
$ find . -name hello.c  //在当前目录(.)下搜索文件(hello.c)
$ man find // 查看find的手册

2.4 磁盘空间

c 复制代码
$ df -h  //查看各磁盘空间(一般以dev开始的)使用情况
$ du -h music/  //查看music文件夹占多大空间

3、vi命令

嵌入式御用编辑器,有三种模式:命令模式,输入模式,底行模式

通过命令终端(串口、网线)远程访问某个设备

3.1 命令模式(默认启动时进入)

此状态下敲击键盘动作会被Vim 识别为命令,而非输入字符

c 复制代码
//3个都可以切换到输入模式
i  //进入插入状态(按下i ,并不会输入一个字符,而被当作一个命令insert)
   //再输入字符,会插入在光标前
enter // 光标在前把当前行下移一行,在后在当前行下面新建一行光标移至新的行
a  //进入追加状态(再输入字符,会追加在光标后),光标会移至当前位置之后(如果要在后面加一空白行,需要用a把光标移至最后一个字符之后)
o  //进入新一行输入状态(再输入字符,会在新一行输入)

注意先按esc退出输入模式,回到命令模式

c 复制代码
//移动光标
     k 上 
h 前       l 后 
     j 下
     
r  //取代光标处的字符
x  //删除当前光标所在处的字符


ctrl + f //下翻页
ctrl + b //上翻页 
gg  //跳到第一行
shift + g //跳到最后一行

dd //删除一整行
   //3dd: 删除3行(6yy以此类推)
yy //复制一行
v + h/j/k/l  //选取字符串,进行整体操作(同时按)
d // 删除选中的东西
y //复制
p  //粘贴 

u  //复原前一个动作
   //再输入 Ctrl+r : 回退到修改前状态j

: //切换到底行模式(即可在最底一行输入命令) 

3.2 输入模式

enter, tab, 空格 都是正常的

3.3 底行模式

先进入命令状态,都是以冒号开始,实际上也是命令模式

c 复制代码
:w  //写入(保存) 
:q  //退出 
:q! //不保存退出
:set nu //显示行号    
:set nu! //隐藏行号   
:30   //光标跳到第30行
/word  //搜索字符串 word
       // n: 查找下一个  shift + n: 查找上一个  
Backspace //取消底行字符后,自动切换到命令模式

4、源码跟踪(vim、ctags、cscope)

vim:是vi的升级版,加了一些高亮显示和改进,如u可以无限撤销。

ctags cscope:帮助多个源文件间建立符号索引库(如跳到函数定义,查找函数的文件位置)

4.1 安装 vim,ctags,cscope

c 复制代码
$ sudo apt-get install vim  universal-ctags cscope
$ cd ~/linux-4.9.140  //进入源码目录   
$ ctags   -R    //生成符号关联  
$ cscope -Rbkq  //生成索引库

4.2 编译文件

c 复制代码
$ vi Makefile
$ vim .

4.3 vim配置

c 复制代码
$ vim ~/.vimrc   // 添加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  

4.4 常用命令

进入目录 enter,使用之前介绍的 /word搜索

c 复制代码
Ctrl + ]  //调到定义处
Ctrl + o  //返回上一次位置
          //Ctrl + i  再返回(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  .    //编辑当前目录,回到目录
shift+g+数字 // 跳到对应数字行的文件并进去
:90 // 在文件中直接跳到90行
g+d // 同时按,且选中字符串,再敲n就可以跳了(当前文件中找)
v选择 用j光标往下搜
相关推荐
日记跟新中1 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
码农君莫笑1 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
BUG 4041 小时前
Linux——Shell
linux·运维·服务器
大霞上仙2 小时前
Linux 多命令执行
linux·运维·服务器
晨欣2 小时前
Kibana:LINUX_X86_64 和 DEB_X86_64两种可选下载方式的区别
linux·运维·服务器
AI青年志2 小时前
【服务器】linux服务器管理员查看用户使用内存情况
linux·运维·服务器
dessler3 小时前
Docker-run命令详细讲解
linux·运维·后端·docker
PyAIGCMaster3 小时前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼3 小时前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
icy、泡芙4 小时前
T527-----音频调试
linux·驱动开发·音视频