Linux初识及常用命令

时间:2022-10-18 14:03:59


 持续更新中!!

环境:contos7

一、目录结构

在linux系统中,一切皆文件

目录

说明

/

根目录,所有文件都在

bin

存放常用的程序文件(命令文件)

boot

存放引导系统启动的文件(boot配置文件,内核和其它启动时所需的文件)

dev

存储设备文件

etc

存放系统配置有关的文件

home

存放普通用户目录

lib

系统所需要的那些命令位于此目录,比如 ls、cp、mkdir等命令

mnt

硬盘上手动挂载的文件

opt

存放某些大型软件或者某些特殊软件的目录

proc

操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里

root

系统管理员(root user)的目录

run

代替/var/run 目录

sbin

大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令

sys

和proc一样,虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统生成的,该目录的文件不在硬盘上而在内存中

tmp

临时目录

usr

在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具

var

用于存放经常变动的文件,包括各种日志、数据文件

/var/cache

应用程序缓存数据(可以被删除而不导致数据丢失)

/var/lib

状态信息,由系统在运行时维护的持久性数据

/var/log

日志文件

/var/lock

锁文件

/var/run

自最后一次启动以来运行中的系统信息

/var/tmp

在系统重启过程中可以保留的临时文件

二、语言环境

查看系统语言环境

locale

locale -a (查看全部)

Linux初识及常用命令

Linux初识及常用命令

编辑

三、软件安装

在centos7中,使用yum可以实现软件的自动下载、安装、配置,可以使用yum -h查看帮助

不同的系统安装命令不一样,在ubantu中,是使用 atp-get安装

yum -h

执行结果

for removing docs/lanuages for minimal hosts.
fssnapshot Creates filesystem snapshots, or lists/deletes current snapshots.
groups 显示或使用、组信息
help 显示用法提示
history 显示或使用事务历史
info 显示关于软件包或组的详细信息
install 向系统中安装一个或多个软件包
langavailable Check available languages
langinfo List languages information
langinstall Install appropriate language packs for a language
langlist List installed languages
langremove Remove installed language packs for a language
list 列出一个或一组软件包
load-transaction 从文件名中加载一个已存事务
makecache 创建元数据缓存
provides 查找提供指定内容的软件包
reinstall 覆盖安装软件包
repo-pkgs 将一个源当作一个软件包组,这样我们就可以一次性安装/移除全部软件包。
repolist 显示已配置的源
search 在软件包详细信息中搜索指定字符串
shell 运行交互式的 yum shell
swap Simple way to swap packages, instead of using shell
update 更新系统中的一个或多个软件包
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo Acts on repository update information
upgrade 更新软件包同时考虑软件包取代关系
version 显示机器和/或可用的源版本。


Options:
-h, --help 显示此帮助消息并退出
-t, --tolerant 忽略错误
-C, --cacheonly 完全从系统缓存运行,不升级缓存
-c [config file], --config=[config file]
配置文件路径
-R [minutes], --randomwait=[minutes]
命令最长等待时间
-d [debug level], --debuglevel=[debug level]
调试输出级别
--showduplicates 在 list/search 命令下,显示源里重复的条目
-e [error level], --errorlevel=[error level]
错误输出级别
--rpmverbosity=[debug level name]
RPM 调试输出级别
-q, --quiet 静默执行
-v, --verbose 详尽的操作过程
-y, --assumeyes 回答全部问题为是
--assumeno 回答全部问题为否
--version 显示 Yum 版本然后退出
--installroot=[path] 设置安装根目录
--enablerepo=[repo] 启用一个或多个软件源(支持通配符)
--disablerepo=[repo] 禁用一个或多个软件源(支持通配符)
-x [package], --exclude=[package]
采用全名或通配符排除软件包
--disableexcludes=[repo]
禁止从主配置,从源或者从任何位置排除
--disableincludes=[repo]
disable includepkgs for a repo or for everything
--obsoletes 更新时处理软件包取代关系
--noplugins 禁用 Yum 插件
--nogpgcheck 禁用 GPG 签名检查
--disableplugin=[plugin]
禁用指定名称的插件
--enableplugin=[plugin]
启用指定名称的插件
--skip-broken 忽略存在依赖关系问题的软件包
--color=COLOR 配置是否使用颜色
--releasever=RELEASEVER
在 yum 配置和 repo 文件里设置 $releasever 的值
--downloadonly 仅下载而不更新
--downloaddir=DLDIR 指定一个其他文件夹用于保存软件包
--setopt=SETOPTS 设置任意配置和源选项
--bugfix Include bugfix relevant packages, in updates
--security Include security relevant packages, in updates
--advisory=ADVS, --advisories=ADVS
Include packages needed to fix the given advisory, in
updates
--bzs=BZS Include packages needed to fix the given BZ, in
updates
--cves=CVES Include packages needed to fix the given CVE, in
updates
--sec-severity=SEVS, --secseverity=SEVS
Include security relevant packages matching the
severity, in


Linux初识及常用命令

示例:

yum install tree

运行结果

Linux初识及常用命令


Linux初识及常用命令

编辑

 由上图所示,可以帮你自动下载安装软件

四、常用快捷键

快捷键

说明

Tab 

1.单击一下:相关命令联想补全 

2.连击两下:  列出当前目录下的所有文件

Ctrl + L

清屏

Ctrl + K

删除当前光标所谓位置之后的所有内容

Ctrl + U

删除当前光标所在位置之前的所有内容(删除到初始位置)

Ctrl + W

删除当前光标所在位置之前的内容(删除到有空格的位置)

Ctrl + Y

粘贴Ctrl + K、Ctrl + U、Ctrl + W清除的部分内容

Ctrl + A

将光标移动至最前面

Ctrl + E

将光标移动至最后面

Ctrl + L       

搜寻至今最后执行的命令内容

Ctrl + C

结束当前操作

五、常用命令(以下演示命令以root角色演示 )

1.获取命令的帮助信息

上面已经提到了-h命令可以查看命令的使用帮助。但是有时候不准确。可以使用以下的几个命令查看更详细的命令帮助,以下以yum为例

yum -h (yum -help)

查看关yum命令的简单用法

info yum

查看关于yum命令的更详细用法

man yum(推荐使用)

查看关于yum命令的更详细用法

2.date (时间)

对时间进行操作

date 

运行结果

Linux初识及常用命令


Linux初识及常用命令

编辑

使用 man date 查看命令帮助,以下仅部分帮助,其它请自行查看(多使用man 方法查看指令帮助)

Linux初识及常用命令


Linux初识及常用命令

编辑

 部分示例:

指令示例

说明

结果

date +%x

年月日输出

2022年03月09日

date -s 20230301

对日期进行设置,改为2023年3月1号,但是会把具体时间设置为00:00:00

2023年 03月 01日 星期三 00:00:00 CST

date -s 12:11:11

设置具体时间

2023年 03月 01日 星期三 12:11:11 CST

date -s '16:55:23 2022-03-09'

设置日期和时间

2022年 03月 09日 星期三 16:55:23 CST

3.cal  (日历)

部分示例:

指令示例

说明

结果

cal

 显示一个简单的日历..  如果没有指定参数, 则显示当前月份.

Linux初识及常用命令


Linux初识及常用命令

cal -m

 显示星期一作为一周的第一天..  (缺省为星期日.)

Linux初识及常用命令



cal -y 

 显示当前年份的日历

Linux初识及常用命令




cal -j

 显示儒略历的(Julian)日期 (以 1 为基的天数, 从 1 月 1 日开始计数) .

Linux初识及常用命令




4.tzselect  时区设置

tzselect 

Linux初识及常用命令


Linux初识及常用命令

编辑

5.clear(清屏)

clear

Linux初识及常用命令


Linux初识及常用命令

编辑

6.注销、关机

指令

说明

示例

logout           

注销                  

Linux初识及常用命令


编辑


reboot

重启(立即)

shutdown

以一种安全的方式关闭系统,所有登陆用户都可以看到关机信息提示(更多用法可以使用man shutdown 查看)

Linux初识及常用命令


编辑


shutdown -r                               

重启:

shutdown -r (默认一分钟后重启)

shutdown -r now    (立即重启)

shutdown -r +5 (五分钟后重启)

shutdown -r '22:00' (22点重启)

shutdown -h

停机:

shutdown -h (默认一分钟后停机)

shutdown -h now    (立即停机)

shutdown -h +5 (五分钟后停机)

shutdown -h '22:00' (22点停机)

shutdown -c 

shutdown -c '正在使用,请勿关机'

(可以在命令行输入一条解释消息来向所有用户说明)

取消运行中的shutdown进程(取消重启或关机)

Linux初识及常用命令


编辑


7.cd (切换目录)

指令示例

说明

cd 

切换目录

cd #(cd ~)

切换到当前用户的家目录

cd /home

切换到home目录

cd ..

切换到上一级目录

8. pwd(查看当前的工作路径)

pwd

9.passwd(更改用户密码)

passwd

指令

说明             

passwd

修改当前用户的密码

passwd  lvyq

修改lvyq账户的密码(只有root权限才可以指定用户名)

10.ls(查看当前目录下的子目录及文件)

ls

指令

说明             

示例

ls

显示当前目录下文件

Linux初识及常用命令


编辑


ls -a

显示当前目录下文件包括隐藏文件以及当前目录上级目录(. ..)

ls -A

显示当前目录下文件包括隐藏文件不包含当前目录上级目录(. ..)

ls /usr

显示指定目录下的文件 (根目录下的usr目录)

ls -l (ll)

查看当前目录下文件的详细信息(操作权限,所属用户,字节,时间等信息)

Linux初识及常用命令


编辑


ls -lh

与ls -l一样的效果,不过字节变成了文件的大小

ls -lht



ls -lhtr

1.ls -lht 按时间将文件排序(倒序)

2.ls -lhtr 按时间将文件排序(正序) 

Linux初识及常用命令


编辑


ls -R

遍历目录文件

如果文件是以  . 开头的话,则表示该文件为隐藏文件

11.mkdir(建立目录)

mkdir 

 缺省时,新建立的目录模式为0777,即不加保护地对所有人 都可读、可写、可执行指令

指令说明

说明

mkdir lvyq

在当前目录下创建目录lvyq

mkdir  -p lvyq/lv/yq

在当前目录下创建多级目录(lvyq/lv/yq)

                                                           

12.touch(修改文件的时间戳记)

修改每个指定文件  file 的存取(access)和/或修改(modification)时间戳记.除非使用-r或-t选项,这些时间戳记都将修改为当前的时间

(当文件不存在时会创建文件)

指令

说明

示例

touch  touch.txt

修改touch.txt文件时间

不存在时创建文件

Linux初识及常用命令


编辑


存在时更新文件时间

Linux初识及常用命令


编辑


touch  -c touch2.txt

文件不存在时不创建文件

Linux初识及常用命令


编辑


touch -r touch.txt touch2.txt

将touch.txt的时间更新至touch2.txt

Linux初识及常用命令


编辑


touch -t '2101011111.11' touch2.txt

使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数:     [[CC]YY]MMDDhhmm[.SS]

 这里,CC为年数中的前两位,即“世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch将把年数CCYY限定在1969--2068之内.MM为月数,DD为天   将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh为小时数(几点),mm为分钟数,SS为秒数.此处秒    的设定范围是0--61,这样可以处理闰秒.这些数字组成 的时间是环境变量TZ指定的时区中的一个时间.由于系统 的限制,早于1970年1月1日的时间是错误的.

Linux初识及常用命令


编辑


注:touch 命令仅修改时间,不对文件内容修改

13.rm(移除文件或者目录)

  rm移除每个给定的文件。默认情况下,它不能移除目录。但是当给定了-r或者-R选项时,在指定目录之下的整个目录树都会被移除(而且对通过`rm -r'能够移除的目录树深度是没有限制的)。当文件路径末端部分只有.和..时会出错(因此可用`rm -r .*'之类来避免这些不愉快的诧异)。 如果给定了-i选项,或者如果一个文件不可写,而且标准输入是终端,又没有给定-f选项,那么rm会提示用户是否要删除该文件,它写一个问题到stderr并且从stdin读入一个应答。 如果应答是否定的,该文件将被跳过。

指令

说明        

示例演示

rm a.txt

删除文件a.txt

Linux初识及常用命令


编辑


rm -f a.txt

删除文件a.txt,不作确认提示。

Linux初识及常用命令


编辑


rm -r 

 递归地移除目录树

一级目录a

Linux初识及常用命令


编辑


多级目录:a/b/c

Linux初识及常用命令


编辑


rm -rf a

删除目录a下所有文件

14.mv( 移动 (改名) 文件) 

改“源文件”名到“目标文件”名, 或移动“源文件”(可以不只一 个)到一个“目录”。

指令

说明

示例演示

mv  file1 file2

file1,file2为文件时


覆盖


Linux初识及常用命令


编辑


重命名

Linux初识及常用命令


编辑


mv  file1 file2

file1 为文件,file2为目录

移动

mv file1.txt file2/

将file1.txt移动至file2目录下

file1,file2都为目录时

mv file1 file2

目录file1以及下面的所有文件,移动至file2目录下(相当于win上将文件夹1剪切至文件夹2)

mv /user/lv.txt   /dev/

将目录user下的lv.txt文件,移动至dev目录下

ps其它相关命令请用man mv 自行查看

15.cp(复制文件和目录)

指令

说明

示例演示

cp file1 file2

复制文件a.txt,并将命名为b.txt

Linux初识及常用命令


编辑


覆盖(当file2存在时会提示覆盖)

Linux初识及常用命令


编辑


cp file1 file2

cp /user/a.txt /dev  

复制user目录下的a.txt文件到dev目录下

cp /user/a.txt /dev/b.txt

复制user目录下的a.txt文件到dev目录下并命名为b.txt

16.stat(打印信息节点(inode)内容)

指令

说明

示例演示

stat /a

查看目录a的信息(也可查看具体文件)

Linux初识及常用命令


编辑


17.cat (查看文件)

连接文件并在标准输出上输出

cat

指令

选项

说明

示例演示

cat

查看文件内容

示例

cat cat.txt 

Linux初识及常用命令


编辑





-b

 给非空输出行编号。

示例

cat -b cat.txt

Linux初识及常用命令


编辑


-E

 在每行结束显示 $

示例

cat -E cat.txt

Linux初识及常用命令


编辑


-n

 给所有输出行编号

示例

cat -n cat.txt

Linux初识及常用命令


编辑


-s 

将所有的连续的多个空行替换为一个空行。

示例

cat -s cat.txt

Linux初识及常用命令



编辑


18.tac(反转显示文件)

选项

说明

示例演示

tac

反转显示文件

示例

tac cat.txt 

Linux初识及常用命令


编辑






-b

 把分隔单元移到前面, 而不是后面

示例

tac -b cat.txt

Linux初识及常用命令


编辑



ps:其它相关指令不常用,不一一列举了

19.wc( 输出文件中的行数、单词数、字节数)

指令

选项

说明

示例

wc

输出文件中的行数、单词数、字节数

Linux初识及常用命令


编辑


-c

 输出字节统计数

-l

 输出换行符统计数

-L

 输出最长的行的长度

-w

 输出单词统计数

20.sort(对文本文件的行排序)

创建文件sort1.txt 和文件sort2.txt(为了便于区分,内容末尾分别加上-1,-2),内容如下图所示:

   sort1.txt 

Linux初识及常用命令


Linux初识及常用命令

编辑


 sort2.txt

Linux初识及常用命令


Linux初识及常用命令

编辑

sort file1   (对一个文件排序)

sort file1 file2 .. (对多个文件内容排序,并合并输出)

以下示例以两个文件为例

指令

选项

说明

示例

sort

对文本文件的行排序

示例

sort sort1.txt sort2.txt

Linux初识及常用命令


编辑


-b

 忽略排序字段或关键字中开头的空格

-c

 检查是否指定文件已经排序好了,不排序(只能对一个文件操作

示例

sort -c  sort1.txt

Linux初识及常用命令


编辑



-d

 在关键字中只考虑[a-zA-Z0-9]字符

-g

  按照通常的数字值顺序作比较,暗含-b

示例

sort -g  sort1.txt sort2.txt

Linux初识及常用命令


编辑



-m

 合并已经排序好的文件,不排序

示例

sort -m  sort1.txt sort2.txt

Linux初识及常用命令


编辑


-M

按(未知的)<`JAN'<...<`DEC'的顺序比较,暗含-b

示例

sort -M  sort1.txt sort2.txt 

Linux初识及常用命令


编辑



-r

 颠倒比较的结果

示例

sort -r  sort1.txt sort2.txt

Linux初识及常用命令


编辑




-s

通过屏蔽最后的再分类比较来稳定排序

示例

sort -s  sort1.txt sort2.txt 

Linux初识及常用命令


编辑


 -u

 如果有-c,则按严格的顺序进行检查; 如果有-m,则只输出相等顺序的第一个

示例

sort -u  sort1.txt sort2.txt

Linux初识及常用命令


编辑



-z

 以0字节结束行,而不是使用换行符,这是为了找到-print0

示例

sort -z  sort1.txt sort2.txt 

Linux初识及常用命令


编辑



 -o

将结果写入FILE而不是标准输出

sort -o file1 file2 

对文件file2中的内容排序并输入到文件file1中(当file1存在时,将覆盖file1中的内容)

示例1

sort -o  sort.txt sort2.txt 

结果:

Linux初识及常用命令


编辑


对sort2.txt中的内容排序并将排序内容输入到sort.txt中


示例2

sort -o  sort1.txt sort2.txt 

结果

Linux初识及常用命令


编辑


当sort1.txt存在时,使用此命令发现此命令是将sort2.txt的内容排序后覆盖到了sort1.txt中

21.uniq(忽略连续相似行)

uniq

 从 INPUT (或 标准输入) 数据 中 忽略 (但是 保留 一行) 连续的相似行, 结果 送入 OUTPUT (或 标准输出)

创建uniq.txt演示文件,内容如下:

Linux初识及常用命令


Linux初识及常用命令

编辑

指令

选项

说明

示例演示

uniq

忽略输出连续的重复行

示例:

uniq  uniq.txt

Linux初识及常用命令


编辑



-c

在行首显示出现的数目

 示例:

uniq -c uniq.txt

Linux初识及常用命令


编辑



 -d

仅显示 重复行

 示例:

uniq -d  uniq.txt

Linux初识及常用命令


编辑



 -D

显示 全部 重复行

 示例:

uniq -D  uniq.txt 

Linux初识及常用命令


编辑



 -f

 不比较 起初的 N 栏

 示例:

uniq -f uniq.txt


 -i

  比较时 忽略 大小写

 示例:

uniq -i uniq.txt 

Linux初识及常用命令


编辑



-u

仅显示 无重复行

 示例:

uniq -u uniq.txt

Linux初识及常用命令


编辑



 ps:其它相关指令不常用,不一一列举了

22.cut(在文件的每一行中提取片断

cut

为了方便演示创建cut.txt文件,内容如下

Linux初识及常用命令


Linux初识及常用命令

编辑

指令

选项

说明

示例演示

cut

-b

 输出每行的第几个字符

示例:

cut -b 2 cut.txt

Linux初识及常用命令


编辑




-c

输出区间字符

示例

cut -c 2,4 cut.txt (取第2和第4个字符)

cut -c 2-4 cut.txt  (取第二到第四之间字符)

cut -c 2-4,6 cut.txt (取第二到第四之间字符,和第6个字符)


Linux初识及常用命令


编辑



-d

 使用 DELIM 取代 TAB 做 字段(field) 分隔符

示例

 cut -d - -f 2  cut.txt

Linux初识及常用命令


编辑



这两个指令搭配着使用,上面的例子是:以-为分割符,并输出分割后的第2个字段

-f

 输出 字段

 ps:不常用,其它相关指令,不一一列举了,感兴趣的可以使用man cut查看帮助

23.tee(从标准输入写往文件和标准输出)

类型

默认情况

对应文件句柄位置

标准输入

从键盘输入到系统

(比如输入ll 命令就叫做标准输入)

/proc/self/fd/0

标准输出

输出内容到屏幕

(输出目录下文件到控制台就叫标准输出)

/proc/self/fd/1

错误输出

输出内容到屏幕

(输出错误信息到控制台)

/proc/self/fd/2

这里大概了解下,之后的shell重定向会详细了解

命令

选项

说明

示例演示

tee

标准输入写往标准输出演示

示例

tee

Linux初识及常用命令


编辑



标准输入写往文件

示例

tee tee.txt

Linux初识及常用命令


编辑


-a

追加到 给出的 文件, 而不是 覆盖

示例:

tee -a tee.txt

Linux初识及常用命令


编辑


24.history(查看执行过的命令)

指令

选项

说明

示例演示

history

默认显示最近的1000条命令

示例

history

num

显示最近的num条命令

示例

history 10

Linux初识及常用命令


编辑



!no

执行第no条命令

示例

!10

Linux初识及常用命令


编辑



!xx

执行最后一次以xx开头的命令

示例

!his

Linux初识及常用命令


编辑



25.more(在显示器上阅读文件的过滤器)

交互命令:

按键

行为

回车

一行一行的显示

空格

翻页显示

h or ?

 帮助: 显示命令的摘要

s

向前跳过 k 行文本. 缺省值 是 1

f

 向前跳过 k 屏文本. 缺省值 是 1

 b or ^B

向后跳回 k 屏文本. 缺省值 是 1

'

跳到 上一次 搜索 开始 的 地方

=

 显示当前行号

 ps:不常用,其它相关指令,不一一列举了,感兴趣的可以使用man more查看帮助

以下命令以演示文件为例

Linux初识及常用命令


Linux初识及常用命令

编辑

26.less(对文件或其它输出进行分页显示)

   与more命令作用类似,上面使用more对文件进行了演示,在less命令中对输出进行演示(演示命令同样适用于more

history |less     (history |more)

演示

Linux初识及常用命令


Linux初识及常用命令

编辑

 ps:不常用,其它相关指令,不一一列举了,感兴趣的可以使用man less查看帮助

27.head( 输出文件的开始部分)

在标准输出上显示每个FILE的起始10行.   如果多于一个FILE,则一个接一个地显示, 并且在每个文件显示的首部给出文件名.如果没有FILE,或者FILE为-, 那么就从标准输入上读取

指令

选项

说明

示例演示

head

示例

head head.txt head2.txt

Linux初识及常用命令


编辑



-c

打印起始的n个字节

示例

head -c 3 head.txt head2.txt

Linux初识及常用命令


编辑



-n

显示起始的NUMBER行,而非默认的起始10行

示例

head -n 4 head.txt head2.txt

Linux初识及常用命令


编辑



28.tail(输出文件的末尾部分)

  在标准输出上显示每个FILE的最后10行.    如果多于一个FILE,会一个接一个地显示,  并在每个文件显示的首部给出文件名.如果没有FILE,或者FILE是-,那么就从标准输入上读取.

命令

选项

说明

示例演示

tail

默认显示最后十行

示例

tail tail.log  

Linux初识及常用命令


编辑


--retry

  即使tail开始时就不能访问 或者在tail运行后不能访问,也仍然不停地尝试打开文件.  -- 只与-f合用时有用

-c

输出最后N个字节

示例

tail -c 100 tail.log 

Linux初识及常用命令


编辑


-f

 当文件增长时,输出后续添加的数据(实时监控日志文件

示例

tail -f tail.log



-n

 输出最后N行,而非默认的最后10行

示例

tail -n 3 tail.log

Linux初识及常用命令


编辑



ps:上面为常用命令,其它使用man tail查看帮助

帮助摘抄:《使用--follow  (-f)时,tail默认后接文件描述符,  这意味着即使tail显示的文件改名了,tail仍然可以  追踪到其末尾部分. 如果你确实希望查询文件的实际名而非文件描述符  (例如,日志轮转时), 这种默认的操作就不是你所期望的了. 在这种情况下应使用--follow=name. 这将导致tail通过周期性地重新打开所指定的文件来 追踪其是否被删除了,或者被其他程序重新创建了》

ps:常用命令,用于查看日志

29.which(查看命令所在位置)

查找当前环境中的命令所在位置(前提是命令可执行)

命令

选项

说明

示例演示

which

查找当前环境中的命令所在位置

示例

which tail

Linux初识及常用命令


编辑



ps:其它使用man which 查看帮助

30.chmod(改变目录及目录下的内容的访问权限)

通过ll查看文件会看到以下信息。

Linux初识及常用命令


Linux初识及常用命令

编辑

下面对所展现的信息简单图示:

Linux初识及常用命令


Linux初识及常用命令

编辑

以下以 drwxr-xr-x.  为例进行权限的讲解

Linux初识及常用命令


Linux初识及常用命令

编辑

文件类型:

-

普通文件

b

块设备文件

c

字符设备文件

d

目录文件

l

链接文件(相当于win上面的快捷方式)

p

管道文件

s

socket文件

文件权限:

权限

文件上的权限

目录上的权限

其它

r

可读权限

目录下的文件名是否可读

可以用数字4表示

w

可写权限

目录下的文件是否可以创建编辑

可以用数字2表示

x

可执行权限

目录是否可以被搜索

可以用数字1表示

-

无相应权限

可以用数字0表示

权限分组:

权限被分为了三组,分别是

u

user (文件所有者)

g

group(文件所有者所在的组)

o

other(user,group之外的用户)

a

所有

权限分配中,均是rwx的三个参数组合,且位置顺序不会变化。没有对应权限就用 – 代替

上面的例子表示:

目录文件,文件所有者是root,root用户对改目录文件拥有读写执行的操作权限,与root所在同一组的用户拥有读写的权限,其它用户拥有读的权限

修改权限:

使用chmod命令改变指定文件访问权限有两种方式:一种是用符号标记所进行更改,另一种方式是采用8进制数指定新的访问权限。

①用符号标记进行更改

使用下面的语法格式来使用符号改变方式
  [ugoa][[+-=][rwx]

操作符'+'使得用户选择的权限被追加到每个指定文件,(操作给指定文件添加所选权限);操作符'-'使得这些权限被撤消;'='使得 指定文件只具有这些权限。

以下以

----------. 1 root root  0 3 21 17:12 chmod.txt

 为例进行演示

指令

选项

说明

示例演示

chmod

  (u/g/o/a)+ (r/w/x)

加权限

示例

chmod a+r chmod.txt 

chmod u+w chmod.txt 

chmod g+x chmod.txt

chmod o+w chmod.txt

Linux初识及常用命令


编辑



  (u/g/o/a)  -  (r/w/x)

减权限

示例

chmod a-w chmod.txt

Linux初识及常用命令


编辑



  (u/g/o/a)  =  (r/w/x)

赋予相应权限,缺省则表示没有相应权限

示例

chmod a=wx chmod.txt

chmod a=rwx chmod.txt 

chmod a=rx chmod.txt

chmod a=- chmod.txt

Linux初识及常用命令


编辑


 (偷个懒,这里不在单独注释了)

除了上面的用法,还可以使用【,】组合使用权限

示例

chmod a+r,o+w chmod.txt 

chmod u-r,g+x chmod.txt 

Linux初识及常用命令


编辑



②用8进制数指定新的访问权限

 数字模式是一到4个八进制数,每个数由位权为4,2,1的3位叠加而得.被省略掉的数字缺省设置为零.

指令

选项

说明

示例演示

chmod

4,2,1

赋予相应权限

示例:

chmod 175 chmod.txt 

chmod 105 chmod.txt

chmod 77 chmod.txt

Linux初识及常用命令


编辑


其它:

以下命令可与上面两种指令组合使用

指令

选项

说明

示例演示

chmod

-R

为目录即目录下的所有子目录和文件赋权

示例

chmod -R a=rx chmod

Linux初识及常用命令


编辑


 由此看出,为chmod目录及以下所有文件目录赋予了a(所有)相同的rx权限


特殊权限(了解即可):

Linux初识及常用命令


Linux初识及常用命令

编辑

 除了rwx三种权限,还有一个s权限,这种权限通常称为 SetUID,简称 SUID 特殊权限。

SUID 特殊权限具有如下特点:

1.只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。

2.用户要对该文件拥有 x(执行)权限。

3.用户在执行该文件时,会以文件所有者的身份执行。

4.SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。

摘抄man chmod

Linux初识及常用命令


Linux初识及常用命令

编辑

ps:上面为常用命令,其它使用man chmod 查看帮助

31.chown(修改文件所有者和组别)

chown修改每个由第一个非选项参数声明的给定file(文件)的用户和/或组的所有权.如下:
如果只给出了用户名(或者数字用户标识),那么该用户即成为每个指定文件的所有者,而该文件的组别并不改变.如果用户名后面紧跟着冒号和组名(或者是数字组标识),并且它们之间没有空格,那么文件的组所有权也随之改变.

chown

指令

选项

说明

示例演示

chown

如果没有冒号,则只改变所有者

示例

chown lvyq chmod

Linux初识及常用命令


编辑



:

1.如果有一个冒号,却没有组名跟在用户名后,那么该用户即成为文件的所有者,而且文件的组改为该用户的登录组

2.如果给定了冒号以及组,但是省略了用户名,那么只有文件的组被修改

3.同时给定了用户名,冒号以及组,则改变文件相应的所有者和所属组

示例

chown lvyq: chmod

chown :root chmod

chown root:lvyq chmod

Linux初识及常用命令


编辑


.

除了使用:以外,还可以使用逗号

摘抄:

Linux初识及常用命令


编辑



示例

chown lvyq.root chmod

Linux初识及常用命令


编辑



32.用户和用户组

Linux是个多用户的系统

用户:不同的用户对系统有不同的操作权限

用户组:具有相同特征用户的逻辑集合

用户和用户组的相关信息会存储在系统文件中,以下列举相关文件并进行说明

文件

说明

示例说明

/etc/passwd

系统用户配置文件,存储了系统中所有用户的基本信息

cat  /etc/passwd

可以看到如下内容:

Linux初识及常用命令


编辑


由内容可以看出,该文件中存着许多用户,每一行对应着一个用户,同时可看到一些不是用来登录系统的用户,这些用户成为系统用户(伪用户),这些用户信息不能删除,删除的话可能导致依赖这些系统用户对应的服务无法使用。


示例说明:

root:x:0:0:root:/root:/bin/bash

每行用户信息以“:”为分割符,分割为七段,含义如下:

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

ps:该文件可以修改,将其它用户的uid修改为0,则可以将普通用户升级为超级管理员,反之亦然



用户名

密码

UID

GID

描述性信息

主目录

默认Shell

用户名仅是为了方便用户记忆,Linux 系统是通过 UID 来识别用户身份

x,表示用户有密码,但不是真正密码,密码存在/etc/shadow中

用户id,唯一,0表示超级用户, 1~99表示保其它预定义用户,100~999表示系统用户,1000之后表示普通用户

用户初始组的组 ID 号

没什么作用,

用户登录后有操作权限的访问目录,通常称为用户的主目录。

 Linux 的命令解释器

说白了,用户名并无实际作用,仅是为了方便用户的记忆而已

33.su

34.sudo

35.alias

36.