和Windows一样,Linux的各种发行版也一样实现了图形界面,但如果想随心所欲地使用Linux,还需要了解和学习Linux的各种命令。
首先需要打开一个终端,终端是输入命令并查看命令执行结果的地方。
在Ubuntu系统上打开终端的方法是按组合键Ctrl+Alt+T。如果这个方法不行的话,就先按Alt键,然后在光标提示处输入terminal,按回车键后就会看到终端被打开了,如图2-1所示。
图2-1 终端界面
打开终端时出现的提示信息为author@asus-K43SJ:~$。其中author表示当前登录系统的用户名,asus-K43SJ是计算机名,图2-1中显示的是默认的计算机名字。冒号后面的~表示工作在当前用户的家目录之下(关于家目录后续内容会进行讲解),$表示当前用户是普通用户,不是超级用户。
cd命令的全称是change directory,就是改变目录的意思。在改变目录之前首先需要了解当前的目录,如图2-1中当前用户的家目录,可以使用命令pwd来查看,如图2-2所示。
图2-2 pwd命令
从图2-2可以看出当前用户的家目录为/home/author。目录的更改可使用cd命令,如图2-3所示为将任一目录更改到根目录下。
图2-3 cd/命令
使用pwd命令可查看当前的工作目录,之后使用cd/切换到根目录下。需要注意的是,根目录使用斜杠符号/来表示。最后再使用pwd查看当前的工作目录,发现目录已经切换到根目录之下了,同时冒号后面的/也暗示当前的工作目录是要根目录。
如果对已经切换的目录进行恢复操作需要使用命令cd-,如图2-4所示。
图2-4 cd-命令
如果需要将目录切换到包含当前目录的上层目录,则使用命令“cd..”,“..”表示当前工作目录的上层目录。比如当前目录为/home/author,要切换到/home目录下,操作如图2-5所示。
图2-5 cd..命令
需要注意的是,根目录/是系统的最顶层目录。如果在根目录下执行“cd..”命令的话,当前工作目录不会发生改变,如图2-6所示。
图2-6 在根目录下执行cd..命令
这个命令是显示目录内容。在终端中输入命令ls,显示的结果如图2-7所示。
图2-7 ls命令
说明在当前用户的家目录之下只有一个叫作example.desktop的文件。切换到根目录之下,再使用ls命令查看一下,如图2-8所示。
图2-8 ls命令
图2-8表示根目录下有许多的文件和子目录,而且颜色各不相同,每种颜色代表不同的文件种类,通过ls-l命令可以查看不同颜色代表文件种类的说明,如图2-9所示。
图2-9 ls-l命令
图2-9 (续)
第一行输出124表示该目录的大小为124KB。后面4行根据第一个字母d可判断出所列文件为目录类型;接下来两行由“-”判断出所列文件为普通的文件;以l开头的行表示该文件是一个符号链接,类似于Windows中的快捷方式。
touch命令用于新建一个空的文件,如图2-10所示为使用touch命令创建一个名为myfile的文件。
图2-10 touch命令
图2-11 cat命令
新建的文件myfile是一个空文件,没有添加内容。可以使用cat命令来查看文件中的内容,如图2-11所示。
命令结果显示文件myfile的内容为空。向文件中写入内容或者编辑文件,需要借助文本编辑器,例如vim、gedit等。
mkdir命令用于新建一个目录,如图2-12所示为新建了一个名为mydir的目录。
图2-12 mkdir命令
可以改变路径到新建的目录mydir下,继续执行新建文件和子目录等操作。
rm命令用于删除指定的文件,例如删除上节新建的myfile文件,使用的命令如图2-13所示。
图2-13 rm命令
可以看到经过rm命令之后,myfile文件已经被删除。rm-r命令用来删除目录,如图2-14所示为删除上节所创建的目录mydir。
图2-14 rm-r命令
rmdir是专门执行删除目录操作的命令,如图2-15所示为先新建一个目录,然后使用rmdir命令删除它。
图2-15 rmdir命令
cp命令用于将一个已经存在的文件中的内容复制到另一个文件中,或者复制一个目录。例如,将在上节中建立的文件myfile中的内容复制到另一个文件myfile_copy文件中,命令的使用如图2-16所示。
图2-16 复制文件myfile
如图2-17所示为对目录的复制方法。新建目录dir,在dir目录中新建一个文件file_in_dir和一个子目录subdir_in_dir,将dir目录下的内容复制到dir_copy目录中。
图2-17 复制目录dir
mv命令用和cp命令类似,但是执行的操作是移动而不是复制。对于图2-16和图2-17的演示,将cp命令换成mv命令,执行效果如图2-18和图2-19所示。
图2-18 移动文件
图2-19 移动目录
mv命令的另一个作用就是给文件更名,使用方法如图2-19所示,将原文件myfile移动并更名为myfile_move。
在底层的开发过程中,使用查找相关命令进行关键字、正则表达式等的查找匹配,对于整个流程的编写是很有帮助的。
在源码的学习中,提倡使用cscope+vim的方式进行代码的查看,这个方法对于源码中的函数调用、宏变量等可以得到具体的输出,方便进行浏览。而对于源码中相关模块和驱动在进行编写时建议使用find、awk这两个命令,可以达到事半功倍的效果。因此在本节,对这两个命令进行详细讲解。
Linux下的文件表达格式非常复杂,对于Linux新手而言,find命令是了解和学习Linux文件特点的最佳方式之一。因为Linux发行版众多,各个发行版的升级很快,对于曾经熟悉的Linux中的某个配置文件所在位置,有时也无法按图索骥地找到。
虽然可以使用locate命令进行文件的查找,但仅仅是进行模糊匹配。locate命令是对生成的数据库进行遍历,生成数据库的命令为updatedb。这一特性决定了用locate查找文件的速度很快,但是相应的精确度就会差点。所以,这里重点介绍find命令。
若想查找系统配置文件fstab在哪个目录下,可以切换到根目录,并使用如图2-20所示命令。
图2-20中查找命令为find/-name fstab。经过查找,输出结果显示fstab文件在/etc/目录下,如图2-20最后一行所示。
图2-21演示的是对不完整的文件名进行的查找。查找在/etc目录下所有的包含wireless字样的文件。
由图2-21可见,输出结果中有Permission denied的目录。产生这一输出的原因是,在Linux系统中,find命令是所有系统用户都可以使用的命令,并不是ROOT系统管理员的专有权力。一旦Linux系统上系统管理员ROOT设定文件目录的权限为禁止访问,则find命令无法对这些文件进行读操作,就会出现Permission denied的字样。这时候通过特殊文件/dev/null,可以重定向这些错误信息到这个文件,避免它们显示到输出中。/dev/null文件用于表明空的或者错误的信息。
图2-20 find命令查找fstab文件
图2-21 find命令查找带有wireless字样的文件
使用如下命令,可以方便地根据文件的特征进行文件查找。
find / -amin -10#查找系统最后10分钟内访问的文件 find / -group favorming #查找系统中属于favorming group的文件 find / -mmin -5 #查找系统中最后5分钟内修改过的文件
find命令可以通过递归的方式使用,以便对一个文件夹中的每个子文件夹所包括的文件进行信息匹配。当然通过指定参数–maxdepth选项,可以对这个递归查找方式的深度进行限制。
图2-22演示了多个命令一起使用的状况,例如对于文件的查看操作。用户通常希望在知道路径的情况下同时看到它的属性,这时候可以采取这种方式。
图2-22 find命令查找路径及查看文件属性
命令运行结果将所有包含有source的文件及其相关的属性都显示了出来。
awk名称来源于它的3位创始人Alfred Aho、Peter Weinberger、Brian Kemighan的姓氏的首字母。相对于grep的查找,awk命令具有更强大的功能,是一个强大的文本分析工具。
但更多时候awk是一种进行文本分析的编程语言,需要由用户自定义函数和动态正则表达式进行处理。
下文将介绍一些关于awk命令的使用。
awk命令打印出vivado.log文件中所有包含set的行的内容,如图2-23所示。
图2-23 awk命令匹配字符串
打印出vivado.log文件中每一行的第一个字段的带参命令如图2-24所示。字段从行的左端开始,以空白符为分隔。若需要打印第N个字段,只需要在$1后面加上相应的$N即可。
图2-24 awk命令打印每行第一个字段
如果将以上两条命令结合起来,即可打印出所有包含set的行的第一个和第三个字段,如图2-25所示。
图2-25 awk命令打印包含set的行的第一和第三个字段
图2-25 (续)
关于awk命令,更多的时候是将其看作一门编程语言进行操作,以实现更多更复杂的功能。若再加入正则表达式和函数定义,其功能将更加强大。
vim编辑器是迄今为止公认的最优秀的文本编辑工具之一,被广泛地应用在各种操作系统平台之上。vim编辑器的安装步骤如下:
1)打开一个终端,输入sudo apt-get install vim。
2)输入用户密码,开始进入安装环节,如图2-26所示。
图2-26 安装vim
安装完成之后,就可以使用vim对文件进行编辑。新建一个文件myfile,使用命令vim myfile,按回车键,进入编辑器。在编辑器中,输入i或者a命令进入编辑模式,屏幕左下角有INSERT提示,在里面输入以下内容:
I Like Linux! He loves Linux,too!
操作界面如图2-27所示。
图2-27 编辑myfile
编辑完成之后,按下Esc按键,输入冒号,再输入wq命令保存并退出。
关于vim编辑器的详细使用方法,请参考相关的书籍。