linux常用操作命令详解

将常用的linux操作命令整理下,超全面,超详细,每个命令都有实例,方便以后复习

目录

一、常用系统工作命令

1.echo  用于在终端输出字符串或变量提取后的值

2.date  用于显示及设置系统的时间或日期

3.reboot  用于重启系统

4.poweroff  用于关闭系统

5.wget  用于在终端中下载网络文件

6.ps  用于查看系统中的进程状态

7.top  实时显示进程动态

8.pidof 用于查询某个指定服务进程的 PID 值

9.kill  用于终止某个指定 PID 的服务进程

10. rpm  RPM软件包管理器

11. yum 安装(rpm包在线安装)

二、系统状态检测命令 

1. ifconfig  用于获取网卡配置与网络状态等信息

2. uname  用于查看系统内核与系统版本等信息

3. uptime  用于查看系统的负载信息

4. free  用于显示当前系统中内存的使用量信息

5.  who  用于查看当前登入主机的用户终端信息

6.last  用于查看所有系统的登录记录

7.history  用于显示历史执行过的命令

8.sosreport 命令 用于收集系统配置及架构信息并输出诊断文档

三、工作目录切换命令 

1.pwd 命令 用于显示用户当前所处的工作目录

2.cd 命令 用于切换工作路径

3.ls 命令 用于显示目录中的文件信息

四、文本文件编辑命令

1.cat 命令 用于查看纯文本文件(内容较少的)

 

2.more  用于查看纯文本文件(内容较多的)

 

3. head  用于查看纯文本文档的前 N 行

4.tail  用于查看纯文本文档的后 N 行或持续刷新内容

5.tr  用于替换文本文件中的字符

6.wc  用于统计指定文本的行数、字数、字节数

7.stat  用于查看文件的具体存储信息和时间等信息

8.cut  用于按“列”提取文本字符

9.diff  用于比较多个文本文件的差异

五、文件目录管理命令

1.touch  用于创建空白文件或设置文件的时间 

2.mkdir  用于创建空白的目录

3.cp  用于复制文件或目录

4.mv  用于剪切文件或将文件重命名

5.rm  用于删除文件或目录

6.dd  用于按照指定大小和个数的数据块来复制文件或转换文件

7.file  用于查看文件的类型

六、打包压缩与搜索命令

1.tar  用于对文件进行打包压缩或解压

2.grep   用于在文本中执行关键词搜索,并显示匹配的结果

3.find   用于按照指定条件来查找文件

4.输入重定向中用到的符号及其作用

5.输出重定向中用到的符号及其作用

6.管道符命令  | 把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入

7.命令行的通配符

8.常用的转义字符

七、用户管理和文件权限命令

1.useradd   用于创建新的用户

2.groupadd   用于创建用户组

3.usermod   用于修改用户的属性

4.passwd   用于修改用户密码、过期时间、认证信息等

5.userdel   用于删除用户

6.  文件权限与归属

7.chattr   用于设置文件的隐藏权限

8.chmod   用于改变文件或目录权限

9.chgrp   用于更改文件用户组

10.chown   用于改变文件或目录用户和用户组



 

 

一、常用系统工作命令

 

1.echo  用于在终端输出字符串或变量提取后的值

格式为:echo [字符串 | $变量]
 
实例:
[root@linuxprobe ~]# echo Linuxprobe.Com

 

2.date  用于显示及设置系统的时间或日期

格式为:date [选项] [+指定的格式]
 
 date 命令中的参数以及作用
参数         作用
%t       跳格[Tab 键] 
%H     小时(00~23)
%I       小时(00~12)
%M     分钟(00~59)
%S      秒(00~59)
%j       今年中的第几天
 
 

3.reboot  用于重启系统

格式为:reboot

实例:

[root@linuxprobe ~]# reboot
 

4.poweroff  用于关闭系统

格式为:poweroff
 
实例:
 
[root@linuxprobe ~]# poweroff

 

5.wget  用于在终端中下载网络文件

格式为:wget [选项] 下载地址

选项:

V–-version 显示wget的版本后退出
-h–-help 打印语法帮助
-b,–-background 启动后转入后台执行
-e–-execute=COMMAND

实例:

[root@linuxprobe ~]# wget http://www.linuxprobe.com/docs/LinuxProbe.pdf

 

6.ps  用于查看系统中的进程状态

格式为:ps [选项]

选项:

-a显示所有终端机下执行的程序,除了阶段作业领导者之外
a显示现行终端机下的所有程序,包括其他用户的程序
-A显示所有程序
-c显示CLS和PRI栏位
c列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示
-C <指令名称>指定执行指令的名称,并列出该指令的程序的状况
-d显示所有程序,但不包括阶段作业领导者的程序
-e此选项的效果和指定”A”选项相同
e列出程序时,显示每个程序所使用的环境变量
-f显示UID,PPIP,C与STIME栏位
f用ASCII字符显示树状结构,表达程序间的相互关系
-g <群组名称>此选项的效果和指定”-G”选项相同,当亦能使用阶段作业领导者的名称来指定
g显示现行终端机下的所有程序,包括群组领导者的程序
-G <群组识别码>列出属于该群组的程序的状况,也可使用群组名称来指定
h不显示标题列
-H显示树状结构,表示程序间的相互关系
-j或j采用工作控制的格式显示程序状况
-l或l采用详细的格式来显示程序状况
L列出栏位的相关信息
-m或m显示所有的执行绪
n以数字来表示USER和WCHAN栏位
-N显示所有的程序,除了执行ps指令终端机下的程序之外
-p <程序识别码>指定程序识别码,并列出该程序的状况
p <程序识别码>此选项的效果和指定”-p”选项相同,只在列表格式方面稍有差异
r只列出现行终端机正在执行中的程序
-s <阶段作业>指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况
s采用程序信号的格式显示程序状况
S列出程序时,包括已中断的子程序资料
-t <终端机编号>指定终端机编号,并列出属于该终端机的程序的状况
t <终端机编号>此选项的效果和指定”-t”选项相同,只在列表格式方面稍有差异
-T显示现行终端机下的所有程序
-u <用户识别码>此选项的效果和指定”-U”选项相同
u以用户为主的格式来显示程序状况
-U <用户识别码>列出属于该用户的程序的状况,也可使用用户名称来指定
U <用户名称>列出属于该用户的程序的状况
v采用虚拟内存的格式显示程序状况
-V或V显示版本信息
-w或w采用宽阔的格式来显示程序状况
x显示所有程序,不以终端机来区分
X采用旧式的Linux i386登陆格式显示程序状况
-y配合选项”-l”使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位
-- <程序识别码>此选项的效果和指定”p”选项相同
--cols <每列字符数>设置每列的最大字符数
--columns <每列字符数>此选项的效果和指定”--cols”选项相同
--cumulative此选项的效果和指定”S”选项相同
--deselect此选项的效果和指定”-N”选项相同
--forest此选项的效果和指定”f”选项相同
--headers重复显示标题列
--help在线帮助
--info显示排错信息
--lines <显示列数>设置显示画面的列数
--no-headers此选项的效果和指定”h”选项相同,只在列表格式方面稍有差异
--group <群组名称>此选项的效果和指定”-G”选项相同
--Group <群组识别码>此选项的效果和指定”-G”选项相同
--pid <程序识别码>此选项的效果和指定”-p”选项相同
--rows <显示列数>此选项的效果和指定”--lines”选项相同
--sid <阶段作业>此选项的效果和指定”-s”选项相同
-tty <终端机编号>此选项的效果和指定”-t”选项相同
--user <用户名称>此选项的效果和指定”-U”选项相同
--User <用户识别码>此选项的效果和指定”-U”选项相同
--version此选项的效果和指定”-V”选项相同
--widty <每列字符数>此选项的效果和指定”-cols”选项相同

实例:

把所有进程显示出来:

[root@linuxcool ~]# ps -aux
[root@linuxcool ~]# ps -A  

把所有进程显示出来,并输出到ps.txt文件:

[root@linuxcool ~]# ps -aux > ps.txt

查找特定进程信息:

[root@linuxcool ~]# ps -ef | grep ssh
 root       1303      1  0 Apr17 ?        00:00:00 /usr/sbin/sshd
 root       3260   3087  0 Apr17 ?        00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
 root      24174  19508  0 11:39 pts/0    00:00:00 grep --color=auto ssh
 [root@linuxcool ~]# ps -aux | grep ssh
 root       1303  0.0  0.0  82468  1204 ?        Ss   Apr17   0:00 /usr/sbin/sshd
 root       3260  0.0  0.0  52864   572 ?        Ss   Apr17   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
 root      24188  0.0  0.0 112652   956 pts/0    S+   11:39   0:00 grep --color=auto ssh

显示指定用户信息:

[root@linuxcool ~]# ps -u root

按 CPU 资源的使用量对进程进行排序:

[root@linuxcool ~]# ps aux | sort -nk 3

按内存资源的使用量对进程进行排序:

[root@linuxcool ~]# ps aux | sort -rnk 4 
Linux 系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux 系统中,有 5 种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自
含义如下所示。
   R(运行): 进程正在运行或在运行队列中等待。
   S(中断): 进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
  D(不可中断): 进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
  Z(僵死): 进程已经终止,但进程描述符依然存在 , 直到父进程调用 wait4() 系统函数后将进程释放。
  T(停止): 进程收到停止信号后停止运行。
 
 
 

7.top  实时显示进程动态

格式为:top[选项]
 

选项:

-d改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
-q没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
-c 切换显示模式
-s安全模式,将交谈式指令取消, 避免潜在的危机
-i不显示任何闲置 (idle) 或无用 (zombie) 的行程
-n更新的次数,完成后将会退出 top
-b批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

实例:

显示进程信息:

[root@linuxcool ~]# top

显示完整的进程信息:

[root@linuxcool ~]# top -c

以批处理模式显示程序信息:

[root@linuxcool ~]# top -b

以累积模式显示程序信息:

[root@linuxcool ~]# top -s

设置信息更新次数:

[root@linuxcool ~]# top -n 2
top 命令执行结果的前 5 行为系统整体的统计信息,其所代表的含义如下。
    1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、 5 分钟、15 分钟内的平均值,数值越小意味着负载越低)。
    2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
   第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
   4 行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
   第 5 行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
 
 

8.pidof 用于查询某个指定服务进程的 PID

格式为:pidof [选项] [服务名称]

选项:

-s当系统中存在多个同名进程时,仅返回一个进程ID
-c仅返回当前正在运行且具有同一根目录的进程PID
-x返回指定运行脚本的shell进程PID
-o忽略具有指定进程ID的进程

实例:

返回crond守护进程的PID:

[root@linuxcool ~]# pidof crond

返回Apache服务器守护进程httpd:

[root@linuxcool ~]# pidof httpd

 

9.kill  用于终止某个指定 PID 的服务进程

格式为:kill [选项] [进程 PID]

选项:
 
-l列出系统支持的信号
-s指定向进程发送的信号
-a处理当前进程时不限制命令名和进程号的对应关系
-p指定kill命令只打印相关进程的进程号,而不发送任何信号
实例:
 
杀掉id为1951的进程:
 
[root@linuxcool ~]# kill -9 1951

10. rpm  RPM软件包管理器

rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

格式为:rpm [参数] [软件包全名]
 
选项:
 
-a查询所有的软件包
-b或-t设置包装套件的完成阶段,并指定套件档的文件名称;
-c只列出组态配置文件,本参数需配合”-l”参数使用
-d只列出文本文件,本参数需配合”-l”参数使用
-e或--erase卸载软件包
-f查询文件或命令属于哪个软件包
-h打印显示安装进度
-i安装(install)
-l显示软件包的文件列表
-p查询指定的rpm软件包,没有安装的
-q查询软件包
-R显示软件包的依赖关系
-s显示文件状态,本参数需配合”-l”参数使用
-U或--upgrade升级软件包
-v显示命令执行过程
-vv详细显示指令执行过程

 

rpm包命名规则:
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd           软件包名
2.2.15         软件版本
15               软件发布的次数
el6              软件发行商sel6是RedHat公司发布,适合RHEL6.x(Red Hat Enterprise Linux)和CentOS6.x下使用
i686             适合的硬件平台
rpm            rpm包的扩展名


包全名:如果操作的是未安装软件包,则使用包全名,而且需要注意绝对路径
包名:如果操作的是已经安装的软件包,则使用包名即可,系统会生产RPM包的数据库

案例:

[root@linuxcool ~]# rpm -ivh httpd-2.2.15-15.el6.centos.1.i686.rpm

11. yum 安装(rpm包在线安装)

yum源配置文件保存在/etc/yum repos.d/目录中,文件的扩展名一定是“*.repo”。也就是说,yum源配置文件只要扩展名是“*.repo”就会生效。
 

[root@linuxcool ~]# ls /etc/yum.repo
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Mledia.repoCentOS-Vault. repo
#默认情况CentOS-Base.repo生效

CentOS-Base.repo配置文件解释

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=Cent0s-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearchk
repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6



[base]:      容器名称,一定要放在[]中。

name:        容器说明,可以自己随便写。

mirrorlist:  镜像站点,这个可以注释掉。

baseurl:     我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的yum源地址。

enabled:     此容器是否生效,如果不写或写成enabled=1则表示此容器生效,写成enabled=O则表示此容器不生效。

spgcheck:    如果为1则表示RPM的数字证书生效;如果为0则表示RPM的数字证书不生效。gpgkey:数字证书的公钥文件保存位置。不用修改。

格式为:yum [选项] 包名

选项:

-h显示帮助信息
-y对所有的提问都回答“yes”
-c指定配置文件
-q安静模式
-v详细模式
-t检查外部错误
-d设置调试等级(0-10)
-e设置错误等级(0-10)
-R设置yum处理一个命令的最大等待时间
-C完全从缓存中运行,而不去下载或者更新任何头文件
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包的信息
search检查软件包的信息
info显示指定的rpm软件包的描述信息和概要信息
clean清理yum过期的缓存
shell进入yum的shell提示符
resolvedep显示rpm软件包的依赖关系
localinstall安装本地的rpm软件包
localupdate显示本地rpm软件包进行更新
deplist显示rpm软件包的所有依赖关系

 

案例:

自动搜索最快镜像插件:

[root@linuxcool ~]# yum install yum-fastestmirror

安装yum图形窗口插件:

[root@linuxcool ~]# yum install yumex

清除缓存目录下的软件包:

[root@linuxcool ~]# yum clean packages

卸载/删除vim-common:

[root@linuxcool ~]# yum remove vim-common.x86_64  

列出匹配到“foo*”的可用的数据包:

[root@linuxcool ~]# yum list available 'foo*' 

安装yum图形窗口插件:

[root@linuxcool ~]# yum install yumex 

查看可能批量安装的列表:

[root@linuxcool ~]# yum grouplist  

显示httpd安装包信息:

[root@linuxcool ~]# yum info httpd.x86_64   

 

二、系统状态检测命令 

 

1. ifconfig  用于获取网卡配置与网络状态等信息

格式为:ifconfig [网络设备] [选项]

选项:

add<地址>设置网络设备IPv6的IP地址
del<地址>删除网络设备IPv6的IP地址
down关闭指定的网络设备
up启动指定的网络设备
IP地址指定网络设备的IP地址

实例:

启动关闭指定网卡:

[root@linuxcool ~]# ifconfig eth0 down
[root@linuxcool ~]# ifconfig eth0 up

为网卡配置和删除IPv6地址:

[root@linuxcool ~]# ifconfig eth0 add 33ffe:3240:800:1005::2/64
[root@linuxcool ~]# ifconfig eth0 del 33ffe:3240:800:1005::2/64

用ifconfig修改MAC地址:

[root@linuxcool ~]# ifconfig eth0 down
[root@linuxcool ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
[root@linuxcool ~]# ifconfig eth0 up
[root@linuxcool ~]# ifconfig eth1 hw ether 00:1D:1C:1D:1E 
[root@linuxcool ~]# ifconfig eth1 up

2. uname  用于查看系统内核与系统版本等信息

格式为:uname [选项]

选项:

-a显示系统所有相关信息
-m显示计算机硬件架构
-n显示主机名称
-r显示内核发行版本号
-s显示内核名称
-v显示内核版本
-p显示主机处理器类型
-o显示操作系统名称
-i显示硬件平台

实例:

[root@redhat7 /]# uname -a

Linux redhat7 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

如果要查看当前系统版本的详细信息,则需要查看 redhat-release 文件

[root@linuxprobe ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.0 (Maipo)

 

3. uptime  用于查看系统的负载信息

格式为:uptime[选项]

选项:

-p以漂亮的格式显示机器正常运行的时间
-s系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss
-h显示帮助信息

实例:

显示当前系统运行负载情况:

[root@linuxprobe ~]# uptime

22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18

显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5

4. free  用于显示当前系统中内存的使用量信息

格式为:free [选项]

选项:

-b以Byte显示内存使用情况
-k以kb为单位显示内存使用情况
-m以mb为单位显示内存使用情况
-g以gb为单位显示内存使用情况
-s持续显示内存
-t显示内存使用总合

实例:

人性化的方式输出当前内存的实时使用量信息:

[root@linuxprobe ~]# free -h

 

5.  who  用于查看当前登入主机的用户终端信息

格式为:who [选项]

选项:

-a打印全面信息
-b打印系统最近启动时间
-d打印死掉的进程
-l打印系统登录进程
-H带有列标题打印用户名,登录终端和登录时间
-t打印系统上次锁定时间
-u打印已登录用户列表

实例:

查看当前系统登录的用户名:

[root@linuxprobe ~]# who

 

6.last  用于查看所有系统的登录记录

格式为:last [选项]

选项:

-R省略hostname的栏位
usename展示username的登入讯息
tty限制登入讯息包含的终端代号

实例:

显示近期用户或终端的登录情况:

[root@linuxprobe ~]# last

 

7.history  用于显示历史执行过的命令

格式为:history [选项]

选项:

-a将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
-c清空当前历史命令列表
-d删除历史命令列表中指定序号的命令
-n从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
-r读取命令历史文件到当前的Shell历史命令内存缓冲区
-s将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令
-w把当前的shell历史命令内存缓冲区的内容写入命令历史文件

实例:

[root@linuxprobe ~]# history

历史命令会被保存到用户家目录中的.bash_history 文件中。Linux 系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat 命令查看其文件内容。

[root@linuxprobe ~]# cat ~/.bash_history

要清空当前用户在本机上执行的 Linux 命令历史记录信息,可执行如下命令:

[root@linuxprobe ~]# history -c

 

8.sosreport 命令 用于收集系统配置及架构信息并输出诊断文档

格式为:sosreport

实例:

[root@linuxprobe ~]# sosreport

sosreport (version 3.0)

This command will collect diagnostic and configuration information from

this Red Hat Enterprise Linux system and installed applications.

An archive containing the collected information will be generated in

/var/tmp and may be provided to a Red Hat support representative.

Any information provided to Red Hat will be treated in accordance with

the published support policies at:

https://access.redhat.com/support/

The generated archive may contain data considered sensitive and its

content should be reviewed by the originating organization before being

passed to any third party.

No changes will be made to system configuration.

Press ENTER to continue, or CTRL-C to quit. 此处敲击回车来确认收集信息 

Please enter your first initial and last name [linuxprobe.com]: 此处敲击回车来确认主机编号 

Please enter the case number that you are generating this report for: 此处敲击回车来确认主机编号

Running plugins. Please wait ...

Running 70/70: yum...

Creating compressed archive...

Your sosreport has been generated and saved in:

/var/tmp/sosreport-linuxprobe.com-20170905230631.tar.xz

The checksum is: 79436cdf791327040efde48c452c6322

Please send this file to your support representative.

 

 

三、工作目录切换命令 

 

1.pwd 命令 用于显示用户当前所处的工作目录

格式为:pwd [选项]

实例:

[root@linuxprobe etc]# pwd

 

2.cd 命令 用于切换工作路径

格式为:cd [目录名称]

~ 代表用户的家目录

- 代表上次所在目录

. 代表当前目录

.. 代表上级目录

 

3.ls 命令 用于显示目录中的文件信息

格式为:ls [选项] [文件] 

选项:

     -a 显示所有文件

     -d 显示目录信息

     -h 人性化显示,按照我们习惯的单位显示文件大小

     -i 显示文件的i节点号

     -l 长格式显示

实例:

[root@linuxprobe etc]# ls -a

 

四、文本文件编辑命令

 

1.cat 命令 用于查看纯文本文件(内容较少的)

格式为:cat [选项] [文件]

选项:

-n显示行数(空行也编号)
-s显示行数(多个空行算一个编号)
-b显示行数(空行不编号)
-E每行结束处显示$符号
-T将TAB字符显示为 ^I符号
-v使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
-e等价于”-vE”组合
-t等价于”-vT”组合
-A等价于 -vET组合
--help显示帮助信息
--version显示版本信息

实例:

查看文件的内容:

[root@linuxcool ~]# cat filename.txt

查看文件的内容,并显示行数编号:

[root@linuxcool ~]# cat -n filename.txt

查看文件的内容,并添加行数编号后输出到另外一个文件中:

[root@linuxcool ~]# cat -n linuxcool.log > linuxprobe.log 

清空文件的内容:

[root@linuxcool ~]# cat /dev/null > /root/filename.txt

持续写入文件内容,碰到EOF符后结束并保存:

[root@linuxcool ~]# cat > filename.txt <<EOF
> Hello, World 
> Linux!
> EOF

 

2.more  用于查看纯文本文件(内容较多的)

格式为:more [选项] 文件

选项:

-num指定每屏显示的行数
-lmore在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性
-f 计算实际的行数,而非自动换行的行数
-p先清除屏幕再显示文本文件的剩余内容
-c与-p相似,不滚屏,先显示内容再清除旧内容
-s多个空行压缩成一行显示
-u禁止下划线
+/pattern在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示

实例:

显示文件file的内容,显示之前先清屏,附已显示的百分比:

[root@linuxcool ~]# more -dc file 

显示文件file的内容,每10行显示一次,而且在显示之前先清屏:

[root@linuxcool ~]# more -c -10 file 

显示文件file的内容,每5行显示一次,而且在显示之后再清屏:

[root@linuxcool ~]# more -p -5 file 

逐页显示 file 文档内容,如有连续两行以上空白行则以一行空白行显示 :

[root@linuxcool ~]# more -s file 

 

3. head  用于查看纯文本文档的前 N

格式为:head [选项] [文件]

选项:

-n后面接数字,代表显示几行的意思
-c指定显示头部内容的字符数
-v总是显示文件名的头信息
-q不显示文件名的头信息

实例:

显示文件前5个字符:

[root@linuxcool ~]# head -c 5 test.txt 
hello

 

4.tail  用于查看纯文本文档的后 N 行或持续刷新内容

格式为:tail [选项] [文件]
 

选项:


--retry
即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用

-c<N>或——bytes=<N>
输出文件尾部的N(N为整数)个字节内容

-f<name/descriptor>
--follow<nameldescript>:显示文件最新追加的内容

-F
与选项“-follow=name”和“--retry”连用时功能相同

-n<N>或——line=<N>
输出文件的尾部N(N位数字)行内容

--pid=<进程号>
与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令

--help
显示指令的帮助信息

--version
显示指令的版本信息

实例:

显示文件file的最后10行:

[root@linuxcool ~ ]  tail file

显示文件file的内容,从第20行至文件末尾:

[root@linuxcool ~ ]  tail +20 file 

 

5.tr  用于替换文本文件中的字符

格式为:tr [选项] [原始字符] [目标字符]

选项:

-c选定字符串1中字符集的补集,即反选字符串1的补集
-d删除字符串1中出现的所有字符
-s删除所有重复出现的字符序列,只保留一个

实例:

实现大小字母的呼唤:

 [root@linuxcool ~]# tr "[a-z]" "[A-Z]" <file_1 

删除file_1中的小写字母:

[root@linuxcool ~]# tr -d "[a-z]" <file_1
 

6.wc  用于统计指定文本的行数、字数、字节数

格式为:wc [选项] 文本
 
选项:
 
-w统计字数,或--words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-c统计字节数,或--bytes或--chars:只显示Bytes数
-l统计行数,或--lines:只显示列数
-m统计字符数
-L打印最长行的长度
--help显示帮助信息
--version显示版本信息
实例:
 

统计行数:

[root@linuxcool ~]# wc -l test.txt 
打印最长行的长度:
[root@linuxcool ~]# wc -L test.txt 
 

7.stat  用于查看文件的具体存储信息和时间等信息

格式为 :stat [选项] 文件名称
 
选项:
 
-L支持符号链接
-f显示文件系统的信息
-t以简洁的方式输出

实例:

查看文件 anaconda-ks.cfg 的三种时间状态:Access,Modify,Change:

[root@linuxcool ~]# stat anaconda-ks.cfg 

查看文件系统信息:

[root@linuxcool ~]# stat -f anaconda-ks.cfg

 

8.cut  用于按“列”提取文本字符

格式为:cut [选项] [文件]

选项:

-b以字节为单位进行分割 ,仅显示行中指定直接范围的内容
-c以字符为单位进行分割 , 仅显示行中指定范围的字符
-d自定义分隔符,默认为制表符”TAB”
-f显示指定字段的内容 , 与-d一起使用
-n取消分割多字节字符
--complement补足被选择的字节、字符或字段
--out-delimiter指定输出内容是的字段分割符

实例:

假设有一个学生报表信息,包含 No、Name、Mark、Percent:

[root@linuxcool ~]# cat student.txt 

使用 -f 选项提取指定字段(这里的 f 参数可以简单记忆为 --fields的缩写):

[root@linuxcool ~]# cut -f 2 student.txt
 

9.diff  用于比较多个文本文件的差异

格式为:diff [选项] 文件
 
选项:
 
-adiff预设只会逐行比较文本文件
-b不检查空格字符的不同
-W在使用-y参数时,指定栏宽
-x不比较选项中所指定的文件或目录
-X您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件
-y以并列的方式显示文件的异同之处
 
实例:
 
比较两个文件:
 
[root@linuxcool ~]# diff log2014.log log2013.log 
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12

上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。

 

并排格式输出:

[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2014-03               | 2013-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-07               | 2013-08
2013-09                 2013-09
2013-10                 2013-10
2013-11               <
2013-12               <
[root@localhost test3]# diff log2013.log log2014.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2013-03               | 2014-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-08               | 2013-07
2013-09                 2013-09
2013-10                 2013-10
                      > 2013-11
                      > 2013-12

说明:

  • "|"表示前后2个文件内容有不同
  • "<"表示后面文件比前面文件少了1行内容
  • ">"表示后面文件比前面文件多了1行内容
 
 
 

五、文件目录管理命令

 

1.touch  用于创建空白文件或设置文件的时间 

格式为:touch [选项] [文件]

选项:

-a改变档案的读取时间记录
-m改变档案的修改时间记录
-r使用参考档的时间记录,与 --file 的效果一样
-c不创建新文件
-d设定时间与日期,可以使用各种不同的格式
-t设定档案的时间记录,格式与 date 命令相同
--no-create不创建新文件

实例:

创建空文件:

[root@linuxcool ~]# touch file.txt 

批量创建文件:

[root@linuxcool ~]# touch file{1..5}.txt 
[root@linuxcool ~]# ls
file1.txt file2.txt file3.txt file4.txt file5.txt 

 

2.mkdir  用于创建空白的目录

格式为:mkdir [选项] [目录]

选项:

-p递归创建多级目录
-m建立目录的同时设置目录的权限
-z设置安全上下文
-v显示目录的创建过程

实例:

在工作目录下,建立一个名为 dir 的子目录:

[root@linuxcool ~]# mkdir dir

在目录/usr/linuxcool下建立子目录dir,并且设置文件属主有读、写和执行权限,其他人无权访问

[root@linuxcool ~]# mkdir -m 700 /usr/linuxcool/dir

同时创建子目录dir1,dir2,dir3:

[root@linuxcool ~]# mkdir dir1 dir2 dir3

递归创建目录:

[root@linuxcool ~]# mkdir -p linuxcool/dir

 

3.cp  用于复制文件或目录

格式为:cp [选项] 源文件 目标文件

选项:

-f若目标文件已存在,则会直接覆盖原文件
-i若目标文件已存在,则会询问是否覆盖
-p保留源文件或目录的所有属性
-r递归复制文件和目录
-d当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l对源文件建立硬连接,而非复制文件
-s对源文件建立符号连接,而非复制文件
-b覆盖已存在的文件目标前将目标文件备份
-v详细显示cp命令执行的操作过程
-a等价于“dpr”选项

实例:

复制目录:

[root@linuxcool ~]# cp -R dir1 dir2/

将文件test1改名为test2:

[root@linuxcool ~]# cp -f test1 test2

复制多个文件:

[root@linuxcool ~]# cp -r file1 file2 file3 dir

交互式地将目录 /usr/linuxcool 中的所有.c文件复制到目录 dir 中:

[root@linuxcool ~]# cp -r /usr/linuxcool/*.c dir

 

4.mv  用于剪切文件或将文件重命名

格式为:mv [选项] 源文件 [目标路径|目标文件名]

选项:

-i若存在同名文件,则向用户询问是否覆盖
-f覆盖已有文件时,不进行任何提示
-b当文件存在时,覆盖前为其创建一个备份
-u当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

实例:

将文件file_1重命名为file_2:

[root@linuxcool ~]# mv file_1 file_2

将文件file移动到目录dir中 :

[root@linuxcool ~]# mv file /dir

将目录dir1移动目录dir2中(前提是目录dir2已存在,若不存在则改名):

[root@linuxcool ~]# mv /dir1 /dir2

将目录dir1下的文件移动到当前目录下:

[root@linuxcool ~]# mv /dir1/* .

 

5.rm  用于删除文件或目录

格式为:rm [选项] 文件
 
选项:
 
-f忽略不存在的文件,不会出现警告信息
-i删除前会询问用户是否操作
-r/R递归删除
-v显示指令的详细执行过程

实例:

删除前逐一询问确认:

[root@linuxcool ~]# rm -i test.txt.bz2 
rm: remove regular file `test.txt.bz2'? 

直接删除,不会有任何提示:

[root@linuxcool ~]# rm -f test.txt.bz2  

递归删除目录及目录下所有文件:

[root@linuxcool ~]# mkdir /data/log
[root@linuxcool ~]# rm -rf /data/log

 

6.dd  用于按照指定大小和个数的数据块来复制文件或转换文件

格式为:dd [选项]
 
选项:
 
-if输入文件的名称
of输出的文件名称
bs设置每个块的大小

实例:

将本地的/dev/hdb整盘备份到/dev/hdd:

[root@linuxcool ~]# dd if=/dev/hdb of=/dev/hdd 

将压缩的备份文件恢复到指定盘:

[root@linuxcool ~]# gzip -dc /root/image.gz | dd of=/dev/hdb 

由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备:

[root@linuxcool ~]# dd conv=ucase 

将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件:

[root@linuxcool ~]# dd if=testfile_2 of=testfile_1 conv=ucase 

修复硬盘:

[root@linuxcool ~]# dd if=/dev/sda of=/dev/sda 

 

7.file  用于查看文件的类型

格式为:file [选项] 文件名

选项:

-b列出辨识结果时,不显示文件名称 (简要模式)
-c详细显示指令执行过程,便于排错或分析程序执行的情形
常与 -m 一起使用,用来在安装幻数文件之前调试它
-f指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称
-L直接显示符号连接所指向的文件类别
-m指定魔法数字文件
-v显示版本信息
-z尝试去解读压缩文件的内容
-i显示MIME类别

实例:

显示文件类型:

[root@linuxcool ~]#  file install.log 
install.log: UTF-8 Unicode text 

显示文件类型,不显示文件名称:

[root@linuxcool ~]# file -b install.log 
UTF-8 Unicode text 

显示文件类型, 显示MIME类别,不显示文件名称:

[root@linuxcool ~]# file -b -i install.log 
text/plain; charset=utf-8 

显示符号链接的文件类型:

[root@linuxcool ~]#  ls -l /var/mail 
lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail  
[root@linuxcool ~]#  file /var/mail 
/var/mail: symbolic link to `spool/mail' 

显示符号连接所指向的文件类别:

[root@linuxcool ~]# file -L /var/mail 
/var/mail: directory 

 

 

六、打包压缩与搜索命令

1.tar  用于对文件进行打包压缩或解压

格式为:tar [选项] [文件] 

选项:

-A新增文件到以存在的备份文件
-B设置区块大小
-c建立新的备份文件
-C <目录>切换工作目录,先进入指定目录再执行压缩/解压缩操作,可用于仅压缩特定目录里的内容或解压缩到特定目录
-d记录文件的差别
-x从归档文件中提取文件
-t列出备份文件的内容
-z通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-Z通过compress指令处理备份文件
-f<备份文件>指定备份文件
-v显示指令执行过程
-r添加文件到已经压缩的文件
-u添加改变了和现有的文件到已经存在的压缩文件
-j通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
-v显示操作过程
-l文件系统边界设置
-k保留原有文件不覆盖
-m保留文件不被覆盖
-w确认压缩文件的正确性
-p保留原来的文件权限与属性
-P使用文件名的绝对路径,不移除文件名称前的“/”号
-N <日期格式>只将较指定日期更新的文件保存到备份文件里
-- -exclude=<范本样式>排除符合范本样式的文件
-- -remove-files归档/压缩之后删除源文件

实例:

将所有.jpg的文件打成一个名为all.tar的包:

[root@linuxcool ~]# tar -cf all.tar *.jpg

打包文件之后删除源文件:

[root@linuxcool ~]# tar -cvf linuxcool.tar linuxcool --remove-files

打包文件以后,以 gzip 压缩:

[root@linuxcool ~]# tar -zcvf log.tar.gz linuxcool.log
 
 

2.grep   用于在文本中执行关键词搜索,并显示匹配的结果

格式为:grep [选项] 文件
 
选项:
 
-i搜索时,忽略大小写
-c只输出匹配行的数量
-l只列出符合匹配的文件名,不列出具体的匹配行
-n列出所有的匹配行,显示行号
-h查询多文件时不显示文件名
-s不显示不存在、没有匹配文本的错误信息
-v显示不包含匹配文本的所有行
-w匹配整词
-x匹配整行
-r递归搜索
-q禁止输出任何结果,已退出状态表示搜索是否成功
-b打印匹配行距文件头部的偏移量,以字节为单位
-o与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

实例:

支持多文件查询并支持使用通配符:

[root@linuxcool ~]# grep zwx file_* /etc/hosts
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj

输出匹配字符串行的数量:

[root@linuxcool ~]$ grep -c zwx file_*
 file_1:2
 file_2:1
 file_3:0

列出所有的匹配行,并显示行号:

[root@linuxcool ~]# grep -n zwx file_*
 file_1:1:zwx
 file_1:4:zwx
 file_1:10:zwxddkjflkdjfdlkfjlsdkj
 file_2:2:zwx
 file_4:3:dkfjlzwxejfkje
 file_4:4:zwx djfkdjf
 file_4:5:zwxedkfgj

显示不包含模式的所有行:

[root@linuxcool ~]# grep -vc zwx file_*
 file_1:7                                
 file_2:4
 file_3:5
 file_4:2

不再显示文件名:

[root@linuxcool ~]# grep -h zwx file_*
 zwx
 zwx
 zwxddkjflkdjfdlkfjlsdkj
 zwx
 dkfjlzwxejfkje
 zwx djfkdjf
 zwxedkfgj

只列出符合匹配的文件名,不列出具体匹配的行:

[root@linuxcool ~]# grep -l zwx file_*
 file_1
 file_2
 file_4

不显示不存在或无匹配的文本信息:

[root@linuxcool ~]# grep  -s zwx file1 file_1
 file_1:zwx       
 file_1:zwx
 file_1:zwxddkjflkdjfdlkfjlsdkj
 [root@linuxcool ~]# grep zwx file1 file_1
 grep: file1: No such file or directory  
 file_1:zwx
 file_1:zwx
 file_1:zwxddkjflkdjfdlkfjlsdkj

递归搜索,不仅搜索当前目录,还搜索子目录:

[root@linuxcool ~]# grep -r zwx file_2 *
 file_2:zwx
 anaconda-ks.cfg:user --name=zwx --gecos="zwx"
 file_1:zwx
 file_1:zwx
 file_1:zwxddkjflkdjfdlkfjlsdkj
 file_2:zwx
 file_4:dkfjlzwxejfkje
 file_4:zwx djfkdjf
 file_4:zwxedkfgj
 initial-setup-ks.cfg:user --name=zwx --gecos="zwx"

匹配整词,以字面意思去解释他,相当于精确匹配:

[root@linuxcool ~]# grep zw* file_1
 zwx                       
 zwx
 zdkfjeld
 zw
 ze
 zwxddkjflkdjfdlkfjlsdkj
 [root@linuxcool ~]# grep -w zw* file_1
 zw

匹配整行,文件中的整行与模式匹配时,才打印出来:

[root@linuxcool ~]# grep -x zwx file_*
 file_1:zwx
 file_1:zwx
 file_2:zwx

不输出任何结果,已退出状态表示结果:

 [root@linuxcool ~]# grep -q zwx file_1
 [root@linuxcool ~]# echo $?
 0               
 [root@linuxcool ~]# grep -q zwx file_5
 [root@linuxcool ~]# echo $?
 1               
 [root@linuxcool ~]# grep -q zwx file5
 grep: file5: No such file or directory
 [root@linuxcool ~]# echo $?
 2   

查找一个文件中的空行和非空行:

[root@linuxcool ~]# grep -c ^$ file_1
 4              
 [root@linuxcool ~]# grep -c ^[^$] file_1
 15    

匹配任意或重复字符用“.”或“*”符号来实现:

[root@linuxcool ~]# grep ^z.x file_1
 zwx
 zwx
 zwxddkjflkdjfdlkfjlsdkj
[root@linuxcool ~]# grep ^z* file_6
 zwx
 dfkjd
                      
 zzdfjkd
 zz dfdww
 haha

 

3.find   用于按照指定条件来查找文件

 格式为:find [选项] [路径] [查找和搜索范围]
 
选项:
 
-name按名称查找
-size按大小查找
-user按属性查找
-type按类型查找
-iname忽略大小写
-exec …… {}\;
后面可跟用于进一步处理搜索结果的命令

实例:

使用-name参数查看/etc目录下面所有的.conf结尾的配置文件:

[root@linuxcool ~]# find /etc -name "*.conf

使用-size参数查看/etc目录下面大于1M的文件:

[root@linuxcool ~]# find /etc -size +1M

查找当前用户主目录下的所有文件:

[root@linuxcool ~]# find $HOME -print

列出当前目录及子目录下所有文件和文件夹:

[root@linuxcool ~]# find .

在/home目录下查找以.txt结尾的文件名:

[root@linuxcool ~]# find /home -name "*.txt"

在/var/log目录下忽略大小写查找以.log结尾的文件名:

[root@linuxcool ~]# find /var/log -iname "*.log"

搜索超过七天内被访问过的所有文件:

[root@linuxcool ~]# find . -type f -atime +7

搜索访问时间超过10分钟的所有文件:

[root@linuxcool ~]# find . -type f -amin +10

找出/home下不是以.txt结尾的文件:

[root@linuxcool ~]# find /home ! -name "*.txt"
在整个文件系统中找出所有归属于 linuxprobe 用户的文件并复制到 /root/findresults 目录:
 
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \; 

 

4.输入重定向中用到的符号及其作用

 
命令 < 文件
将文件作为命令的标准输入
命令 << 分界符
从标准输入中读入,直到遇见分界符才停止
命令 < 文件 1 > 文件 2
将文件 1 作为命令的标准输入并将标准输出到文件 2
 
 

5.输出重定向中用到的符号及其作用

 
命令 > 文件
将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件
将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件
将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件
将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1
命令 &>> 文件
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

 

6.管道符命令  | 把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入

格式为:命令 A | 命令 B
 
实例:
 
匹配关键词 /sbin/nologin 找出了所有被限制登录系统的用户:
 
[root@linuxprobe ~]# grep "/sbin/nologin" /etc/passwd | wc -l
用翻页的形式查看/etc 目录中的文件列表及属性信息:
 
[root@linuxprobe ~]# ls -l /etc/ | more
用一条命令来完成密码重置:
 
[root@linuxprobe ~]# echo "linuxprobe" | passwd --stdin root

 

7.命令行的通配符

通配符就是通用的匹配信息的符号,比如星号( * )代表匹配零个或多个字符,问号(? )代表匹配单个字符,中括号内加上数字 [0-9] 代表匹配 0 9 之间的单个数字的字符,而中括号内加上字母[abc] 则是代表匹配 a b c 三个字符中的任意一个字符。
 
实例:
 
匹配所有在 /dev 目录中且以 sda 开头的文件:
 
[root@linuxprobe ~]# ls -l /dev/sda*
查看文件名为 sda 开头,但是后面还紧跟其他某一个字符的文件的相关信息:
 
[root@linuxprobe ~]# ls -l /dev/sda?

 

8.常用的转义字符

4 个最常用的转义字符如下所示。
➢  反斜杠(\): 使反斜杠后面的一个变量变为单纯的字符串。
➢  单引号(''):转义其中所有的变量为单纯的字符串。
➢  双引号(""):保留其中的变量属性,不进行转义处理。
➢  反引号(``):把其中的命令执行后返回结果。

实例:

定义一个名为 PRICE 的变量并赋值为 5,然后输出以双引号括起来的字符串与变量信息

[root@linuxprobe ~]# PRICE=5
[root@linuxprobe ~]# echo "Price is $PRICE"
Price is 5
要想让第一个“ $ ”乖乖地作为美元符号,那么就需要使用反斜杠( \ )来进行转义,将这个命令提取符转义成单纯的文本,去除其特殊功能:
 
 
[root@linuxprobe ~]# echo "Price is \$$PRICE" 
Price is $5
而如果只需要某个命令的输出值时,可以像 ` 命令 ` 这样,将命令用反引号括起来,达到预期的效果。例如,将反引号与 uname -a 命令结合,然后使用 echo 命令来查看本机的 Linux版本和内核信息:
 
 
[root@linuxprobe ~]# echo `uname -a` 
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2017 
x86_64 x86_64 x86_64 GNU/Linux

 

 
 

七、用户管理和文件权限命令

 

1.useradd   用于创建新的用户

格式为:useradd [选项] 用户名
 
选项:
 
-D改变新建用户的预设值
-c添加备注文字
-d新用户每次登陆时所使用的家目录
-e用户终止日期,日期的格式为YYYY-MM-DD
-f用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1
-g指定用户对应的用户组
-G定义此用户为多个不同组的成员
-m用户目录不存在时则自动创建
-M不建立用户家目录,优先于/etc/login.defs文件设定
-n取消建立以用户名称为名的群组
-r建立系统帐号
-u指定用户id

实例:

添加新用户linuxcool:

[root@linuxcool ~]# useradd linuxcool

不创建家目录,并且禁止登陆:

[root@linuxcool ~]# useradd -M -s /sbin/nologin linuxcool

添加新用户linuxcool,指定UID为888,指定归属用户组为root,cool成员,其shell类型为/bin/sh:

[root@linuxcool ~]# useradd -u 888 -s /bin/sh -G root,cool linuxcool

添加新用户linuxcool,设置家目录为/tmp/linuxcool,用户过期时间为2020/09/01.过期后两天停权:

[root@linuxcool ~]# useradd -e "2020/09/01" -f 2 -d /tmp/linuxcool linuxcool

 

 

2.groupadd   用于创建用户组

格式为:groupadd [选项] 群组名
 
选项:
 
-g指定新建工作组的id
-r创建系统工作组,系统工作组的组ID小于500
-K覆盖配置文件“/ect/login.defs”
-o允许添加组ID号不唯一的工作组

实例:

使用-g参数新建linuxcool工作组名,1005是工作组id:

[root@linuxcool ~]# groupadd -g 1005 linuxcool

使用-r创建系统工作组:

[root@linuxcool ~]# groupadd -r -g 368 linuxcool

 

 

3.usermod   用于修改用户的属性

格式为:usermod [选项] 用户名

选项:
 
-c<备注>修改用户账号的备注文字
-d<登入目录>修改用户登入时的目录
-e<有效期限>修改账号的有效期限
-f<缓冲天数>修改在密码过期后多少天即关闭该账号
-g<群组>修改用户所属的群组
-G<群组>修改用户所属的附加群组
-l<账号名称>修改用户账号名称
-L锁定用户密码,使密码无效
-s<shell>修改用户登入后所使用的shell
-u<uid>修改用户ID
-U解除密码锁定
实例:
 

更改登陆目录:

[root@linuxcool ~]# usermod -d /home/hnlinux root

改变用户的uid:

[root@linuxcool ~]# usermod -u 777 root

修改用户名为linux:

[root@linuxcool ~]# usermod -l Linux linuxcool

锁定linuxcool的密码:

[root@linuxcool ~]# usermod -L linuxcool

解锁linuxcool的密码:

[root@linuxcool ~]# usermod -U linuxcool

 

 
 

4.passwd   用于修改用户密码、过期时间、认证信息等

格式为:passwd [选项] [用户名] 

选项:
 
-d删除密码
-l锁定用户密码,无法被用户自行修改
-u解开已锁定用户密码,允许用户自行修改
-e密码立即过期,下次登陆强制修改密码
-k保留即将过期的用户在期满后能仍能使用
-S查询密码状态
 
实例:
 

修改当前登陆的账户密码:

[root@linuxcool ~]# passwd

修改其他用户密码(假设有linuxprobe用户):

[root@linuxcool ~]# passwd linuxcool

锁定密码不允许用户修改:

[root@linuxcool ~]# passwd -l linuxcool

解除锁定密码,允许用户修改:

[root@linuxcool ~]# passwd -u linuxcool

下次登陆强制改密码:

[root@linuxcool ~]# passwd -e linuxcool

清除登录密码。清除之后登录时无需密码,风险极大,不推荐使用:

[root@linuxcool ~]# passwd -d linuxcool

查询密码状态:

[root@linuxcool ~]# passwd -S linuxcool
 

5.userdel   用于删除用户

格式为:userdel [选项] 用户名

选项:
 
-f强制删除用户账号
-r删除用户主目录及其中的任何文件
-h显示命令的帮助信息
实例:
 

删除用户,但不删除其家目录及文件:

[root@linuxcool ~]# userdel linuxcool

删除用户,并将其家目录及文件一并删除:

[root@linuxcool ~]# userdel -r linuxcool

强制删除用户:

[root@linuxcool ~]# userdel -f linuxcool

6.  文件权限与归属

在Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分,常见的字符如下所示

  - :普通文件。
d :目录文件。
  l :链接文件。
b :块设备文件。
c :字符设备文件。
p :管道文件。
 
文件的读、写、执行权限可以简写为 rwx ,亦可分别用数字 4 2 1 来表示,文件所有者,所属组及其他用户权限之间无关联
 

 

通过ls命令查看到的文件属性信息:

 

在Linux中执行命令 ls -l(以列表的形式显示文件)后,文件中各个信息代表的含义:

 

 

文件的特殊权限

SUID

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。

查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。另外有读者会好奇,那么如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S。

SGID

SGID主要实现如下两种功能:

让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);

在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。例在目录设置SGID,则用户在该目录创建文件,文件的默认的用户组将由用户自己的基本用户组变为目录的所属组,使得同组内的其他用户都能访问该文件。

SBIT
 
确保用户只能删除自己的文件,而不能删除其他用户的文件。如果赋予了SBIT权限,则其他用户中的可执行权限位会从x/-变为t/T
 
 

7.chattr   用于设置文件的隐藏权限

格式为:chattr [选项] 文件
 
选项:
 
-R递归处理目录下的所有文件
-v设置文件或目录版本
-V显示指令执行过程
+开启文件或目录的该项属性
--关闭文件或目录的该项属性
=指定文件或目录的该项属性
实例:
 

用chattr命令防止系统中某个关键文件被修改(加锁):

[root@linuxcool ~]# chattr +i /etc/resolv.conf

解锁:

[root@linuxcool ~]# chattr -i /home/omd/h.txt  
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
[root@linuxcool ~]# chattr +a /var/log/messages

 

8.chmod   用于改变文件或目录权限

格式为:chmod [选项]  权限模式 文件名 
 

权限模式: [ugoa][[=+-][perms]]   [用户身份][[赋予方式][权限]]

用户身份:

u :所有者(所属者)

g:所属组

o:其他人

a:所有人

 
选项:
 
-c若该文件权限确实已经更改,才显示其更改动作
-f若该文件权限无法被更改也不显示错误讯息
-v显示权限变更的详细资料
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
实例:
 

将档案 file1.txt 设为所有人皆可读取:

[root@linuxcool ~]# chmod a+r file.txt  

将目前目录下的所有文件与子目录皆设为任何人可读取 :

[root@linuxcool ~]# chmod -R a+r * 

将 file.txt 设定为只有该文件拥有者可以执行:

[root@linuxcool ~]# chmod u+x file.txt

 

9.chgrp   用于更改文件用户组

格式为:chgrp [选项] 文件
 
选项:
 
-c效果类似”-v”参数,但仅回报更改的部分
-f不显示错误信息
-h对符号连接的文件作修改,而不更动其他任何相关文件
-R递归处理,将指定目录下的所有文件及子目录一并处理
-v显示指令执行过程
--reference把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
 
实例:
 

改变文件的群组属性:

[root@linuxcool ~]# chgrp -v linuxcool file

根据指定文件改变文件的群组属性:

[root@linuxcool ~]# chgrp --reference=file_1 file_2

将/usr/linuxcool及其子目录下的所有文件的用户组改为cool:

[root@linuxcool ~]# chgrp -R cool /usr/linuxcool

 

10.chown   用于改变文件或目录用户和用户组

格式为:chown [选项] 所有者:所属组(要改为的用户组) 文件或目录
 
选项:
 
-R对目前目录下的所有文件与子目录进行相同的拥有者变更
-c若该文件拥有者确实已经更改,才显示其更改动作
-f若该文件拥有者无法被更改也不要显示错误讯息
-h只对于连结(link)进行变更,而非该 link 真正指向的文件
-v显示拥有者变更的详细资料
 
实例:
 

将test.txt文件用户组与用户都改为bin:

[root@linuxcool ~]# ll test.txt.bz2 
-rw-r--r-- 1 root root 56 Jul 22 20:17 test.txt.bz2
[root@linuxcool ~]# chown bin:bin test.txt.bz2    
[root@linuxcool ~]# ll test.txt.bz2
-rw-r--r-- 1 bin bin 56 Jul 22 20:17 test.txt.bz2

显示改动动作:

[root@linuxcool ~]# ll test.txt 
-rw-r--r-- 1 root root 45 Jul 22 21:11 test.txt
[root@linuxcool ~]# chown -c bin:bin test.txt 
changed ownership of `test.txt' to bin:bin

将当前目录下所有文件的拥有者都改为 linuxcool,用户组改为 linuxcoolgroup:

[root@linuxcool ~]# chown -R linuxcool:linuxcoolgroup *  

 

参考:

《Linux就该这么学》

https://www.linuxcool.com/

整理不易,如有错误欢迎大佬指出!

 

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值