终端有两种类型:字符终端(CLI,命令行界面,通过键盘下达命令来要求系统帮我们做事情)和图形终端(GUI,图形用户界面,可通过鼠标下达命令来要求系统帮我们做事情)。Termux是一个字符终端,我们在提示符$后输入命令,然后按回车键将命令交给系统执行。
目录
一条命令通常由三个部分组成:命令,选项,参数。例如,对当前目录递归列表的命令是:“ls -R . ”,其中“ls”是命令,“-R”是选项,“.”是参数,图2-1给出了这条命令在我的手机上的执行结果。
图2-1 对当前目录递归列表
图2-1中的命令省略了命令的参数“.”。列表命令ls没有参数时,参数默认就是“.”。上面图2-1对应下面图2-2的文件目录结构。
图2-2 文件目录结构
图2-2中的“~”称为家目录或者用户目录。除了家目录以外,还有另外三个需要知道的特殊目录。“/”表示根目录,所有的文件和目录都可以从根目录沿着一条路径到达。“.”表示当前目录,当Termux启动时,当前目录就是家目录。“..”表示双亲目录,也就是当前目录的上一级目录。
路径由一系列路径分割符“/”分割的目录构成。如果路径以根目录开始,称之为绝对路径。在我的手机上,家目录的绝对路径是
/data/data/com.termux/files/home
所以文件hello.java的绝对路径是
/data/data/com.termux/files/home/java/hello.java
也可以缩写为
~/java/hello.java
注意在绝对路径中第一个正斜杠是根目录,后面的正斜杠是路径分割符。如果路径以当前目录开始,称之为相对路径。如果家目录是当前目录,文件hello.java的相对路径是
./java/hello.java
省略开始的当前目录时写成
java/hello.java
如果目录cpp是当前目录,那么文件hello.java的相对路径是
./../java/hello.java
同样也可以省略开始的当前目录写成
../java/hello.java
练习题2.1 如果当前目录是arm64,那么文件hello.java的绝对路径和相对路径是什么?
1)列表
命令ls用于列出指定目录下的文件和目录。
图2-3 ls
第1条列表命令没有参数,这时参数默认是“.”,列出了当前目录也就是家目录下的两个目录,Termux将目录显示为蓝色的。第2条列表命令列出了java目录下的三个文件和一个目录。第3条列表命令使用了通配符“*”要求列出java目录下以“.java”结尾的所有文件的文件名。
通配符“*”表示0到任意多个字符构成的字符串。通配符“?”表示一个任意的字符。
练习题2.2 当前目录是家目录,列出java目录下名字包含两个字母a的文件和目录。
2) 显示和设置当前目录
命令pwd用于显示当前目录的绝对路径名,命令cd用于设置当前目录。
图2-4 pwd, cd
一开始的时候,当前目录是家目录,我们用pwd和ls命令证实了这一点。然后我们用“cd java”将当前目录设置为java目录,pwd和ls命令证实了当前目录的变化。接着我们进入oat目录,用pwd和ls命令证实。在这个目录下,我们用“ls ..”看到oat目录的双亲目录就是java目录。紧接着我们用“cd ..”从oat目录下回到了它的双亲目录java下,pwd和ls命令证实了这一点。最后的三条命中的第一条将当前目录设置为家目录,另外两条证实当前目录成功改变成了家目录。
练习题2.3 cd命令能不能不带参数?如果能的话,作用是什么?
3)目录的创建、更名和删除
命令mkdir用于创建新目录,命令mv用于目录更名,命令rmdir用于删除一个空目录。
图2-5 mkdir, mv, rmdir
第1条命令“mkdir shell”创建了一个新的名为shell的目录,紧接的ls命令证实了这一点。第3条命令“mkdir sql”创建了一个新的名为sql的目录,ls命令证实sql目录已经创建。第5条命令“mv sql test”将目录sql的名字改成了test,也就是将sql目录移动到test目录,这样sql目录就没有了,多出来一个test目录。倒数第2条命令“rmdir test”删除了test目录。
总结
本节介绍了4个特殊目录(“/”,“~”,“.”,“..”)和目录管理命令(ls; pwd, cd; mkdir, mv, rmdir)。
ls | list | 列表 |
pwd | print working directory | 显示当前目录 |
cd | change directory | 改变当前目录 |
mkdir | make directory | 创建目录 |
mv | move | 目录更名 |
rmdir | remove directory | 删除目录 |
教学视频
请关注我的公众号:您的关注让我倍感荣幸。