Linux文件目录管理
1.Linux文件系统架构
- Linux是将文件系统挂载到每个目录下。
- Linux文件系统中没有区的概念。
- 在建立系统时候,Linux首先需要建立一个根目录 / ,并在这个文件系统中建立一系列空目录,然后将其他硬盘分区挂载到这个目录中。
- Linux系统主要目录及其内容
/bin:构建起最小系统所需要的命令
/etc:系统软件的启动和配置文件
/home: 用户的主目录
/lib:C编译器的库
/usr:非系统的程序和命令
/dev:各种设备文件
2.文件和目录处理
mkdir 建立目录:
mkdir catkin_ws
mkdir ~/home/catkin_ws
mkdir -p catkin_ws/src #递归式地建立目录
touch 建立空文件:
touch hello
touch pre_doc.php #更新原来已有的文件的时间
mv 移动和重命名
mv hello download/
mv -i hello download/ # -i用于发现是否把已有文件覆盖了
mv -b hello download/ #如果有同名文件,会在同名文件后加一个~,避免被覆盖
mv hello hello2 #重命名,hello文件被重命名为hello2
cp 复制文件
cp hello.cpp download/
cp -i hello download/
cp -b hello download/
cp -r test/ download/ #复制目录及其下的文件
删除目录和文件
rm test/*.cpp #删除test目录下所有的php文件
rm -i test/hello.cpp
rm -f hello_bak #不加询问地强制删除 force
rm -r test/ #递归式地删除目录下所有的文件和子目录
3.权限
- Linux有三个权限主:文件所有者、文件属组用户、其他人
- 三种权限:r w x
- 可执行文件有两种:shell 脚本程序、可直接由CPU执行的二进制代码
ls -l 查看文件和目录的权限
ls -l /test/hello.cpp
$ ls -l CMakeLists.txt
lrwxrwxrwx 1 rosfun rosfun 50 Apr 24 09:08 CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
- 第一个字符:文件类型
chmod 改变文件权限
chmod a+x hello.cpp 所有权限主加x权限
chmod a-x hello.cpp 所有权限主删除x权限
chmod 777 hello.cpp 所有权限主赋予最高权限 r w x
ln 建立链接
软链接 ln -s
ln -s TARGET LINK_NAME 建立一个名为LINK_NAME的符号链接,指向TARGET,从此访问LINK_NAME就相当于访问TARGET
硬链接 ln
硬链接:将两个独立的文件联系在一起。是直接引用。而软链接是通过名称引用。
硬链接后的两个文件完全被联系在了一起,两个文件拥有相同的内容 ,对其中一个文件的改动会反映在另一个文件中。
ln hello.cpp hell0.cpp
4.重定向和管道
重定向和管道允许用户人为地改变程序获取输入和产生输出的位置。
- 输出重定向
输出默认指向显示器
输出重定向默认把程序的输出转到另一个地方去
$ ls
MPC.cpp MPC_Node.cpp Pure_Pursuit.cpp
ls > ~/ls_out
这样ls的输出就不会显示在显示器上,而是出现在ls_out文件中。
如果该文件不存在,>重定向符号会试图建立这个文件。如果该文件已经存在,则>会覆盖原内容。
如果不想覆盖原内容:
$ date > data_out ## 将date命令的输出重定向到date_out文件
$ cat date_out ## 查看date_out文件内容
xxxxx
$ nume -r >> date_out ##将uname命令产产生的版本信息追加到date_out文件的末尾
$ cat dateout ##再次查看date_out文件的内容
- 输入重定向
程序默认接收输入的地方是键盘。
如果不使用带任何参数的cat命令,cat会停在那里,等待标准输入获取数据。输入的每一样都会立即显示在屏幕上
~$ cat
hello world
hello world
** | 管道**
| 将一条命令的输出连接到另一条命令的输入。
$ ls | grep MPC
MPC.cpp
MPC_Node.cpp
ls首先列出当前目录下的所有文件名,管道“ | ” 在这对文件列表中查找包括字符串MPC的文件名,并在标准输出中显示。
绿色文件:可执行程序
红色文件:压缩文件
蓝色文件:目录
白色文件:普通文件
浅蓝色文件:链接文件。即用ln命令建立的文件!
红色闪烁文件:链接有问题的链接文件!
黄色文件:设备文件
灰色文件:其它文件