建立目录:mkdir
mkdir命令可以建立一个或多个目录。mkdir提供了-p选项,用于完整地创建一个子目录结构,如果不使用-p选项,子目录不存在会报错。
建立空文件:touch
touch命令用于建立一个空文件。
移动和重命名:mv
mv命令会把目标目录的同名文件覆盖并且没有任何提示,在使用时特别需要注意。加上-i选项可以解决此问题。另一个比较有用的选项是-b,在移动文件前,现在目标目录的同名文件后加一个“~”,从而避免同名文件被覆盖。当然mv命令也可以用来对文件或文件目录进行重命名。
y表示移动,n表示跳过。
复制文件和目录:cp
cp命令用来复制文件和目录,和mv命令一样,cp命令也会覆盖目标目录下的同名文件或目录,所以在使用时也建议加上-i或-b选项。可以使用-r选项,将子目录连同其中的文件一起复制到另一个目录下。
删除目录和文件:rmdir和rm
rmdir用于删除目录,但只能删除空目录。因此在使用rmdir时,需要先将目录下的文件和子目录都删除。
rm命令可以一次删除一个或几个文件,和mv命令一样,rm不会对此做任何提示。一个比较安全的做法是加上-i选项,删除前会提示用户确认。
使用-f选项时,rm命令会自动对回复y.
使用-r选项时,rm命令会递归删除目录下的所有文件和子目录。所以一般情况下,比较少使用rmdir。
权限设置及查看
Linux为3类用户准备了权限,文件所有者(属主)u、文件属组用户g和其他人o。可以赋予某类用户对文件和目录享有3中权限:读r、写w、执行x。使用前面提到的ls -l命令,可以查看一个文件的属性及权限。查看文件目录的属性使用ls -ld命令。
- 第一个字段表示文件类型,上图为“-”,表示这是一个普通文件。
- 接下来“rw-r--r--”表示3组权限位,分别表示属主具有读写权限rw-,属组有读权限r--,其他人具有读权限r--。
- 第3和第4个字段分别表示属主和属组。
改变文件所有权:chown 和chgrp
chown用于改变文件的所有权。如下命令修改文件的属主和属组为tomandy。如果只修改属主,可省略:tomandy,如果只修改属组,可以只保留:tomandy。
chown提供了-r选项,修改一个目录所有文件和子目录的所有权。
Linux单独提供了另一个命令chgrp用于改变文件的属组。
改变文件权限:chmod
chmod用于改变一个文件的权限。使用“用户组+/-权限”来表述增加或删除相应的权限。用户组包括文件的属主u、属组g、其他人o、所有人a。权限包括读r、写w、执行x。如以下命令表示增加属主对文件ftest1的执行操作。
也可以通过“用户组=权限”设置文件权限,或者使用“用户组1=用户组2”将用户组2的权限赋予用户组1。
一般为了方便,使用八进制表示文件的权限。下列截图修改文件ftest1对于属主有读写执行权限,属组和其他人则只有执行权限。
八进制 | 二进制 | 权限 |
---|---|---|
0 | 000 | --- |
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
软链接和硬链接:ln
使用带参数-s的ln命令来建立软链接,相当于windows的快捷方式。同样,如果不加上-s参数,则表示建立的硬链接,修改一个文件时会同步修改另一个文件。
输入输出重定向和管道
重定向和管道是Shell的一种高级特性,这种特性允许用户改变程序获取输入和产生输出的位置。如下图所示,如果ls-out文件不存在,则重定位符号“>”会新建文件,如果已存在,则会删除文件的内容,然后重新写入文件。如果想保留原文件的信息,应使用“>>”输出定向符。
使用重定向符号“<<”称为立即文档,使用语法“cat << 结束符”。以下例子为输入和输出重定向符的结合使用,接受键盘的输入指令,直至键入end指令,然后再写入hello文件。
管道的使用能让我们构造更复杂的Shell指令,通过"|"将一条命令的输出作为另一条命令的输入。以下例子先读取hello文件的内容,然后再查找包含“o”的内容。