Loading

Linux 常见命令

常用命令

一、命令的基本格式

1、命令的提示符

1563374872245

  • [] : 这是提示符的分隔符号,没有特殊含义
  • root: 显示的是当前的登录用户
  • @: 分隔符号,没有特殊含义
  • localhost: 当前系统的简写主机名(完整主机名是 localhost.localdomain), hostname 查看
  • ~: 代表当前所在的目录的最后一层目录,
  • # : 命令提示符。超级用户是#,普通用户是$

2、命令的基本格式

[root@localhost ~]# 命令 [选项] [参数]
  • 选项:是用于调整命令的功能
  • 参数:是命令的操作对象,如果省略出参数,是因为有默认参数

二、目录操作命令

1、ls 命令

  • 命令名称:ls
  • 英语原意: list
  • 所在路径: /bin/ls
  • 功能描述:显示目录下的内容

2、cd 命令

  • 命令名称:cd
  • 英语原意: change directory
  • 所在路径: shell 内置命令
  • 执行权限: 所有用户
  • 功能描述:切换目录

2.1、cd 命令的简化用法

符号 作用
~ 家目录(cd 也直接返回家目录)
. 当前目录
.. 上级目录
- 上次所在目录

2.2、绝对路径和相对路径

  • 绝对路径:以根目录为参照物,从根目录开始,一级一级进入目录
  • 相对路径:以当前目录作为参照物,进行目录查找

3、mkdir 命令

  • 命令名称:mkdir
  • 英语原意: make directories
  • 所在路径: /bin/mkdir
  • 执行权限: 所有用户
  • 功能描述:创建空目录

命令格式

mkdir [选项] 目录名
选项:
	-p: 递归创建所需目录

4、rmdir 命令

  • 命令名称:rmdir
  • 英语原意: remove empty directories
  • 所在路径: /bin/rmdir
  • 执行权限: 所有用户
  • 功能描述:删除空目录

命令格式

rmdir [选项] 目录名
	-p: 递归删除目录

三、文件操作命令

1、touch 命令

  • 命令名称:touch
  • 英语原意: change file timestamps
  • 所在路径: /bin/touch
  • 执行权限: 所有用户
  • 功能描述:创建空文件或修改文件时间

2、stat 命令

  • 命令名称:stat
  • 英语原意: display file or file system status
  • 所在路径: usr/bin/stat
  • 执行权限: 所有用户
  • 功能描述:显示文化或文件系统的详细信息

1563377609428

​ 注意linux没有创建时间。

  • Access: 最近访问
  • Modify: 最近更改 # 数据改动
  • Change: 最近改动 # 状态修改时间

3、cat 命令

  • 命令名称:cat
  • 英语原意: concatenate files print on the standand output
  • 所在路径: /bin/cat
  • 执行权限: 所有用户
  • 功能描述:查看文件并打印输出到标准设备
cat [选项] 文件名
	-A: 相当于-vET 选项的集合,用于列出所有隐藏符合
	-E: 列出每行结尾的回车符号$
	-n: 显示行号
	-T: 把Tab键用^T显示出来
	-v: 列出特殊符号

4、more 命令

  • 命令名称:more
  • 英语原意: file perusal filter for crt viewin
  • 所在路径: /bin/more
  • 执行权限: 所有用户
  • 功能描述:分屏文件内容
# more [选项] 文件名
	- 空格键: 向下翻页
	- b: 向上翻页
	- 回车键:向下滚动一行
	- /字符串:搜索指定的字符串
	- q:退出

5、less 命令

​ less 命令和more命令类似,只是more是分屏显示命令,而less是分行显示命令

  • 命令名称:less
  • 英语原意: opposite of more
  • 所在路径: /bin/less
  • 执行权限: 所有用户
  • 功能描述:分行显示文件内容

6、head 命令

  • 命令名称:head
  • 英语原意: output the first path of files
  • 所在路径: /bin/head
  • 执行权限: 所有用户
  • 功能描述:显示文件头内容

7、tail 命令

  • 命令名称:tail
  • 英语原意: output the last path of files
  • 所在路径: /bin/tail
  • 执行权限: 所有用户
  • 功能描述:显示文件结尾内容
# tail [选项] 文件名

	-n 行数: 从文件结尾开始,显示指定行数
	-f: 监听文件的新增内容

8、ln 命令

  • 命令名称:ln
  • 英语原意: make links between file
  • 所在路径: /bin/ln
  • 执行权限: 所有用户
  • 功能描述:在文件之间建立链接
8.1、ln命令的基本格式如下
# ln [选项] 源文件 目录文件
	-s: 创建软链接文件,如果-s不加的话,则创建硬链接
	-f: 强制,如果目录文件已经存在,则删除目标文件后在创建链接文件
8.2、硬链接与软链接的特征

硬链接特征

  • 源文件和硬链接文件拥有相同的 InodeBlock
  • 修改任意一个文件,另一个都改变
  • 删除任何一个文件,另一个都可以使用
  • 硬链接标记不清,很难确定硬链接的文件位置,不建议使用
  • 硬链接不能链接目录
  • 硬链接不能跨分区

软链接特征

  • 软链接和源文件拥有不同的InodeBlock
  • 两个文件修改任意一个,另一个都改变
  • 删除软链接,源文件不受影响;删除源文件,软链接不可用。
  • 软链接没有实际数据,只保存了源文件的Inode,不论源文件多大,软链接大小不变(9字节)
  • 软链接的权限是最大权限lrwxrwxrwx, 但是由于没有实际数据,最终访问还是要参考实际源文件权限
  • 软链接可以链接目录
  • 软链接可以跨分区
  • 软链接一定要写绝对路径

四、目录和文件都可以操作命令

1、rm 命令

  • 命令名称:rm
  • 英语原意: remove files or directories
  • 所在路径: /bin/rm
  • 执行权限: 所有用户
  • 功能描述:删除文件或目录
# rm [选项] 文件或目录
	-f: 强制删除
	-i: 交互删除,在删除之前会进行询问
	-r: 递归删除,可以删除目录

2、cp 命令

  • 命令名称:cp
  • 英语原意: copy files and directories
  • 所在路径: /bin/cp
  • 执行权限: 所有用户
  • 功能描述:复制文件和目录
# cp [选项] 目标文件
	-a: 相当于 -dpr 选项的集合
	-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
	-i: 询问,如果目标文件已经存在,是否覆盖
	-p:复制后目标文件保留源文件属性(所有者、所属组、权限、时间)
	-r: 递归复制,用于复制目录
	
cp /int.log /aaa.log # 拷贝加改名	

3、mv 命令

  • 命令名称:mv
  • 英语原意: move (rename) files
  • 所在路径: /bin/mv
  • 执行权限: 所有用户
  • 功能描述:移动文件或改名
# mv [选项] 源文件 目标文件
	-f: 强制覆盖
	-i: 交互移动
	-v: 显示详细信息

五、基本权限管理

1、权限的介绍

​ 权限的位含义

1563893803037

  • 第1位代表文件类型
    • -: 基本文件
    • b: 块设备文件,一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1
    • c: 字符设备文件,这也是特殊设备文件,输入设备一般都是这种文件,如果鼠标、键盘
    • d: 目录文件
    • l: 软链接文件
    • p: 管道文件
    • s: 套接字文件,一些服务支持Socket访问,就会产生这种文件
  • 第2-4 位代表文件所有者的权限(u)
    • r: read
    • w: write
    • x: excute
    • -: 没这个权限
  • 第5-7 位代表文件所属组的权限(g)
  • 第8-10位代表文件其他用户的权限 (o)

2、基本权限命令

2.1、 修改权限命令 chmod
  • 命令名称:chmod
  • 英语原意: change file mode bits
  • 所在路径: /bin/chmod
  • 执行权限: 所有用户
  • 功能描述:修改文件权限模式
# chmod [选项] 权限模式 文件名
	-R: 递归设置权限
2.2、 权限模式

chmod 命令的权限模式的格式是[ugoa][+-=][rwx] 也就是[用户身份][赋予方式][权限]

  • 用户身份
    • u
    • g
    • o
    • a
  • 赋予方式
    • +
    • -
    • =
  • 权限
    • r
    • w
    • x
chmod u+x,g-x,o+rw 文件名
2.3、数字权限
  • 4: 读权限
  • 2: 写权限
  • 1: 执行权限
chmod 755 文件名
2.4、常用权限
  • 644:文件的基本权限
  • 755: 执行权限和目录的基本权限
  • 777: 最大权限,尽量避免这样赋予权限。

3、基本权限的作用

3.1、权限含义的解释(对root用户无效)

首先, 读、写、执行权限对文件和目录的作用是不同的。

  • 权限对文件的作用。
    • 读(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命令,进入目录。
3.2、目录的可用权限
  • 0:任何 权限都不赋予。
  • 5:基本的目录浏览和进入权限。
  • 7:完全权限。

4、所有者和所属组命令

4.1、chown 命令
  • 命令名称:chown
  • 英语原意: change file owner and group
  • 所在路径: /bin/chown
  • 执行权限: 所有用户
  • 功能描述:修改文件和目录的所有者和所属组
# chown [选项] 所有者:所属组 文件或目录
	-R:递归设置
4.2、chgrp命令
  • 命令名称:chgrp
  • 英语原意: change group ownership
  • 所在路径: /bin/chgrp
  • 执行权限: 所有用户
  • 功能描述:修改文件和目录的所属组

普通用户可以修改所有者是自己的文件权限

普通用户不能修改文件的所有者(哪怕文件时属于这个普通用的)

5、umask 默认权限

5.1、 查看系统的umask权限
[root@localhost ~]# umask
0022
# 用八进制数值显示umask权限
[root@localhost ~]# umask -S u=rwx,g=rx,o=rx 
#用字母表示文件和目录的初始权限
5.2、 umask权限的计算方法

我们需要先了解一下新建文件和目录的默认最大权限。

  • 对文件来讲,新建文件的默认最大权限是666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
  • 对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。

这种方法既不好计算,也不好理解,超哥并不推荐。我们在这里还是按照权限字母来讲解umask权限的计算方法。我们就按照默认的umask值是022来分别计算一下新建文件和目录的默认权限吧。

  • 文件的默认权限最大只能是666,而umask的值是022
    • “-rw-rw-rw-”减去“-----w--w-”等于“-rw-r--r—”
  • 目录的默认权限最大可以是777,而umask的值是022
    • “drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”

umask默认权限的计算绝不是数字直接相减。

六、帮助命令

1、man命令

  • 命令名称:man
  • 英语原意: format and display the on-line manual pages
  • 所在路径: usr/bin/man
  • 执行权限: 所有用户
  • 功能描述:显示联机帮助手册
# man [选项] 命令
	-f: 查看命令拥有哪个级别的帮助
	-k: 查看和命令相关的所有帮助

1.1、man命令的快捷键

快捷键 作用
上箭头 向上移动一行
下箭头 向下移动一行
PgUp 向上翻一页
PaDown 向下翻一页
g 移动到第一页
G 移动到最后一页
q 退出
/字符串 从当前页向下搜索字符串
?字符串 从当前页向上搜索字符串
n 当搜索字符串时,可以使用n找到下一个字符串
N 当搜索字符串时,使用N键反向查询字符串

1.2、man命令的帮助级别

级别 作用
1 普通用户可以执行的系统命令和可执行文件的帮助
2 内核可以调用的函数和工具的帮助
3 C语言函数的帮助
4 设备和特殊文件的帮助
5 配置文件的帮助
6 游戏的帮助(个人版的Linux中是有游戏的)
7 杂项的帮助
8 超级用户可以执行的系统命令的帮助
9 内核的帮助
man -f 或 whatis 

2、info命令

​ info命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节

快捷键 作用
上箭头 向上移动一行
下箭头 向下移动一行
PgUp 向上翻一页
PaDown 向下翻一页
Tab 在有“*”符 号的节点间进行切
回车 进入有“*”符号的子页面,查看详细帮助信息
u 进入上一层信息(回车是进入下一层信息)
n 进入下一小节信息
p 进入上一小节信息
? 查看帮助信息
q 退出info信息

3、help 命令

  • 命令名称:help
  • 英语原意: help
  • 所在路径: shell内置命令
  • 执行权限: 所有用户
  • 功能描述:显示Shell内置命令的帮助。可以使用type命令来区分内置命令与外部命令shell是Linux的命令解释

4、--help 选项

​ 绝大多数命令都可以使用“--help”选项来查看帮助,这也是一种获取帮助的方法。

这种方法非常简单,输出的帮助信息基本上是man命令的信息简要版。

七、搜索命令

1、whereis命令

​ whereis是搜索系统命令的命令(像绕口令一样),也就是说,whereis命令不能搜索普通文件,而只能搜索系统命令。whereis命令的基本信息如下。

  • 命令名称:whereis
  • 英语原意: locate the binary, source, and manual page files for a command
  • 所在路径: /usr/bin/whereis
  • 执行权限: 所有用户
  • 功能描述:查找二进制命令、源文件和帮助文档的命令

2、which命令

​ which也是搜索 系统命令的命令。和whereis命令的区别在于:

whereis命令可以 在查找 到二进制命令的同时,查找到帮助文档的位置。

而which命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。which命令的基本信息如下。

  • 命令名称:which
  • 英语原意: shows the full path of (shell) commands
  • 所在路径: /usr/bin/which
  • 执行权限: 所有用户
  • 功能描述:列出命令的所在路径

3、locate命令

3.1、基本用法

locate命令才是可以按照文件名搜索普通文件的命令。

优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db,可以使用updatedb命令强制更新数据库。

缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。

  • 命令名称:locate
  • 英语原意: find files by name
  • 所在路径: /usr/bin/locate
  • 执行权限: 所有用户
  • 功能描述:按照文件名搜索文件
## 更新数据库
updatedb

## 配置文件
[root@localhost ~]# vi /etc/updatedb.conf 
#开启搜索限制,也就是让这个配置文件生效
PRUNE_BIND_MOUNTS = "yes" 
#在locate执行搜索时,禁止搜索这些文件系统类型
PRUNEFS = "......" 
#在locate执行搜索时,禁止搜索带有这些扩展名的文件
PRUNENAMES = "......" 
#在locate执行搜索时,禁止搜索这些系统目录
PRUNEPATHS = "......" 

4、find 命令

  • 命令名称:find
  • 英语原意: search for files in a directory hierarchy`
  • 所在路径: /bin/find
  • 执行权限: 所有用户
  • 功能描述:在目录中搜索文件

4.1、按照文件名搜索

[root@localhost ~]# find 搜索路径[选项] 搜索内容选项:   
	-name:按照文件名搜索   
	-iname:按照文件名搜索,不区分文件名大小写   
	-inum:按照inode号搜索  (可以确定硬链接)(ls -i 文件)

4.2、按照文件大小搜索

[root@localhost ~]# find 搜索路径[选项] 搜索内容选项:   
	-size:  [+|-]大小:按照指定大小搜索文件
	-size: n[cwbkMG]              
			File uses n units of space.  The following suffixes can be used:              'b' # 这是默认单位,如果单位为b或不写单位,则按照512 Byte搜索  
	 'c' # 搜索单位是c,按照字节搜索 
	 'w' #搜索单位是w,按照双字节(中文)搜索              
	 'k' #按照KB单位搜索,必须是小写的k               
	 'M' #按照MB单位搜索,必须是大写的M               
	 'G' #按照GB单位搜索,必须是大写的G

这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。

4.3、按照修改时间搜索

Linux中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。

[root@localhost ~]# find 搜索路径[选项] 搜索内容选项:   
	-atime [+|-]时间:按照文件访问时间搜索   
	-mtime [+|-]时间:按照文件数据修改时间搜索   
	-ctime [+|-]时间:按照文件状态修改时间搜索
		

这三个时间的区别我们在stat命令中已经解释过了,这里用mtime数据修改时间来举例,重点说说“[+-]”时间的含义。

  • -5:代表5天内修改的文件。
  • 5:代表前5~6天那一天修改的文件。
  • +5:代表6天前修改的文件。

4.4、按照权限搜索

[root@localhost ~]# find 搜索路径[选项] 搜索内容选项:   
	-perm 权限模式:查找文件权限刚好等于“权限模式”的文件   
	-perm -权限模式:查找文件权限全部包含“权限模式”的文件   
	-perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件

4.5、按照所有者和所属组搜索

[root@localhost ~]# find 搜索路径[选项] 搜索内容选项:   
	-uid 用户ID:按照用户ID查找所有者是指定ID的文件   
	-gid 组ID:按照用户组ID查找所属组是指定ID的文件   
	-user 用户名:按照用户名查找所有者是指定用户的文件   
	-group 组名:按照组名查找所属组是指定用户组的文件   
	-nouser:查找没有所有者的文件

​ 按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。只有一种情况例外,那就是外来文件。比如光盘和U盘中的文件如果是由Windows复制的,在Linux中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者。

4.6、按照文件类型搜索

[root@localhost ~]# find 搜索路径[选项] 搜索内容选项:   
	-type d:查找目录   
	-type f:查找普通文件   
	-type l:查找软链接文件

4.7、逻辑运算符

[root@localhost ~]# find 搜索路径[选项] 搜索内容
	-a:and逻辑与   
	-o:or逻辑或   
	-not:not逻辑非
	
[root@localhost ~]# find . -size +2k -a -type f 
#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件	

[root@localhost ~]# find . -name cangls -o -name bols
#在当前目录下搜索文件名要么是cangls的文件,要么是bols的文件

[root@localhost ~]# find . -not -name cangls 
#在当前目录下搜索文件名不是cangls的文件

4.8、其他选项

4.8.1、 -exec (;)

[root@localhost ~]# find 搜索路径[选项] 搜索内容 -exec 命令2 {} \;

其次,这个选项的作用其实是把find命令的结果交给由“-exec”调用的命令2来处理。“{}”就代表find命令的查找结果。

4.8.2 -ok

“-ok”选项和“-exec”选项的作用基本一致,区别在于 :“-exec”的命令2会直接处理,而不询问;

“-ok”的命令2在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行

posted @ 2019-07-22 23:56  TrueBt  阅读(828)  评论(0编辑  收藏  举报