1.4 必备的shell命令和vi基础

大部分集成电路EDA工具都运行在UNIX或Linux系统上,在设计过程中经常需要对文件进行管理、查看或修改。在实际工作中,这些操作大都在终端窗口进行,尽量不使用图形界面,其中管理文件使用shell命令,查看或简单修改文件使用vi,掌握一些基本的shell命令和vi使用方法是必需的,它是集成电路设计人员必备的技能。

下面描述几个需要使用shell命令和vi的实际场景,同时为了便于理解,对每个场景所使用的命令进行简单解释。

场景1:新建文件夹,进入文件夹,启动软件

在开始一个新的设计之前,需要新建一个文件夹,然后进入这个文件夹,再启动软件,这样所有的设计数据都将自动存放在这个新建文件夹中。不要打开终端就启动软件,否则会把home目录弄得很乱,大量的中间数据文件混放在一起,会给后续的管理、使用和查找造成不便,这是第一次使用EDA软件的设计人员经常出现的问题。

正确的做法是先右键单击打开一个终端,得到如图1.2所示的终端窗口,在自己的home目录下(例如/home/cadence)新建一个文件夹(new_folder),再进入这个文件夹(new_folder),然后键入icfb&(5141版)或者virtuoso&(617版)来启动Cadence软件。下面分别解释每一行的含义。

第1行:cd命令可以回到自己的home目录,即回到/home/cadence,这里的cadence为用户名。

第2行:pwd可以显示当前的目录位置,第3行为pwd命令返回的当前路径。

第4行:mkdir可以新建一个文件夹,后面跟着文件夹名,本例为new_folder。

第5行:cd new_folder可以进入到new_folder文件夹中。

第6行:pwd用于确认所在位置。

第8行:icfb&(或virtuoso&)用于启动Cadence软件,其中&是后台符,带着后台符启动软件,软件运行后这个终端窗口仍然能用。

图1.2 新建文件夹启动Cadence的正确做法

场景2:终止卡住不动的进程

有时候会由于种种原因导致软件卡住不动,鼠标也无法单击,此时可在终端中输入ps命令,列出当前各个进程的编号列表,然后使用kill命令终止这个卡住的进程。如图1.3所示,输入ps命令得到进程列表,其中icfb进程的编号为6008,输入kill 6008后,可以强行关闭Cadence。

图1.3 使用kill命令终止进程

场景3:修改文件权限

EDA软件会在运行过程中锁定某些文件夹或文件的权限,这些文件夹或文件用于保存中间数据、设计结果或者其他信息,防止它们被其他软件或用户修改或删除。软件正常退出时这些锁定的权限会释放,而异常退出时,例如场景2中的使用kill命令终止,则软件没有机会释放权限,会造成再次运行时出现权限不够的问题,导致软件无法正常运行。

想解决这类问题需要使用修改文件夹或文件权限的命令。如图1.4所示的ls-al命令可列出当前文件夹中的各文件夹和文件的权限内容,权限用rwx表示。每行一共有三组rwx,从左边数第一组代表文件拥有者的权限,第二组代表本组人的权限,第三组代表所有可以登录到本系统的其他人的权限。rwx中r代表可读,w代表可写,x代表可执行,最左边rwx前面的d代表文件夹。例如,图中abc.txt的权限为“-r-xr-xr-x”,由于它第一个符号是“-”而不是“d”,因此它不是一个文件夹而是一个文件,第一组“r-x”表示文件拥有者可对此文件进行读和执行,第二组和第三组“r-x”分别表示本组人和所有可以登录到本系统的其他人也可以读和执行。

图1.4 修改文件权限

chmod 755 abc.txt可以修改abc.txt的权限为“-rwxr-xr-x”,这样文件拥有者就增加了对该文件的写权限,而本组人和可登录到本系统的其他人的权限不变。上述命令中755三个数字分别对应文件拥有者、本组人和可登录系统的其他人的权限,7用二进制表示为111,5用二进制表示为101,可以看出二进制的1代表有此项权限,0代表无此项权限,理解了这个数字的含义,用户可以自由设置文件夹或文件的权限。

通过上面的场景可以看出,掌握一定的shell命令非常重要,但由于shell命令非常多,而且选项也十分复杂,初学者很难抓住重点。表1.1列出了10条必备的shell命令,表1.2列出了4个最常用的shell操作技巧,这些都是必须要掌握的。

表1.1 常用的shell命令

(续)

表1.2 常用的shell操作小技巧

shell命令的学习要在实践中逐步积累,先记住最常用的命令,再逐步增加,如果不分主次地死记硬背,过一段时间就全忘了,到头来还是等于0。初学者的正确做法是,首先要熟练掌握和使用表1.1和表1.2中所列出的内容,然后在必要时逐条增加。

以上是关于shell命令的使用场景,下面看看vi文本编辑器的使用场景。

场景4:用vi查看或修改文本文件

vi是终端窗口自带的文本编辑器,经常用来查看或修改文本文件。vi编辑器有两种工作模式,即插入(insert)模式和命令(command)模式,使用时经常需要反复切换,虽然不太方便,但仍然被大量使用,必须认真练习。

例如,图1.5中的第一行ls-al是文件列表命令,通过文件列表发现其中cds.lib是个文本文件(记录Cadence中各个library的存放路径);使用最后一行的vi命令可以打开cds.lib文件,打开后的效果如图1.6所示。

图1.5 用vi打开文本文件

图1.6 cds.lib文件的内容

刚打开的vi处于command模式,只能做一些移动光标、查找字符、复制或删除之类的操作,此时单击鼠标无效,需要用按键进行操作。例如,按X键(x)可删除光标处的字符,按D键两次(dd)可删除光标所在行等。当需要退出vi时,先按一下Esc键,确保vi处于command模式,然后输入:q!(冒号+q+!),强行退出vi,不保存任何修改。

在command模式下按I键或A键,就可以进入insert模式,在窗口的左下方会出现insert。在insert模式下可以编辑文件,所敲击的任何字符都会显示在文本中。完成编辑后按Esc键可重新返回到command模式,按:WQ键可存盘退出vi,如果放弃修改则可按:Q!键强行退出。表1.3是部分常用的vi命令,它们非常实用,可以满足一般的应用场景需求。

表1.3 vi实用命令表(command模式下)