Linux入门篇——常见指令以及权限理解

Linux入门篇——常见指令以及权限理解

以centos7为背景,介绍linux入门经常会用到的指令以及权限的讲解

1 文件与目录

1.1 ls指令

语法ls[选项][目录或文件]

功能:对于目录,该命令列出该目录下所有子目录与文件。对于文件,列出文件名以及其他信息。

选项与参数

-a :全部的文件,连同隐藏文件(开头为"."的文件)一起列出来
-A :全部的文件,但是不包括"."和".."这两个目录
-d :仅列出目录
-h :将文件容量以人类较易读的方式列出来
-l :详细信息显示,包含文件属性与权限等数据
-n :列出UID和GID而非使用者与用户组的名称
-i :列出inode号码
-f :直接列出结果,不会进行排序(默认会以文件名排序)
-S :按照文件容量大小排序,而不是按照文件名排序
-t :按照时间排序

在Linux当中,这个命令是最常被用到的,下面是使用方法

[chakming@localhost ~]$ ls -l
[chakming@localhost ~]$ ls -a
[chakming@localhost ~]$ ls -al
[chakming@localhost ~]$ ls -al ~

ls其实是list列表的简写,选项前需要加上一个"-"的符号,选项可以一次性选多个,选项后面跟着你要对哪个文件使用这个命令,如果没有写,默认是当前文件下。

1.2 pwd指令

语法pwd

功能:显示用户当前所在的目录

选项与参数:无

[chakming@localhost ~]$ pwd
1.3 cd指令

语法cd 目录名

功能:改变当前目录。将当前工作目录改变到指定目录下。

选项与参数:无

在Linux中,这个也是最常用到的目录,Linux系统中,所有的东西都会被映射为文件或者目录。

Linux入门篇——常见指令以及权限理解_第1张图片

使用方法

[chakming@localhost ~]$ cd ..  返回上级目录
[chakming@localhost ~]$ cd /home/chakming 绝对路径
[chakming@localhost ~]$ cd ../day1/  相对路径
[chakming@localhost ~]$ cd ~ 进入到家目录
[chakming@localhost ~]$ cd - 返回最近访问目录
1.4 touch指令

语法touch[选项]文件名

功能:可以修改文件或目录的日期时间,包括存取时间和修改时间,或者是新建一个不存在的文件。

选项与参数

-a :只更改存取时间
-c :不建立任何文档
-d :使用指定日期时间,而非当前的时间
-m :只改变变动时间
1.5 mkdir指令

语法mkdir[选项]目录名

功能:在当前目录下创建一个目录

选项与参数

-p :递归建立多个目录

使用方法

[chakming@localhost ~]$ mkdir test01
[chakming@localhost ~]$ mkdir -p test02/test03
1.6 rmdir指令

rmdir是一个与mkdir相对应的命令。rmdir是删除命令。

语法rmdir[选项]目录名

功能:删除空目录

选项与参数

-p :递归删除多个目录

使用方法

[chakming@localhost ~]$ rmdir test01
[chakming@localhost ~]$ rmdir -p test02/test03
1.7 rm指令

rm命令是可以同时删除文件和目录,经常被使用,可以替代rmdir

语法rm[选项]目录名/文件名

功能:删除目录或者文件

选项与参数

-f :即使文件属性为只读,也直接删除
-i :删除前询问是否要删出
-r :删除目录和及其下文件

使用方法

[chakming@localhost ~]$ rm -rf test.c
[chakming@localhost ~]$ rm -i test
1.8 cp指令

语法cp[选项] 来源(可以多个) 目标文件

功能:复制文件或者目录

选项与参数

-r :递归复制,用于目录的复制操作
-p :连同文件的属性一起复制过去,而非使用默认属性
-f :强制复制文件和目录
-i :覆盖文件前询问用户

使用方法

[chakming@localhost ~]$ cp /var/log/wtmp . 复制指定目录到当前文件
1.9 mv指令

语法mv[选项] 来源(可以多个) 目标文件

功能:移动文件

选项与参数

-u:目标文件已存在,如果来源文件比较新,才会进行更新
-f :强制移动文件和目录,如果目标文件已存在,直接覆盖
-i :覆盖文件前询问用户

使用方法

[chakming@localhost ~]$ mv test01 dir 复制到指定目录
[chakming@localhost ~]$ mv test.c test.cpp 重命名

2 文件内容查看

2.1 cat指令

语法cat[选项]目标文件

功能:查看文件内容

选项与参数

-b :列出行号,仅针对非空白行做行号显示
-E :将结尾的换行符用$显示出来
-n :打印出行号,连同空白行
-v :列出一些看不出来的特殊字符

使用方法

[chakming@localhost ~]$ cat -n test.c
[chakming@localhost ~]$ cat /etc/issue

cat是Concatenate(串联)的简写,如果想用反着查看文件内容,可以用tac,其余选项一样。不过如果文件内容的行数比较多,建议使用more或者less。

2.2 more指令

语法more[选项]目标文件

功能:查看文件内容

选项与参数

-f :立刻显示文件名以及目前显示的行数
q  :退出more
/字符串:代表在当前显示的内容,向下查找字符串
回车键 :代表向下翻一行
空格键 :代表向下翻一页

使用方法

[chakming@localhost ~]$ more /etc/man_db.conf

more指令虽然可以查看内容比较多的文件,但是有个弊端,就是没办法往前翻页,只能往后看,也就是看过的内容在想看只能重新进入,并且查找功能也不多,所以我们通常使用less指令。

2.3 less指令

语法more[选项]目标文件

功能:查看文件内容

选项与参数

-i :忽略搜索时的大小写
-N :显示每行的行号
/字符串:向下搜索指定字符串
?字符串:向上搜索指定字符串
n :重复前一个搜索
N :反向重复前一个搜索
q :退出
[pagedown]:向下翻动一页
[pageup]:向上翻动一页
2.4 man指令

Linux命令有很多参数,我们没有办法全记住,这时候可以差帮助文档来查询。

语法man[选项]命令

功能:查询命令相关的帮助文档

选项与参数

-k :根据关键字搜索联机帮助
num:只在第num章节查找
-a :将所有章节显示出来

章节:帮助手册分为八章

  1. 普通的命令
  2. 系统调用,例如open,write之类的
  3. 库函数,例如printf,大部分为C的函数库
  4. 设备文件的说明,通常在/dev下的文件
  5. 配置文件
  6. 游戏
  7. 惯例与协议等
  8. 系统管理员可用的惯例命令

其实,man本质上使用less去查看文档的内容,所以可以使用less里面的按键进行查找和搜索。

3 数据截断

3.1 head指令

语法head[-n number]文件

功能:查看文件的前几行

选项与参数

-n number :number是指定要查看的数量,可以不写,默认是10 
3.2 tail指令

语法tail[-n number]文件

功能:查看文件的后面几行

选项与参数

-n number :number是指定要查看的数量,可以不写,默认是10 

这两个命令通常会配合着管道(|)使用,管道的意思是:前面的命令所输出的信息,通过管道交由后续的命令继续使用,如果想要查看某个文件的第十一行到第二十行,可以这样做:

[chakming@localhost ~]$ head -n 20 filename | tail -n 10

4 时间相关的命令

4.1 date指令

语法date [选项]... [+格式]

功能:根据指定格式显示时间

格式的常用标记列表如下:(必须在格式前加上一个"+"加号)

%H :小时(00..23)
%M :分钟(00..59)
%S :秒(00..59)
%X :相当于%H:%M:%S
%d :日(1..31)
%m :月份(01..12)
%Y :完整年份(0000..9999)
%F :相当于%Y-%m-%d

设定时间方面

date -s // 设置当前时间,只有root权限才能设置
date -s 20080523 // 设置成20080523,具体时间为00:00:00
date -s 01:01:01 // 设置具体时间,日期不变
date -s "01:01:01 2008-05-23" // 设置日期和时间,顺序可以不一致

时间戳

Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始经过的秒数,不考虑闰秒。

使用方式

[chakming@localhost ~]$ date +%s
4.2 cal指令

语法cal [选项][月份][年份]

功能:可以显示公历的日历。公历是现在国际通用的历法。

选项与参数

-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天
-y 显示当前年份的日历

使用方法

[chakming@localhost ~]$ cal -y 2022

Linux入门篇——常见指令以及权限理解_第2张图片

5 文件查找

5.1 find指令

语法find[路径][选项]

功能:查找指定路径下的文件,并作出相应的处理

常用选项

-name :按照文件名查找文件
-size [+-]SIZE:查找比SIZE大或者小的文件
-type TYPE:查找某种类型的文件
-print :将结果打印到屏幕上,这个是默认操作

使用方式

[chakming@localhost ~]$ find / -name xxxx.log

这是最常用的查找方式,会在屏幕上输出根目录下所有xxxx.log的文件路径

5.2 whereis指令

语法whereis [-bmsu] 文件或目录名

功能:只找系统某些特定目录下的文件

常用选项

-l :可以列出whereis会查询的主要目录
-b :只查找二进制格式的文件
-m :只查找在说明文件manual路径下的文件
-s :只找source源文件
-u :查找不在以上三个项目当中的其他特殊文件

使用方式

[chakming@localhost ~]$ whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
5.3 grep指令

语法grep[选项]搜索字符串 文件

功能:在文件中搜索字符串,将找到的行打印出来

常用选项

-i :忽略大小写
-n :输出行号
-v :反向选择,显示出没有字符串的内容

使用方式

[chakming@localhost test_08_03]$ grep -n printf test.c
6:      printf("%d",a);

6 打包、压缩指令

在Linux环境中,压缩文件的扩展名有很多,比如*.tar,*.tar.gz,*.tgz,*.gz,*.Z等等。不同的后缀名代表使用的压缩技术不同,对应的命令也不相同,所以下载到某个压缩文件时,需要知道对应的文件是哪个压缩命令。

6.1 tar指令

语法tar[-cxtzjvf]文件目录[参数]...

功能:在文件中搜索字符串,将找到的行打印出来

常用选项

-c :建立打包文件
-t :查看打包文件的内容
-x :解包或者解压缩
-z :通过gzip的支持进行压缩或者解压缩
-j :通过bzip2的支持进行压缩或者解压缩
-J :通过xz的支持进行压缩或者解压缩
-v :显示压缩或者解压缩的过程
-f 文件名:-f后面要立刻接要被处理的文件名
-C 目录:解压缩到指定目录

通常,我们可以几个选项配合着使用来进行压缩和解压缩,下面是常用的方法:

压缩:
[chakming@localhost code]$ tar -jcv -f test_08_03.tar.bz2 test_08_03/
test_08_03/
test_08_03/test.c
test_08_03/test1.c
test_08_03/test2.c
查询:
[chakming@localhost code]$ tar -jtv -f test_08_03.tar.bz2 
drwxrwxr-x chakming/chakming 0 2022-08-03 18:59 test_08_03/
-rw-rw-r-- chakming/chakming 76 2022-08-03 18:43 test_08_03/test.c
-rw-rw-r-- chakming/chakming 10240 2022-08-03 18:55 test_08_03/test1.c
-rw-rw-r-- chakming/chakming     0 2022-08-03 18:55 test_08_03/test2.c
解压缩:
[chakming@localhost code]$ tar -jxv -f test_08_03.tar.bz2 -C test_08_03
test_08_03/
├── test1.c
├── test2.c
└── test.c
6.2 zip指令

语法zip 压缩文件.zip 目录或文件

功能:将目录或文件压缩成zip格式

常用选项

-r :递归处理,一并处理目录下所有文件和子目录

使用方法

[chakming@localhost test_08_03]$ zip test.zip test.c test1.c 
adding: test.c (deflated 5%)
adding: test1.c (deflated 99%)
6.3 unzip指令

语法unzip 压缩文件.zip

功能:将压缩文件解压缩

使用方法

[chakming@localhost test_08_03]$ unzip test.zip 

其实,还有很多种压缩命令,使用方法其实差距并不大,可以通过man手册去查询对应的指令使用以及选项。

7 权限的概念

Linux有两种用户,一个是root用户,一个是普通用户。

root用户:又被称为超级用户或者管理员,可以在linux下做任何事情(理论上),不受限制。

普通用户:在linux下会被权限所限制,只能做有限的事情。

7.1 su指令

语法su 用户名

功能:切换用户,默认是root用户,root可以省略

使用方法

[chakming@localhost test_08_03]$ su root
7.2 ll指令

语法ll

功能:查看当前文件下的详细信息,其实本质上是ls -l

使用方法

[chakming@localhost test_08_03]$ ll
总用量 20
drwxrwxr-x 2 chakming chakming    50 8月   3 18:59 test_08_03
-rw-rw-r-- 1 chakming chakming 10240 8月   3 18:55 test1.c
-rw-rw-r-- 1 chakming chakming     0 8月   3 18:55 test2.c
-rw-rw-r-- 1 chakming chakming    76 8月   3 18:43 test.c
-rw-rw-r-- 1 chakming chakming   476 8月   3 19:07 test.zip
7.3 文件类型和访问权限

在这里插入图片描述
在这里插入图片描述

(1)文件类型:

d :文件夹
- :普通文件
l :软链接(与快捷方式类似)
b :块设备文件
p :管道文件
c :字符设备文件
s :套接口文件

(2)基本权限:

  1. 拥有者权限,也就是所属用户对应的权限,rw-表示当前拥有者拥有读和写的权限,没有执行的权限。
  2. 所属组权限,也就是与用户拥有者在同一个所属组内的用户的权限。
  3. 其他人权限,就是不在用户拥有者的所属组内的用户访问该文件的权限。
  4. 如果拥有权限就会显示对应权限,如果没有会显示’-’

(3)文件权限值表示方法:

字符表示法:

Linux入门篇——常见指令以及权限理解_第3张图片

进制表示法:

每种权限占一个字节,总共三个字节,即2^3-1=7能够表示所有权限,也就是一个八进制位即可表示所有状态。

Linux入门篇——常见指令以及权限理解_第4张图片

8 权限的相关指令

8.1 chmod指令

语法chmod[参数] 权限 文件名

功能:设置文件的访问权限

参数

u :拥有者
g :拥有组
o :其他用户
a :所有用户
+ :增加权限
- :减少权限
= :赋予权限

使用方法

[chakming@localhost test_08_03]$ ll test1.c
-rw-rw-r-- 1 chakming chakming 10240 8月   3 18:55 test1.c
[chakming@localhost test_08_03]$ chmod u+x test1.c
[chakming@localhost test_08_03]$ ll test1.c
-rwxrw-r-- 1 chakming chakming 10240 8月   3 18:55 test1.c
[chakming@localhost test_08_03]$ chmod g=rw test1.c
[chakming@localhost test_08_03]$ chmod o-r test1.c

权限符号也可以用对应的八进制来替代,比如:

[chakming@localhost test_08_03]$ chmod 664 test1.c
[chakming@localhost test_08_03]$ chmod u=rw,g=rw,o=r test1.c
8.2 chown指令

语法chown[-R] 用户名 文件名

功能:修改文件拥有者

参数

-R :递归修改,连同文件以及子目录下的所有文件拥有者都修改为该用户

使用方法

[root@localhost test_08_03]# chown root test1.c
-rw-rw-r-- 1 root     chakming 10240 8月   3 18:55 test1.c
8.3 chgrp指令

语法chgrp[-R] 用户名 文件名

功能:修改文件所属用户组

参数

-R:递归修改,连同文件以及子目录下的所有文件拥有者都修改为该用户

使用方法

[root@localhost test_08_03]# chown root test1.c
-rw-rw-r-- 1 root    root 10240 8月   3 18:55 test1.c
8.4 umask文件掩码

那么,我们已经知道了如何建立或者改变一个目录或者文件的权限,但是当我们建立一个文件或目录的时候,可能会与我们的预期有所差别,这是因为umask有关,umask是指定目录在建立文件或目录时候的权限默认值。

[root@localhost test_08_03]# mkdir test 
drwxr-xr-x 2 root     root         6 8月   3 21:19 test
[root@localhost test]# touch test
-rw-r--r-- 1 root root 0 8月   3 21:21 test

其实,我们默认创建一个目录的时候,linux系统默认的是777权限,创建一个普通文件时,默认是666权限,但是当我们真的创建了文件夹和普通文件,却发现不是对应的权限,这是因为我们要减去umask的默认权限,才是我们最终得到的真正的权限。

[root@localhost test]# umask
0022
[root@localhost test]# umask -S
u=rwx,g=rx,o=rx

我的linux系统默认权限umask是0022,也就是默认会减去用户组的写权限和其他人的写权限:

建立文件:(-rw-rw-rw-) - (-----w--w-) ==> (-rw-r--r--)
建立目录:(drwxrwxrwx) - (d----w--w-) ==> (drwxr-xr-x)

也可以修改默认的权限值,只需要:

umask 002 
8.5 file指令

语法file[选项] 文件名或目录名

功能:辨识文件类型

参数

-c :详细显示指令执行过程
-z :尝试去解读压缩文件的内容
8.6 权限的注意事项
  • 可执行权限:如果目录没有可执行权限,无法cd进入
  • 可读权限:如果目录没有可读权限,无法用ls查看目录下的内容
  • 可写权限:如果没有可写权限,就无法创建文件,也无法删除文件

你可能感兴趣的:(linux,linux,服务器,运维)