Linux文件和目录
导语
Linux最优秀的地方之一,在于它的多用户、多任务的开发环境。为了让各用户具有较安全的管理机制,文件的权限管理是很重要的。Linux通常将文件的访问方式分为3个类别,分别是owner/group/other,且具有read/write/excute等权限
由于Mac是基于Unix系统的,加上我需要熟悉Mac的开发环境,所以以下操作全是在Mac上进行的。
一、基本操作
1.1 终端的翻页
上一页 fn+↑
下一页 fn+↓
滚动到顶部 fn+command+←
滚动到底部 fn+command+→1.2 在线帮助
查看命令说明: man 命令1.3 重要的热键
代码补全: [tab]
终止运行的命令: [ctrl]+c
二、Linux文件属性
1.用户和用户组
- owner(文件拥有者)
- group(用户组)
- other(其他人)
2.文件权限
CHENdeMacBook-Pro:Learn_Linux chen$ ls -al
total 0
drwxr-xr-x 3 chen staff 102 11 15 20:25 .
drwx------+ 19 chen staff 646 11 15 20:25 ..
-rwxrwxr-- 1 chen staff 0 11 15 20:25 test
注:如果想对他人开放某个目录,必须开放该目录的x属性。仅仅一个r目录是不够的
3.更改文件权限
3.1 更改所属用户组
chgrp [-R] 用户组 dirname/filename
参数:
-R: 进行递归的持续更改。3.2 更改文件拥有者
chown [-R] 账号名称 dirname/filename
3.3 更改文件属性
chmod [-R] xyz dirname/filename
对于文件来说rwx分别代表可读、可写入、可执行
对于目录来说rwx分别代表可读、可写入、可进入该目录(所以如果目录的没有x权限,则用户无法进入目录进行操作)
例:
CHENdeMacBook-Pro:Learn_Linux chen$ ls -al
total 0
drwxr-xr-x 3 chen staff 102 11 15 20:25 .
drwx------+ 19 chen staff 646 11 15 20:25 ..
-rwxrwxr-- 1 chen staff 0 11 15 20:25 test
CHENdeMacBook-Pro:Learn_Linux chen$ chmod 700 test
CHENdeMacBook-Pro:Learn_Linux chen$ ls -l
total 0
-rwx------ 1 chen staff 0 11 15 20:25 test
4.文件名的限制
一般来说,在设置文件名时,最好避免一些特殊字符,比如
* ? > < ; & ! [ ] \ | ' " ( ) { }
当文件名的开头为小数点“.”时,表示这个文件为隐藏文件。
三、目录和路径
1.目录的操作
1.1 cd (Change Directory)
$ cd [相对路径或绝对路径]
1.2 pwd (Print Working Directory)
$ pwd [-P]
参数:
-P:显示出实际路径,而非使用连接。1.3 mkdir (Make Direcotry)
$ mkdir [-mp] 目录名
参数:
-m:设置文件权限,如果没有-m则设置为默认权限
-p:递归帮我们建立目录
CHENdeMacBook-Pro:learn_linux chen$ ls
test
CHENdeMacBook-Pro:learn_linux chen$ mkdir test1
CHENdeMacBook-Pro:learn_linux chen$ ls -l
total 0
-rwx------ 1 chen staff 0 11 15 20:25 test
drwxr-xr-x 2 chen staff 68 11 16 10:18 test1
CHENdeMacBook-Pro:learn_linux chen$ mkdir -p test2/test3/test4
CHENdeMacBook-Pro:learn_linux chen$ mkdir -m 777 test3
CHENdeMacBook-Pro:learn_linux chen$ ls -l
total 0
-rwx------ 1 chen staff 0 11 15 20:25 test
drwxr-xr-x 2 chen staff 68 11 16 10:18 test1
drwxr-xr-x 3 chen staff 102 11 16 10:19 test2
drwxrwxrwx 2 chen staff 68 11 16 10:19 test3
- 1.4 rmdir (remove Directory)
$ rmdir [-p] 目录名
参数:
-p:将上层的空目录一起删除
CHENdeMacBook-Pro:learn_linux chen$ ls -l
total 0
-rwx------ 1 chen staff 0 11 15 20:25 test
drwxr-xr-x 2 chen staff 68 11 16 10:18 test1
drwxr-xr-x 3 chen staff 102 11 16 10:25 test2
drwxrwxrwx 2 chen staff 68 11 16 10:19 test3
CHENdeMacBook-Pro:learn_linux chen$ rmdir -p test2/test3/test4
CHENdeMacBook-Pro:learn_linux chen$ ls -l
total 0
-rwx------ 1 chen staff 0 11 15 20:25 test
drwxr-xr-x 2 chen staff 68 11 16 10:18 test1
drwxrwxrwx 2 chen staff 68 11 16 10:19 test3
2.变量:$PATH
在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的命令先执行。
如我的电脑上添加了mysql的路径
CHENdeMacBook-Pro:/ chen$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/local/mysql/bin
因此当输入mysql命令时,它会在PATH的设置中搜索,最后锁定/usr/local/mysql/bin/mysql。
3.文件操作
1.1 cp (copy)
$ cp [-adfilprsu] source destination
1.2 rm (remove)
$ rm [-fir] filename/dirname
参数:
-f:强制删除
-i:删除前询问用户时间
-r:递归删除1.3 mv (move or rename file)
$ mv [-fiv] source destination
参数:
-f:强制直接移动
-i:如果文件存在,询问是否覆盖
-u:若目标文件存在,且源文件比较新,则更新1.4 ls (list)
$ ls [-aAdfFhilRS] dirName
参数:
-a: 全部文件,与隐藏文件一起列出
-A: 全部文件,与隐藏文件,但不包括. 和 .. 两个目录
-d: 仅列出目录本身,而不是目录内的文件数据
-f: 直接列出结果,而不进行排序
-h: 列出文件大小(GB, KB)
-i: 列出inode位置,而非列出文件属性
-R: 与子目录内容一起列出来
-t: 按时间排序
-S: 按文件大小排序
最常用的:
ls -l,列出长数据串,包含文件的属性
ls -a,列出全部文件,包括隐藏文件
参考:
鸟哥的私房菜