linux命令的基本格式:命令 【选项】【参数】,如 cd -l anaconda3
-
ls:显示当前目录下的内容(list)
ls -a | (all)显示所有文件,包括隐藏的文件 |
ls -l | 长格式显示,显示文件的详细信息,文件大小是字节 |
ls -lh | 字节的显示格式:K:KB千字节,M:MB兆字节 |
-
cd:切换目录(change directory)
cd / | 根目录 |
cd ~ | home目录 |
cd - | 上次所在目录 |
cd . | 当前目录 |
cd .. | 上一目录 |
pdw | 査看当前所在的目录 |
-
绝对路径vs相对路径
绝对路径:路径是从根目录开始一级一级指定的
相对路径:从当前所在目录开始切换目录
-
mkdir:创建目录(make directories )
示例 | 作用 | |
mkdir | mkdir cangls | 建立目录 |
mkdir -p | mkdir -p movie/jp/cangls | 递归建立目录 |
-
rmdir:删除空目录(remove empty directories)
rmdir | rmdir cangls | 删除空目录cangls |
rmdir -p | rmdir -p movie/jp/cangls | 递归删除空目录 |
注:只能删除空目录,一旦目录中有内容就会报错,故一般使用rm命令
-
touch:触摸,用于修改文件的时间戳。如果文件不存在则会建立空文件,如果文件已存在则会修改文件的时间戳(change file timestamps)
示例 作用 touch touch file 修改file文件的时间戳 touch -a touch -a file 只修改文件的访问时间 touch -c touch -c file 如果文件不存在,则不建立新文件 touch -d
? 把文件的时间改为指定的时间 touch -m touch -m file 只修改文件的数据修改时间
注:linux中每个文件都有三个时间:访问时间(access time),数据修改时间(modify time),状态修改时间(change time)
在linux中, 文件没有创建时间
不过,touch 命令只能人为指定只修改访问时间,或是只修改数据修改时间,而不能指定只修改状态修改时间。因为不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之自动改变
-
stat:显示文件或文件系统的详细信息(display file or file system status)
示例 作用 stat stat file 查看文件的信息(含有时间戳) stat -f stat -f file 查看文件所在的文件系统信息 -
cat:查看文件的内容,即连接文件并打印输出到标准输出(concatenate files and print on the standard output)
注:cat适应于查看小文件cat -A 相当于 -vET 选项的整合,用于列出所有隐藏符号; cat -E 列出每行结尾的回车符 $ cat -n 显示行号 cat -T 把 Tab 键 ^I 显示出来 cat-V 列出特殊字符 -
more:分屏显示文件(适用于大文件,功能类似cat)
-
head:查看文件的开头(output the first part of files)
示例 作用 head head file 显示文件开头(默认开头10行) head -n head -n 20 file or head -20 file 显示文件开头20行 head -v head -v file 显示文件名 -
tail 显示文件的结尾(output the last part of files)
示例 | 作用 | |
tail | tail file | 显示文件结尾(默认10行) |
tail -n | tail -n 20 file or tail -20 file | 显示文件定义行数的结尾 |
tail -f | tail -f file | 监听文件的新增内容,光标不会退出命令,会一直监听文件的结尾处,等待显示新增内容 |
-
rm:强大的删除命令,可以删除文件和目录(remove files or directories)。
rm | 删除 |
rm -f | 强制删除(force) |
rm -i | 交互删除,在删除之前会询问用户 |
rm -r | 递归删除,可以删除目录 |
rm -rf | 最常用,可强制删除文件和目录 |
-
cp:复制,可复制文件和目录(copy files and directories)
-
命令格式:cp [选项] 源文件 目标文件
- 复制文件:cp bols /tmp/
- 复制目录:cp -r /test/ /test_copy/
-
mv:剪切,可剪切文件和目录。命令格式:mv [选项] 源文件 目标文件
mv -f 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖; mv -i 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) mv -n 如果目标文件已经存在,则不会覆盖移动,而且不询问用户; mv -v 显示详细信息; -
linux文件的权限:
-
所有者:文件的建立者
-
所属组:所属的用户组
-
其他人:其他的人
-
linux文件的权限位
- 第1位:文件类型。例如:
“-” 普通文件 “c” 字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘d等 “d” 目录文件。Linux 中一切皆文件,所以目录也是文件的一种。 - 2~4位:文件所有者的权限
r read,读取权限 w write,写权限 x execute,执行权限 - 如果有上述字母,则代表拥有对应的权限;如果是"-",则代表没有对应的权限 - 5~7位:文件所属组的权限。同上
- 8~10位:其他人的权限。同上
-
chmod:修改权限(change mode)。命令格式:chmod [选项] 权限模式 文件名
- 选项:
-R 递归设置权限,也就是给子目录中的所有文件设定权限 -
权限模式:【用户身份】【赋予方式】【权限】
-
用户身份:
u 所有者user g 所属组group o 其他other a 所有身份all -
赋予方式
+ 加入权限 - 减去权限 = 直接设置权限,用着方便 -
权限
r 读取 w 写 x 执行execute -
举例:chmod u+x file #将file文件的所有者加入执行权限; chmod g+w,o-w file#给多个身份同时加入权限 chmod u=rwx,g=rw,o=rw file #直接通过“=”设置权限(注:注意两个权限之间的逗号)
-
权限对文件的作用。
- -读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。
- -写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意,对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
- -执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。
-
权限对目录的作用
- -读(r):对目录有读 (r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行 ls 命令,查看目录下的内容了。
- -写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。
- -执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入目录。
-
chown:修改文件和目录的所有者和所属组(change file owner and group)
- 修改文件所有者:chown user file #file文件原所有者是zongyu,现在修改为user
- 修改文件的所属组:chown user:uesr file #将file文件的所有者改为user,所属组改为user。注:在 Linux 中,每个用户建立之后(如zongyu),都会建立和用户名同名的用户组,作为这个用户的初始组
-
chgrp:修改文件和目录的所属组(change group ownership)
- chgrp uesr file # 修改file文件的所属组为user用户组
-
umask:查看和设置linux系统中文件和目录的默认初始权限
- umask -S:查看系统文件和目录默认权限
-
linux查看命令帮助信息是几个命令
- man 命令:最常用,可查看外部命令和shell内置命令的帮助。如:man ls
- info 命令 : info命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。大家可以把 info 帮助信息看成一部独立的电子书,所以每个命令的帮助信息都会和书籍一样,拥有章节编号
- help 命令:只能获取shell内置命令的帮助 (但在 Linux 中绝大多数命令是外部命令,所以 help 命令的作用非常有限)
- --help选项: 绝大多数命令都可以使用"--help"选项来査看帮助,这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版。如:ls --help
-
whereis:搜索系统命令,而不能搜索普通文件
whereis | 不仅可以搜索二进制命令,还可以找到命令的帮助文档的位置。 |
whereis -b | 只搜索二进制命令 |
whereis -m | 只搜索帮助文档 |
-
which:也是搜索系统命令的命令
-
和 whereis 命令的区别在于,whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;而which命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令.如:which ls
-
locate:按照文件名搜索普通文件(find files by name)
- 基本用法:locate file
- 注:因为 locate 命令不会直接搜索硬盘空间,而会先建立 locate 数据库,然后在数据库中按照文件名进行搜索,是快速的搜索命令。(这样做的好处是耗费系统资源小、搜索速度快;缺点是不是实时更新的,而要等用户退出登录或重启系统时,locate 数据库才会更新)所以我们无法查找到新建立的文件。可通过updatedb命令更新数据库,这样locate就可以搜索到新建立的文件。
-
find:在目录中查找文件(search for files in a directory hierarchy)
- find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。
- 命令格式:find 搜索路径 【选项】 搜索内容
- 按照文件名搜索:选项有:
例如:find /test -name file (注: find 命令有一个小特性,就是搜索的文件名必须和你的搜索内容一致才能找到。如果只包含搜索内容,则不会找到。这种特性总结为:find 命令是完全匹配的,必须和搜索关键字一模一样才会列出。)-name 按照文件名搜索 -iname 按照文件名搜索,不区分文件名大小写 -inum 按照inode号搜索 - 按照文件大小搜索:find 搜索路径 【选项】搜索内容
find ./test -size 1k 在/test文件里查找大小等于1KB的文件 find test -size -1k 在/test文件里查找大小小于1KB的文件 find ./test -size +1k 在/test文件里查找大小大于1KB的文件 - 按照修改时间搜索:find 搜索路径 【选项】 搜索内容
选项 -atime 按照文件访问时间搜索 -mtime 按照文件数据修改时间搜索 -ctime 按照文件状态修改时间搜索 搜索内容 -5 5天内修改的文件 5 5~6那一天修改的文件 +5 6天前修改的文件
例如:find. -mtime -5 #搜索当前目录下5天内修改的文件
注:也可按照amin,mmin,cmin来查找,time默认单位是天,min默认单位是分钟
6. 按照权限搜索:find 搜索路径 【选项】 搜索内容
-perm 权限模式 | 査找文件权限刚好等于"权限模式"的文件 |
-perm -权限模式 | 査找文件权限全部包含"权限模式"的文件 |
-perm +权限模式 | 査找文件权限包含"权限模式"的任意一个权限的文件 |
例如:find. -perm 444
7.按照所有者和所属组搜索
-uid 用户ID | 按照用户 ID 査找所有者是指定 ID 的文件 |
-gid 组 ID | 按照用户组 ID 査找所属组是指定 ID 的文件 |
-user 用户名 | 按照用户名査找所有者是指定用户的文件 |
-group 组名 | 按照组名査找所属组是指定用户组的文件 |
-nouser | 査找没有所有者的文件 |
例如:find test -user zonggyu #查找test文件夹下所有者等于zongyu的文件
8.按照文件类型搜索
-type d | 查找目录 |
-type f | 查找普通文件 |
-type l | 查找软链接文件 |
9.逻辑运算符
-a | 逻辑与运算,也就是 -a 的两个条件都成立,find 搜索的结果才成立 |
-o | 逻辑或运算,也就是 -o 的两个条件只要其中一个成立,find 命令就可以找到结果 |
-not | ot逻辑非 |
例如:find . -size +2k -a -type f #在当前目录下搜索大于2KB,并且文件类型是普通文件的文件
find . -name cangls -o -name bols #在当前目录下搜索文件名要么是cangls的文件,要么是bols的文件