• 【数字IC验证快速入门】4、熟悉数字IC验证中常用的Linux基本操作


    导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思清华紫光联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。

    一、Linux基础

    1.1、Linux的特点

    1.1.1、多任务系统

    • 在Linux系统汇总可以同时执行多个任务

    1.1.2、多用户系统

    • 对多用户的支持使得多个用户能在同一时间登陆和使用系统,多个终端和键盘可以同时与同一台计算机建立连接。
    • 一个用户能够在不同终端多次登陆同一个系统
    • 无论从开发小组还是某个使用者角度看,都有一个很大优越性:一个工作组的成员能同时访问同一些数据。

    1.2、Shell简介

    shell脚本能提高用户操作和管理员进行系统管理的效率,一般操作步骤:

    • 1、编辑器编写脚本程序
    • 2、shell做解释程序,非交互地执行脚本,两种执行方式:
      • 用shell命令执行脚本文件:source xxx
      • 给脚本文件添加执行权限,用./ xxx执行命令

    1.3、Shell命令示例

    • whoami:查看用户自己当前使用的账户名
    • who:查看当前有哪些用户登录到系统中
    • w:查看有哪些用户登录在线,同时显示用户当前的工作
    • clear:清屏命令。

    1.4、Linux树型目录结构

    • Linux系统以文件目录的方式来组织和管理系统中的所有文件。
    • 所谓文件目录就是将所有文件的说明信息采用树型结构组织起来,即常说的目录。
    • 系统建立每一个目录时,都会自动设定两个目录文件:. - 当前目录; .. - 父目录

    1.4.1、根目录

    • Linux文件系统的树型层次以根目录/为起点,所有其他的目录都由根目录派生二来用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问哪里的文件。
    • 根目录(系统目录)是Linux系统中的特殊目录。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中。

    1.5、Linux文件系统

    1.5.1、绝对路径

    • 又称全路径名,指以根目录打头的路径名。绝对路径名确定文件位置和工作目录无关

    1.5.2、相对路径

    • 由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。
    • 显示当前目录:pwd(Present Work Directory)
    • 复制当前目录下的代码到用户目录:cp -rf ./asic_flow ~
    • 进入当前工作目录:cd [目录名](Change Directory)
      • cd ~ : 返回home目录
      • cd .. : 返回上一级目录

    1.6、常用基本命令

    1.6.1、创建目录

    • mkdir <-m模式> [目录](Make Directory)
      • 选项 <-m模式> :建立目录时,设置目录的权限。(-m用的比较少)
      • 尖括号里的是可选的,方括号是必须有的!
        • eg:mkdir tmp
      • 需要帮助mkdir --help

    1.6.2、链接文件

    • ln <选项> [目标] [链接名](Link )
    • ln <选项> [目标] [目录]
    • 作用:给系统中已有的某个文件制定另一个可用于访问它的名称
    • 软链接:ln -s source des
    • 通过将文件夹1和2关联,那么访问文件夹1就可以知道文件夹2里面的东西,链接的文件夹是不占内存空间的,能看到,但是不能更改我的东西

    1.6.3、文件显示(初级)

    • ls <选项> [文件目录列表]:(List)
    • 选项: -a(all)-l(long)-t(time)-s(size)-R(Recursive)(注意该选项是大写),--version--help
      • -a所有文件,-l显示文件格式,-t和-s用的少,-R展开子级目录
    • eg:ls --help | more:分屏显示
      • |:表示管道符,在一个命令行同时执行左右两个命令。
      • more:分屏显示
        • 空格可以显示下一页
    • eg:ls -rta /etc递归显示目录/etc下所有的文件及目录,并按文件的最新修改时间排序显示。
    • 常用的命令是:ls -al,简写命令为:ll

    1.6.4、- rw- r-- r--释义

    • 第一位:文件类型,每一类用一个字符来表示:
      • -:常规文件
      • d:目录文件
      • l:链接文件
      • p:管道设备文件
      • b:块特殊设备文件
      • c:字符特殊设备文件
    • 其余9位:文件权限由三个字符串组成:文件所有者u,user)的权限、组中其他人g,group)的权限、系统中其他人o,other)的权限。
      • 每个字符串又由三个字符组成,依次表示对文件读(r),写(w)、执行(x)权限

    1.6.5、改变文件/目录权限

    chmod <选项> [文件和目录列表]
    
      
    • 1
    • 1
    • 1)使用字符串设置权限
      • chmod ugo+r xxx 等价于 chmod a+r xxx+表示增加属性,a代表all)
      • chmod ug+w,o-w xxx yyy
      • chmod -R a+r *
    • 2)使用八进制设置权限
      • 三个八进制数字分别表示u/g/o的权限
      • r(4)、写w(2)、执行x(1)
      • eg:chmod 777 xxx 等价于 chmod a+rwx xxx
      • eg:chmod 772 xxx 等价于 chmod ug+rwx,o+w xxx

    1.6.6、文件显示(高级)

    more <选项> [文件]
    
      
    • 1
    • 1
    • 显示问价那内容,每次显示一屏文本。退出按Q
    • 选项:
      • -num:指定一个整数,表示一屏显示多少行
      • +num:从行号num开始显示
      • -c:不滚屏,在显示下一屏之前先清屏
    • eg:more xxx
    less <选项> [文件]
    
      
    • 1
    • 1
    • 分屏显示文件的内容,按PageUpPageDown翻页,退出按Q。More只能通过空格向下翻页!
    • eg:less xxx
    head <选项> [文件]
    
      
    • 1
    • 1
    • 显示指定文件的开头若干行,显示行数的默认值为10。
    • eg:head xxx
    • 选项:
      • -n:显示前面n行,eg:head -5 xxx
      • -q:不显示文件的标题,eg:head -q xxx
      • -v:时钟显示文件的标题,eg:head -v xxx
      • -c n:显示前面的n个字节,eg:head -c 10 xxx
    tail <选项> [文件]
    
      
    • 1
    • 1
    • 显示指定文件的结尾若干行,显示行数的默认值为10。
    cat <选项> [文件]
    
      
    • 1
    • 1
    • 链接文件并打印(显示)到标注输出设备(屏幕)上
    • ctrl+s:停止滚屏
    • ctrl+q:恢复滚屏
    • ctrl+c:中断命令
    选项说明
    -b计算所有非空输出行,开始为1
    -e在每行末尾显示$符号
    -n计算所有输出行,开始为1
    -s将相连的多个空行用单一空行代替

    1.6.7、文件(目录)复制

    cp <选项> [源文件 ] [目标文件]
    cp <选项> [源文件目录] [目标目录]
    
      
    • 1
    • 2
    • 1
    • 2
    选项说明
    -i提示是否覆盖已存在的目标文件(默认有)
    -p保持原先文件的所有者,组权限和时间标志(默认有)
    -f强制覆盖,不加提示
    -r递归拷贝目录,将所有非目录文件当普通文件拷贝
    -v详细,显示文件的复制速度
    -a拷贝文件夹

    1.6.8、快速复制粘贴(重要,可提高工作效率)

    • 鼠标左键拖曳选择需要复制的内容
    • 鼠标中键进行粘贴

    1.6.9、创建文件

    touch  [文件名]
    
      
    • 1
    • 1
    • eg:touch new.txt

    1.6.10、删除文件

    rm <选项> [文件列表] 
    
      
    • 1
    • 1
    选项说明
    -r递归将目录以下文件逐层删除
    -i删除前询问确认
    -f指定强行删除无需确认,即使原文件属性设为只读
    -v详细显示文件的删除速度

    1.6.11、移动文件

    mv <-f | -i> [文件1] [文件2]
    mv <-f | -i> [目录1] [目录2]
    mv <-f | -i> [文件列表] [目录]
    
      
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3
    选项说明
    -f若目标文件已存在,不提示直接覆盖已有文件
    -i若目标文件有同名,则先询问是否覆盖已有文件
    -v详细显示文件的移动速度

    1.6.12、文件内容统计

    wc <选项> 文件列表
    
      
    • 1
    • 1
    • 统计指定文件中的字节数、字数、行数。
    选项说明
    -c统计字节数
    -l统计行数
    -w统计字数

    1.6.13、查找文件

    find 目录 -name 文件名
    
      
    • 1
    • 1
    • eg:find ./ -name error:在当前目录下查找名为error的文件。
    • eg:find ./ -name "*.v":在当前目录下查找所有的.v文件
    • eg:find ./ -name *test*:在当前目录下查找名字中间有test字样的文件

    1.6.14、查找文件内容

    grep <选项> [匹配字符串] [文件列表]
    
      
    • 1
    • 1
    • eg:grep error *:所有文件内容中含有error字样的文件
    • eg:grep error * -r-r表示递归查找
    • eg:grep error * -i-i表示不区分大小写(ignore)
    • eg:grep "err*" **表示通配符(通配符只能在后面加!)

    grep只能查找固定的字符egrep = grep -e (extend)可以查找正则表达式

    查找文件里面的内容 -r会对当前目录下的文件夹里面的内容进行查找,查找的时间也稍微长一点,不加只会查找当前目录下的文件,也可以使用通配符,还可以指定文件,但是就不用加通配符*了。

    1.6.15、排序

    sort <选项> [文件列表]
    
      
    • 1
    • 1
    • 默认按照第一个数字大小进行排列
    • -n 就是按照数字大小的方式排列

    1.6.16、比较文件内容

    diff <参数> [源文件1] [目标文件2]
    
      
    • 1
    • 1
    选项说明
    -b忽略空格造成的不同
    -q只报告什么地方不同,不报告具体的不同信息
    -i忽略大小写的变化
    -r在比较目录时比较所有子目录
    -s两个文件相同时才报告
    -v在标准输出上输出版本信息并退出
    -y结果并列放置
    • eg:diff file1 file2 -y
    • eg:diff -r dir1 dir2 -y

    注:用gvimdiff更方便!

    1.6.17、重定向

    重定向:将文件的标准输出重新定向输出到文件,或将数据文件作为另一程序的标准输入内容。

    • 1)输出重定向(重要)
      • ls -l > file.txt:将内容输出到文件file.txt
      • ls -l >> file.txt:将内容输出到已有文件后面
    • 2)输入重定向
      • grep keyword < file.txt 直接从file.txt里面找keyword ,等价于grep keyword file.txt。用的比较少,输出用的多。

    1.6.18、管道

    管道符|,通常放在两个命令之间,将前一个命令的输出作为下一个命令的输入。

    Linux通常是一个命令,但是想在原来的基础上在运行一个,就需要管道符。管道符核心:上一个命令的结果就是下一个命令的输入。

    • eg:cat sample.txt | grep "High" | wc -l:显示sample.txt 这个文件,显示内容中搜索High,最后再统计一下High行有多少!

    1.6.19、文件/文件夹打包、压缩和解压缩

    tar文件打包:tar <主选项> <辅选项> [存档文件名] [文件或目录列表]

    • 常用选项:c(create,打包)/z(使用gzip压缩)/v(verbose,详细的)/f(file,文件夹)/x(extract,解包)/j(使用bzip2压缩)

    • 1)将/home目录下所有文件和目录存档,存档名为archive.tartar -cvf archive.tar /home

    • 2)解包存档文件archive.tartar -xvf archive.tar

    • 3)不解包存档文件archive.tar,只查看内容:tar -tvf archive.tar

    • 4)将/home目录下所有文件和目录存档,并对存档文件压缩,压缩后文件名archive.tar.gztar -czvf archive.tar.gz /home

    • 5)解包以及解压缩archive.tar.gztar -xzvf archive.tar.gz

    1.6.20、关闭应用程序

    kill <选项> [应用程序PID]
    
      
    • 1
    • 1
    选项说明
    -15通知应用程序关闭(不加选项也是默认-15
    -9强制关闭应用程序

    1.7、常用系统命令

    1.7.1、命令别名(快捷键)

    • 为了提高效率,给复杂操作起别名。(注意,等号前后不能有空格)
      • eg:alias ll='ls -al'
      • eg:alias sc='source ~/.bashrc'
    • 使用alias -p查看现有别名设置

    1.7.2、查看进程

    • 查看自己使用的进程:ps -u
    • 查看大家使用的进程:ps -ef
    • 查看实时进程top(使用这个较多)
      • 实时进程top比较占资源,及时q退出

    1.7.3、查看控件占用

    • 查看自己空间占用:du -sh(disk usage)
    • 查看自己各目录的占用情况:du -hdu -h --max-depth=1(当前目录下的第一级目录)

    1.7.4、联机帮助

    • 1)显示命令的使用方法
      • man <选项> [命令名]
    • 2)help命令:查看所有Shell命令的用法
      • eg:查看cd命令的使用方法:cd --help
    • 3)whereis命令:寻找一个命令所在的位置
      • whereis <选项> [命令名]
    • 4)which命令:输出命令的全路径到屏幕上 (更常用

    1.7.5、一些高级用法

    • 1)history 可查看先前的指令
    • 2)向上方向键 可用来执行最近的指令
    • 3); 来间隔几个指令,可以让指令顺序执行(管道符号异曲同工)
    • 4)tab 键可以直接补齐系统中有的指令
    • 5)利用管道符可以实现多个指令的组合使用:
      • ps -ef | grep vsim
    • 6)ctrl+z:挂起
    • 7)fg:恢复
    • 8)ctrl+c:终止

    参考

  • 相关阅读:
    【Java基础】方法
    STM32智能门禁系统教程
    计算机毕业设计(附源码)python中学线上作业评判系统
    AOP基础知识了解
    报表生成器FastReport .Net用户指南:关于脚本(上)
    Springboot 使用 Mybatis Plus LambdaQueryWrapper 构造器和注解自定义SQL
    Java使用volatile关键字进行同步,结果不对
    【C语言数据结构】二叉树及其遍历算法
    探索数据结构:双向链表的灵活优势
    数字图像处理(九)双边滤波
  • 原文地址:https://blog.csdn.net/luoganttcc/article/details/125624726