“在做了在做了”——指新建文件夹

linux shell下通过常见的指令,也可以完成我们在文件资源管理器中动动鼠标进行的文件操作。虽然很多时候用起来没有后者方便,但是可以结合shell script以及应用内置的shell command支持,在linux环境下的开发中大放异彩

标题:Linux Shell之文件操作

通配符

通配符的英文名是wildcards(globbing),它可以用来指定某一类特定的文件名,简化文件指令操作对名称的指定

注意,用通配符表示的文件名同样可以被/分割来表示目录层次关系

wildcard 用途
* 匹配任意多任意字符
? 匹配任意单个字符
[characters] 匹配在中括号内的任意单个字符
[!characters] 匹配不在中括号内的任意单个字符
[[:class:]] 匹配在中括号内类别中的单个字符

最后一项中,常见的类别有:

  • [:alpha:]:字母
  • [:digit:]:数字
  • [:alnum:]:字母或数字
  • [:lower:]:小写字母
  • [:upper:]:大写字母

诸如[A-Z]这样的范围来自更老的版本,慎用

mkdir

用来新建目录(文件夹),后面每跟一个参数就新建一个目录

mkdir dir...

cp

用来复制文件

  1. 一对一复制:

    cp item1(file) item2(file/directory)
    
  2. 多对一复制:

    cp item... directory
    

对于最后的directory不存在的情况会自动创建

特殊参数:

  • -a,--archive:拷贝文件时附带权限等属性

mv

用来移动文件或者重命名

  1. 一对一移动:

    item1(file/directory) item2(file/directory)
    
  2. 多对一移动:

    mv item... directory
    

注意,可以直接移动目录;对于最后的directory不存在的情况也会自动创建,但在移动目录时会删除被移动的顶层目录,相当于重命名

rm

删除文件或目录,不可恢复

rm item...

特殊参数:

  • -f,--force:对并不存在的文件不提示,覆盖-i

ln

用来创建硬链接或软链接

  • 创建硬链接(hard links)
    • 和被链接的文件一样,都可以直接访问硬盘上的内容,实质上指向了inode
    • 可以通过ls -li之后的第一字段来判断指向的inode
    • 不能链接目录
    • 不能跨文件系统链接
ln file link
  • 创建软链接(symbolic links)
    • 需要凭借被链接的文件来访问硬盘上的内容
    • 可以链接目录
    • 可以跨文件系统链接
    • ls的权限字段的第一字符会变成l
    • item使用相对路径时,基于link的位置
    • 使用相对路径的软链接不容易被重命名破坏
    • 被破坏的软链接,或是指向不存在文件的软链接,都会保留并显示,但会提示无法访问
    • 对软链接操作时,一般都会操作指向的文件,rm只会删除链接
    • GUI的文件资源管理器里,可以使用Ctrl+Shift并拖动文件来创建软链接
    • 软链接的权限是齐全的,真正能否访问取决于被链接的文件
ln -s item link

touch

通用参数

这些参数可以用在上面的多个文件操作指令中,试试看!

  • -u,--update:更新式操作
  • -i,--interactive:改动(覆盖/删除)文件时提示(默认不)
  • -r,--recursive:递归操作目录下所有文件
  • -v,--verbose:显示操作详情