关于Linux 知识②💯💦

331 阅读15分钟

1、基本命令

1.1 关机重启

  • 关机

关于关机的指令很多,大家可以参考

linux下常用的关机命令有:shutdown、halt、poweroff、init

shutdown -h now   即可关机

    - now (现在)
    - shutdown(关机)
 
shutdown -h 10   10分钟关机
- 
shutdown -h 11:00   11:00关机<可以设定时间关机>
- 
shutdown -h  +10   预定时间关机(10分钟后)
- 
shutdown -c  取消指定时间关机
- 
init 0    立刻关机
-
telinit0     关机(关闭系统)
- 
poweroff    立刻关机
- 
halt  关机
  • 重启
shutdown -r now   重启
reboot        重启
init 6  重启

shutdown 参数说明:

[-r] 重启计算器。

[-k] 并不真正关机,只是送警告信号给每位登录者〔login〕。

[-h] 关机后关闭电源〔halt〕。

[-n] 不用init而是自己来关机。不鼓励使用这个选项,而且该选项所产生的后果往往不总是你所预期得到的。

[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。

[-f] 在重启计算器〔reboot〕时忽略fsck。

[-F] 在重启计算器〔reboot〕时强迫fsck。

[-time] 设定关机〔shutdown〕前的时间。

2、帮助命令

在 Linux 环境中,如果遇到困难,可以使用帮助命令来取得帮助。

常见的帮助命令有:man 命令、help 命令、info 命令

2.1 man命令

--man命令

man 是Manual pages的缩写。

man工具是显示系统手册中的内容,也是一本电子字典,这些内容大多数都是对命令的结束信息,还有一些向相关的描述,通过查看系统文档中man还可以得到程序的更多的相关的信息和Linux的更多特征

man通常用来获得某个命令的说明书和使用方式的详细结

2.2 help 命令

--help 命令

help 命令是用于显示 shell 内建命令的简要帮助信息,帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明。

内部使用: help

外部使用: ls --help
外部命令基本上都有一个参数 --help,通过这个参数可以得到相应的帮助。 这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版。

2.3 pwd命令

-- pwd命令

pwd 命令是 print work directory 的缩写 执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。

语法: pwd 参看所在路径

# pwd
/root/test  

2.4 ls命令

-- ls命 令 ls 是list files的缩写

命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

ls常用参数

  • -a 显示当前文件夹下所有的子目录和文件
  • -l 显示文件详细信息

image-20211014113441793.png

  • -r 将件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  • -R 若目录下有文件,则以下之文件亦皆依序列出

2.4 cd命令

--cd 命令

cd命令 是 change directory的缩写

  • 参数说明
参数说明
cd/根目录
cd切换到当前用户的主目录(/home/用户)默认目录就是当前用户主目录
cd~切换到当前用户的主目录
cd.切换到当前目录
cd..切换到上级目录
cd-切换到上次进入的目录
./当前目录下

3 关于Linux 目录

参数说明
/根目录,有且只有一个
/home用户目录(加目录)
/root(超级管理员)系统管理员root的目录
/usr应用程序存放的文件夹
树形结构的文件系统 ,其中/是根目录,不能更改,其他文件都是他的子文件分支

image.png

3目录操作命令

3.1 目录切换 cd

命令:cd 目录

cd / 切换到根目录

cd /usr 切换到根目录下的usr目录

cd ../ 切换到上一级目录 或者 cd ..

cd ~ 切换到home目录

cd - 切换到上次访问的目录

3.2 目录查看 ls -nema

命令:ls name

ls 查看当前目录下的所有目录和文件

ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)

ls -l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)

ls /dir 查看指定目录下的所有目录和文件 如:ls /usr

3.3 目录、文件的增、删、改、查

3.3.1 mkdir

  • 创建目录 (增) mkdir

mkdir 目录名(你要创建的目录名)

mldir 测试  # 创建测试这个目录
cd 测试 # 进入测试这个目录
[root@VM-4-11-centos ~]# mkdir 测试         创建测试这个目录
[root@VM-4-11-centos ~]# cd 测试          进入测试这个目录
[root@VM-4-11-centos 测试]# mkdir 测试70     在测试文件

3.3.2 mkdir -p

  • 创建层级目录 mkdir -p

mkdir -p 目录民/目录民(你要创建的目录名)

层级创建目录
[root@VM-4-11-centos ~]#  mkdir -p 测试/测试90   #层级创建目录
[root@VM-4-11-centos ~]# cd 测试   #查找创建的目录
[root@VM-4-11-centos 测试]# cd    测试  #进入测试目录 
[root@VM-4-11-centos 测试]# cd 测试90    #进入测试90 目录
[root@VM-4-11-centos 测试90]#    

3.3.3.rm

  • 删除目录或文件 rm

命令:rm -rf 目录

删除文件:

rm 文件 删除当前目录下的文件

rm -r 文件名 递归删除文件夹及文件夹下的所有内容

rm -f 文件 删除当前目录的的文件(不询问)

删除目录: rm rm -r aaa 递归删除当前目录下的aaa目录 rm -rf aaa 递归删除当前目录下的aaa目录(不询问)

3.3.4 rmdir

删除目录 rmdir

命令: rmdir 目录名

rmdir 删除目录名 (可以删除多个目录)

rmdir -f 目录名 强制删除

-f 强制删除

全部删除:

rm -rf* 将当前目录下的所有目录和文件全部删除

rm -rf /* 将根目录下的所有文件全部删除

注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包

4 mv 和cp

目录修改 mv(move) 和cp

4.1 mv

move 需要移动的文件夹 目标文件夹

一、重命名目录     命令:mv 当前目录  新目录     例如:mv aaa bbb    将目录aaa改为bbb     注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行    重命名的操作 二、剪切目录     命令:mv 目录名称 目录的新位置     示例:将/usr/tmp目录下的aaa目录剪切到 /usr目录下面     mv /usr/tmp/aaa /usr     注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。如果usr目录不存在,则这个命令会把aaa改名为usr 三、拷贝目录 cp(复制) 命令: cp 原文件 目标文件 cp -r 目录名称 目录拷贝的目标位置 -r代表递归 示例:将/usr/tmp目录下的aaa目录复制到 /usr目录下面 cp /usr/tmp/aaa /usr 注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包等,如果目标文件存在同名文件,会覆盖 cp 参数说明:

参数说明
-i交互式,提示询问是否覆盖文件
-r将目录以及目录下所有的目录以及文件复制并且移动
-f强制
-v显示进度

5、 创建文件 touch

命令: touch 文件名 如果文件不存在,创建一个新的文件 如果文件存在,不会覆盖原始文件,但是修改文件的时间 示例: 在当前文件夹下创建一个name.txt文件 touch name.txt

5.1、删除文件 rm rmdir

命令: rm 文件名 rmdir 文件名

5.2修改文件 vi

命令: vi 文件名 vi name.txt 打开name.txt文件进入 进入后点击i进入可编辑模式进行修改

5.3 保存文件或退出

保存文件并退出:

第一步:点击ESC进入命令行模式 第二步:: 进入底行模式 第三步:wq!保存并退出编辑

取消编辑: 第一步:ESC进入命令行模式 第二步::进入底行模式 第三步:q!撤销本次修改并强制退出

5、搜索目录 【查】find

find 命令是查找,目录以及所有的子目录 语法: find 文件名 find [参数] 文件名 find 路径 -name 文件名或目录名 路径不确定可以用通用符.来替代 find在硬盘上查找,比较消耗硬盘资源 参数说明: | 参数 | 说明 | | -type c | 文件类型是c的文件| | d | 目录 | | c | 字型装置文件 | | b | 区块装置文件 | | f | 一般文件 | 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来

# find . -name "*.c"

将当前目录及其子目录中的所有文件列出:

# find . -type f

案例: 在当前文件夹下,寻找包含test的文件或者目录

image-20211015163445472.png

6.1 locate

locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。 语法: locate 文件名 查找 passwd 文件

locate passwd

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

updatedb

7、查看文件

7.1 cat

命令: -n 展示的是文件的行数 cat 【可选参数】 文件名 cat -n(行数)文件名 [root@VM-4-11-centos 测试]# cat -n c.txt 1 hello woerld 2、hello woerldhello woerld 3、hello woerld

cat 文件名 [root@VM-4-11-centos 测试]# cat c.txt hello woerld hello woerldhello woerld hello woerld hello woerld hello woerld hello woerld

7.2 more

more指令和cat指令一样,more展示一页内容以后,等待用户手动翻看 也可以设置文件的行数和位置 命令: more 文件名 more name 查看文档内容 more +num 文件名 more +20 name 从第 20 行开始显示 name 之文档内容。

手动翻看的方式:

参数说明
回车一行一行的翻看
q结束观看,退出
空格一页一页的看
b回退
设置文件扥行数和位置
参数说明
+num定位,从哪一行开始展示
-num规定页面展示多少条

7.3 less 翻页查看

less 手动翻页方式 语法: less 文件名

|参数 | 说明 | | 回车 | 一页一页的向下翻看 | | 空格 | 一页一页的翻看 | | f | 向前一页翻看 | | b | 向后一页 | | N | 显示行号 | | q | 退出 |

7.4 head

head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容 语法: head 文件名 <没有参数默认查看10行> head [参数] 文件名
参数说明: |参数 | 说明 | | -q | 隐藏文件名 | | -v | 显示文件名 | | -c | 显示字节数 | | -n | 显示行数 | 查看开头第几行

head -n 5 name     
显示name文件前5行

查看开头第几个字节

head -c 20 name
显示name前的20个字节

7.5 tail

tail命令用于查看尾部数据,从尾部查找多少条数据 语法 : tail 文件名 <没有参数默认是10行> tail [参数] 文件名 查看name后10行数据

tail  name
显示name后10行数据

查看后20行数据

tail -n +20 name
显示name后20行数据

查看后20个字符

tail -c 20 name
c查看name后的20个字符

8、搜索

8.1、where

windowl 里的命令

8.2、which

which命令用于查找文件。

which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

which 文件名 查找可执行文件

用法:
which python
[root@VM-4-11-centos ~]# which python
/usr/bin/python
[root@VM-4-11-centos ~]# which python3
/usr/bin/python3

8.3、whereis

whereis 查找全部 语法: whereis 文件名 whereis [参数] 文件名 参数说明: | 参数 | 说明 | | -b | 只查找二进制文件 | | -m | 只查找说明文件 | | -s | 只查找原始代码文件 | 查找文件

 whereis bash 
 查看bash文件的位置

查看二进制文件

$ whereis -b bash               #显示bash 命令的二进制程序  
bash: /bin/bash /etc/bash.bashrc /usr/share/bash    # bash命令的二进制程序的地址  

查看说明文件

$ whereis -m bash               #显示bash 命令的帮助文件  
bash: /usr/share/man/man1/bash.1.gz  #bash命令的帮助文件地址  

9 文本查找工具

9.1、grep

grep 命令用于查找文件里符合条件的字符串。 语法: grep [可选参数] 正则规则 [文件]

参数说明: | 参数 | 描述 | | -i | 不区分大小写 | | -n | 展示行号 | | -c | 展示匹配到的数据的次数 | | -l | 只展示匹配到的数据 | | -H | 展示的时候,展示文件名+匹配数据 | | -h | 展示的时候,不展示文件名,只展示匹配数据 | | -v | 匹配除了目标字符串外,所有的内容 | | -s | 不显示错误信息 |

案例:

在y.txt中匹配除了hello world以外所有的内容

grep -v 'hello world' y.txt
1.在所有的以D开头的文件中,查找包含test的行
grep 'test' D*

2.在文件aa  bb  cc 中查找包含test的行
grep 'test' aa bb cc 

3.在文件y.txt中,寻找至少有5个字母的行
grep '[a-zA-Z]\{5,\}'  y.txt

4.在文件中查找只有单词hello的行
grep  '\<hello\>' y.txt

5.找到y.txt中,以world开头的行
grep '^world' y.txt

6.找到所有的以d开头的文件中,所有包含字符的行
grep      '.'      d* 匹配所有包含字符的行
grep      '.*'      d* 匹配所有包含字符的行和空行
7.在y.txt中,匹配3-5个小写字母
grep '[a-z]\{3,5\}' y.txt

案例2:

1.找出包含Java的行
grep 'java' y.txt

2.找出以Java开始的行
grep '^java' y.txt

3.找出以Java结尾的行
grep 'java$' y.txt

4.找出包含单词Java的行
grep '\<java\>' y.txt

5.显示Java所在行的行标
grep -n 'java' y.txt

10、grep 正则表达

元字符集:

  • ^ 以什么开头:如: '^java''匹配所有以java开头的行。

  • 以什么结束:如java 以什么结束:如:'java'匹配所有以java结尾的行

  • . 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

  • "*" 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

 - [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

  • [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

  • .... 标记匹配字符,如'lovelove',love被标记为1。

  • \ 锚定单词的开始,如:'\匹配包含以grep开头的单词的行。

  • > 锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。

  • x{m} 重复字符x,m次,如:'0{5}'匹配包含5个o的行。

  • x{m,} 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。

  • x{m,n}重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。

  •  \w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

  •  \b 单词锁定符,如: '\bgrep\b'只匹配grep。

11、用户文件权限管理

如图:

image-20211016144849551.png

11.1 概念

rwx:r代表可读,w代表可写,x代表该文件是一个可执行文件,如果rwx任意位置变为-则代表不可读或不可写或不可执行文件。

符号权限对应英文数字表现形式
rread4
wwrite2
x执行excute1
无权限0

11.2 chmod

11.2.1 字母法

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

语法规则: chmod <u+r>(参数) 文件名 chmod < 参数 > 文件名

chmod abc file


参数说明

用户类型用户类型(英文)说明
uuser文件所有者
ggroup文件所有者所在组
oothers所有其他用户
aall所用用户,相当于ugo
权限设置
参数说明
+增加权限
-撤销权限
=重新赋值权限

11.2.2 数字法

语法:

chmod 777 a.txt

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

  • r=4,w=2,x=1

  • 若要 rwx 属性则 4+2+1=7;

  • 若要 rw- 属性则 4+2=6;

  • 若要 r-x 属性则 4+1=5。

符号权限对应英文数字表现形式
rread4
wwrite2
x执行excute1
无权限0

chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行

#权限rwx二进制
7读 + 写 + 执行rwx111
6读 + 写rw-110
5读 + 执行r-x101
4只读r--100
3写 + 执行-wx011
2只写-w-010
1只执行--x001
0---000

案例: 将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

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

chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

chmod 777 file

12、管道(pipe)

定义:将一个命令的输出作为一个命令的输入

语法 : 命令1 | 命令2.。。。

案例:在y.txt中,寻找以hello为开头的行,并且在屏幕上打印出来

案例 将当前页面的文件详细信息分页展示

ll | more

案例 查看当前的网络信息,分页展示

ifconfig | more

ifconfig | less

13、打包和压缩

13.1、tar

Linux tar(英文全拼:tape archive )命令用于备份文件。

13.2、定义:

tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

是一个打包工具,打包与压缩是不一样:打包是将一组相关的资源放到一个文件夹下,便于管理

压缩:目的是为了节约资源

语法: tar [可选参数] 打包名 <需要打包的文件> 参数说明:

参数描述
-c创建一个新的包
-t查看包中的文件
-v打包的过程中红色显示被打包的文件
-f指定压缩文件名
-x解开一个包
-z同时使用gzip工具进行压缩
案例:

1.将shanghui进行打包,打包成shanghui.tar

tar -cvf shanghui.tar shanghui

2.将shanghui.tar进行解包

tar -xvf shanghui.tar

3.查看包里面的文件

tar -tvf shanghui.tar

4.将x.txt 和y.txt打包成test_grep.tar

tar -cvf test_grep.tar x.txt y.txt

13.3、zip

zip 命令用于压缩一个文件或者多个文件,window最常见有个zip格式的压缩文件

zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。 语法: zip 压缩文件名 需要压缩的文件(文件或者目录)

13.4解压缩

命令:tar [参数] 压缩文件    
其中:x:代表解压

unzip 压缩文件名

13.5 gzip

13。6 定义

用于文件的压缩

后缀.gz