文件管理包括文件或目录的创建、删除、查询、移动,由mkdir、rm、mv等命令实现。其中文件查询是重点,用find命令来进行,find的参数丰富,功能非常强大。
当需在当前目录下新建一个目录temp时,可以使用如下命令:
mkdir temp
如果想把这个temp新建到/home/pi/projects下,那么可以使用以下命令:
mkdir /home/pi/projects/temp
前提是projects目录必须存在,并且所有使用的用户对其拥有写入的权限。如果要把temp目录删除,可以使用如下命令:
rmdir temp # 或者 rmdir /home/pi/projects/temp
这里要求temp必须是一个空目录,如果temp中还有其他内容,可以使用如下命令:
rm -fr temp
系统会把temp及其里面的所有内容全部删除。当需要新建一个文件时,直接用树莓派自带的nano编辑器即可。如果当前目录下不存在该文件,则将自动创建,存在则打开该文件:
nano c0c.txt
同时,也可以用rm命令来删除一个文件:
rm c0c.txt
或者使用mv命令把它移动到其他的位置,命令如下:
mv c0c.txt /home/pi
前提是要移动的这个目录必须存在,如果不存在,就需要使用mkdir命令新建一个目录。在移动的过程中,也可以给它重新命名:
mv c0c.txt /home/pi/cocpy.txt
同样,以上的删除中移动命令也适用于文件夹,也可以使用cp命令复制一个文件到文件夹中,命令如下:
cp c0c.txt /home/pi/Document
如果要复制整个目录到/home/pi下,就需要加上“-r”,命令如下:
cp -r coc /home/pi
有时既不移动也不复制文件,而是采用创建一个符号链接/硬链接的方式,命令如下:
# 硬链接,删除一个,将仍能找到 ln cc ccAgain # 符号链接(软链接),删除源,另一个无法使用(后面一个ccTo 为新建的文件) ln -s cc ccTo
目录切换可以直接输入ls命令然后按Enter键,或者输入ls -l命令再按Enter键,加上“-l”参数后目录下的文件以清单形式展现,可以清晰展示文件的类型、所属用户、创建时间等信息,如图3.4所示。
图3.4 目录信息
如图3.4所示第一列“drwxr-xr-x”中的第一个字母d,表示该文件是一个目录(directory)文件,如果是普通文件,第一个字母的位置将显示连字符“-”。其余9个字符以3个为一组(连字符“-”也包括在内),每一组均表示文件对于不同用户的权限:第一组“rwx”表示该文件所属用户具有读(read)、写(write)和执行(execute)该文件的权限;第二组“r-x”表示同组用户具有读和执行的权限(“-”表示不具备相关权限);第三组“r-x”表示其他所有用户具有读和执行的权限。
“ls -a”命令还能列出包括隐藏文件在内的所有文件,Linux所有隐藏文件的文件名以“.”开始。有些Linux发行版会提供ll命令,该命令等价于ls -l,但树莓派默认没有ll命令,可以通过修改用户主目录下的.bashrc文件,找到以下两行:
#alias ll='ls -l' #alias la='ls -Al'
将上述代码中的#删除,保存后重新进入终端即可使用ll命令。有时需要知道当前在什么目录下,可以通过pwd命令打印出来。pwd就是print working directory(打印当前工作目录)的首字母缩写。
假设在如下目录中:
/home/pi/projects/rebot/bin
但终端仅仅显示以下内容:
pi@raspberrypi: /bin $
通过终端显示信息只知道在bin目录下,却不知道全部路径信息,这时就需要使用pwd命令。
可以通过cd命令到任何想去的目录,只要知道它的路径,这个路径可以是绝对路径,也可以是相对路径。假设位于以下目录中:
/home/pi/projects/robot/bin/
如果想去/home/pi/projects/目录,可以使用绝对路径,命令如下:
cd /home/pi/projects
也可以使用相对路径:
$ cd ../../
其中../是指上一级目录,在这个示例中,bin目录往上两级就是projects目录。如果robot目录下,还有一个lib目录和bin目录同级,那么从bin目录去lib目录就可以使用以下命令:
$ cd ../lib
也就是bin的上级目录下面的lib目录。此外,输入cd或者cd ~命令可以直接回到pi用户的主目录/home/pi/中。输入cd ..命令可以回到当前目录的上一级目录中。
上一节在介绍ls命令时,相信大家已经大致了解了一个文件的权限可以用下面的形式来表示:
-rwxrwxrwx
如果需要对权限进行修改,就要用到chmod命令。该命令使用直接或二进制两种方式修改权限。
u代表文件所属用户;
g代表与文件所属用户同组的用户;
o代表其他所有用户。
例如一个文件的权限为:
-rwxrwxrwx
如果希望其他所有用户仅具有只读权限,可以用如下命令来实现:
chmod o-wx filename
这样,这个文件的权限就变成了。
-rwxrwxr--
如果想恢复原来的全部可读可写和可执行的权限,就使用以下命令:
chmod o+wx filename
数值方式为每一种权限分配了一个数值:
r=4
w=2
x=1
将每一组所有权限的数值加起来即可。例如744,代表文件所属用户具有rwx权限,同组用户和其他所有用户只具有r权限。如果想将一个文件的权限设置为:
-rwxr-xr-x
那么可以使用以下命令:
chmod 755 filename
可以使用以下方式搜寻文件或目录:
find ./ -name "core*" | xargs file
使用以下命令查找目标文件夹中是否有obj文件:
find ./ -name '*.o'
使用以下命令递归当前目录及子目录以删除所有.o结尾的文件:
find ./ -name "*.o" -exec rm {} \
find是实时查找,如果需要更快地查询,可使用locate,locate会为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库。