Linux不存在像Windows那样分盘符的概念,Linux在安装之后就以文件目录的形式来进行管理,存储。即当我们安装完系统之后,我们就会看到有一堆的目录出现在根目录下。同时Linux使用正斜杠“/”,而不是反斜杠“\”来标识目录。
先来个例子:
用户间文件共享:
共享文件对一个团队来说很重要,团队成员通常需要在一台服务器上共同完成一项任务。下面介绍如何实现用户间共享文件,假设这个团队的成员在服务器上的用户名为lucy,liwei,tian,他们属于workgroup工作组。可以用一下命令来模拟这个场景:
## 新建一个用户名为workgroup的用户组
$ sudo groupadd workgroup
## 新建用户并归入workgroup 用户组
$ sudo useradd -G workgroup lucy
$ sudo passwd lucy
$ sudo useradd -G workgroup liwei
$ sudo passwd liwei
$ sudo useradd -G workgroup tian
$ sudo passwd tian
首先在/home目录下新建一个work目录,作为这个小组的工作目录,注意这个需要root权限的哦。
$ cd home/
$ sudo mkdir work ## 建立一个名为work的目录
现在任何人都可以访问这个新建的目录,而只有root用户具有该目录的写权限。现在我们希望前面我们创建的workgroup具有读写权限,并禁止其他无关的用户查看这个目录。
$ sudo chgrp workgroup work/ ## 将work目录的所有权交给workgroup组
$ sudo chmod g+rwx work/ ## 增加workgroup组对work目录的读,写,执行权限
$ sudo chmod 0-rwx work/ ## 撤销其他用户对work目录的读,写,执行权限
接下来把这个目录交给一个组长liwei
$ sudo chown liwei work/ ## 将work目录的所有者更改为liwei用户
现在所有属于这个组的成员都可以访问并修改这个目录中的内容了,而其他未经过授权的用户,除了root外都无法开导里面的内容。举例来说,liwei在work目录下新建了一个名为test的文件,那么同属于一个组的tian如果认为这个文件没什么必要,可以有权限删除它。
$ su liwei ## 切换到用户liwei
$ cd /home/work
$ touch test ## 建立一个空文件test
$ su tian ##切换到用户tian
$ cd /home/work/
$ rm test ## 删除test文件
建立文件与目录
建立目录:mkdir
mkdir命令可以一次创建一个或者是多个目录,下面的命令在用户主目录下建立两个目录:document,picture
$ cd ~ ## 进入用户主目录
$ mkdir document picture ## 新建两个目录
用户也可以使用绝对路径来新建文件
$ mkdir ~/picture/temp ## 在主目录下新建temp的目录
由于主目录先picture 这个目录已经存在,所以这条命令是合法的,但当用户试图运行下面的命令,mkdir将提示有错
$ mkdir ~tempx/job
mkdir:无法创建目录
但是可以使用-p选项,来完整地创建一个子目录结构
$ mkdir -p ~tempx/job
建立一个空文件:touch
touch使用非常简单,只需在后面跟上一个文件名作为参数。下面这个命令在当前目录下新建一个名为hello的文件
$ touch hello
touch命令的另一个用途是更新一个文件的建立日期与时间。
移动,复制与删除
1、移动与重命名:mv
mv这个命令用来移动文件,下面这个命令将hello文件移动到bin目录下
$ mv hello bin/
当然也可以用来移动目录,下面这条命令把photos目录移动到【桌面】这个目录下
$ mv photos/ 桌面/
mv再把一个文件或者是目录移动到目标目录中的时候,如果出现了同名的文件的时候会是什么样子呢?
如果出现同名的文件将会覆盖掉目标文件中的同名文件。别担心Linux提供了一个-i的选项用来提示用户石是否要覆盖这个文件,如下:
$ mv -i hello test/ ##test目录下有一个hello文件
mv:是否覆盖“test/hello”?
回到y表示覆盖,回答n表示跳过这个文件。
另一个有一用的选项是-b,这个选项也可以解决上述问题。在移动文件前,首先在目标目录的同名文件的文件名后加一个“~”,从而避免了这个文件被覆盖。
$ mv -b hello test/
$ cd test/
$ ls
hello hello~
在Linux中没有重命名这个命令,重命名无非就是同一个文件在同一个目录下移动,这个mv就可以解决了,
$ mv hello~ hello_bak
$ ls
hello hello_back
mv可以在移动文件和目录的同时实现重命名。
复制文件与目录:cp
cp命令用来复制文件与目录,下面这个条命令将test.js复制到test目录下
$ cp test.js test/
和mv命令一样,cp默认情况下会覆盖目标目录下的同名文件,像上面一样可以使用-i命令对这种情况进行提示。也可使用-b选项对同名文件改名后在复制。
$ cp -b test.js test/
$ cd test/
$ ls
test.js test.js~
cp命令在执行复制任务的时候会自动的跳过目录。
$ cp test/ 桌面/
cp:略过目录"test/"
可以使用-r选项来解决这个问题,这个选项将子目录连同其中的文件一起复制到另一个子目录下:
$ cp -r test/ 桌面/
删除目录和文件:rmdir和rm