Linux常用命令

一、入门步骤

1、下载安装虚拟机VMware
2、在虚拟机VMware上安装 系统 可以安装任何系统(Windows、Linux、mac 等)
Linux CentOS 做练习
3、[root@ryan ~]# 认识提示符

o [用户 @ 计算机名 当前目录] #
o ~ 表示在当前用户的家目录 ;/ 表示根目录
o # 表示超级用户
o $ 普通用户

二、常用命令

1、文件和目录

cd /home    // 进入 '/ home' 目录' 
cd ..       // 返回上一级目录 
cd ../..    // 返回上两级目录 
cd 空格      // 进入个人的主目录 
cd ~        // 进入个人的主目录 
cd -        // 返回上次所在的目录 
pwd         // 显示工作路径 
ls          // 查看目录中的文件 
ls -F       // 查看目录中的文件 
ls -l       // 显示文件和目录的详细资料 
ls -a       // 显示隐藏文件 
ls *[0-9]*   // 显示包含数字的文件名和目录名 
mkdir dir1       // 创建一个叫做 'dir1' 的目录' 
mkdir dir1 dir2   // 同时创建两个目录 
mkdir -p /tmp/dir1/dir2   // 创建一个目录树 
rm -f file1    // 删除一个叫做 'file1' 的文件' 
rmdir dir1     // 删除一个叫做 'dir1' 的空目录' 
rm -rf dir1    // 删除一个叫做 'dir1' 的目录并同时删除其内容 
rm -rf dir1 dir2     // 同时删除两个目录及它们的内容 
mv dir1 new_dir      // 重命名/移动 一个目录 
cp file1 file2       // 复制一个文件 
cp dir/* .           // 复制一个目录下的所有文件到当前工作目录 
cp -a /tmp/dir1 .    // 复制一个目录到当前工作目录 
cp -a dir1 dir2      // 复制一个目录 
history              // 历史命令
history > file.txt   // 把查看的历史命令写入到file.txt

2、文件的基本类型

image.png

  • 在Linux中第一个字符代表这个文件是目录、文件或链接文档等
  • 当为[ d ]则是目录;
  • 当为[ - ]则是文件;
  • 当为[ l ]则是链接文档(link file);
  • 当为[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 当为[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

3、查看文件内容

cat file  // 从第一个字节开始正向查看文件的内容 
head -2 file  // 查看一个文件的前两行 
tail -2 file  //  查看一个文件的最后两行 
tail -f /var/log/messages  // 实时查看被添加到一个文件中的内容
more file  // 查看一个长文件的内容

more命令

more命令类似与cat命令,却比cat命令强大,它以全屏幕的方式按页显示文本文件的内容,
支持vi中的关键字定位操作(特点,一次性加载到内存)。

用法:more [选项] 文件..
   space,z        向下翻页
   b,ctrl+b       向上翻页
   Enter         向下滚动 1 行
   =            显示当前行号
   q,Q            退出more

less命令

less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作

   用法:less [选项] 文件..
   -m           显示类似more命令的百分比 
   /搜索内容     n显示下一个匹配的内容位置  N显示上一个匹配的内容位置
   空格键       滚动一页
   z向后一页,b向前一页
   回车键         滚动一行
   [pagedown]    向下翻动一行 
   [pageup]      向上翻动一行
   q             退出

4、文本处理

grep命令

grep命令的常用格式为:grep [选项] "搜索字符串" [文件]
	-E    开启扩展(Extend)的正则表达式
	-i    忽略大小写(ignore case)
	-v    反过来(invert),只打印没有匹配的,而匹配的反而不打印
	-n    显示行号(number)
	-w    (word)被匹配的文本只能是单词,而不能是单词中的某一部分,比如文本中有liker和like,而我搜索的只是like,就可以使用-w选项来避免匹配liker
	-c    (count)显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
	-o    只显示被模式匹配到的字符串
	--color    将匹配到的内容以颜色高亮显示
	-A n       (after)显示匹配到的字符串所在的行及其后n行
	-B n       (before)显示匹配到的字符串所在行及其前n行
	-C n       显示匹配到的字符串所在行及其前后各n行

1、基本查找命令

grep "ryan" /etc/passwd

image-1660029125797.png

2、反向查找命令

grep -v "ryan" /etc/passwd

image-1660029150837.png

3、展示行号和统计行数(number)

grep -n "ryan" /etc/passwd

image-1660029184318.png

4、搜索到了多少行

grep -c "ryan" /etc/passwd

image-1660029206126.png

5、能环顾四周(before after)

grep -A 10 "ryan" /etc/passwd 
grep -B 10 "ryan" /etc/passwd
grep -C 10 "ryan" /etc/passwd

image-1660029242763.png
image-1660029261523.png

6、正则查找

grep '^ryan' /etc/passwd    // 搜索/etc/passwd中开头是ryan的行
grep 'bash$' /etc/passwd    // 搜索/etc/passwd中结尾是bash的行
grep '\<bin\>' /etc/passwd --color    // (匹配bin这个词,并高亮显示)
grep Aug /var/log/messages     // 在文件 '/var/log/messages'中查找关键词"Aug" 
grep ^Aug /var/log/messages    // 在文件 '/var/log/messages'中查找以"Aug"开始的词汇 
grep [0-9] /var/log/messages   // 选择 '/var/log/messages' 文件中所有包含数字的行 
grep Aug -R /var/log/*         // 在目录 '/var/log' 及随后的目录中搜索字符串"Aug" 
cat -n file1     // 标示文件的行数

5、vi vim编辑器的使用

vim三种模式:命令模式、插入模式、编辑模式。
使用ESC或 i:来切换模式。

:q 退出
:q! 强制退出
:wq 保存并退出
find 搜索文件或目录  find / -name httpd.conf
/ 查看模式下,当前文档里面查找词  /demo
:set nu 查看模式下,显示行号
[Ctrl] + f 屏幕向下移动一页
[Ctrl] + b 屏幕向上移动一页
[0] 或 [Home] 光标移动到当前行的最前面
[$] 或 [End] 光标移动到当前行的末尾
[G] 光标移动到文件的最后一行(第一个字符处)
[nG] n为数字(下同),移动到当前文件的第n行
[gg] 移动到文件的第一行,相当于[1G]
[n[Enter]] 光标向下移动n行
[/word] 在文件中查找内容为word的字符串(向下查找)
[dd] 删除光标所在的一整行

6、文件搜索

find / -name file1    // 从 '/' 开始进入根文件系统搜索文件和目录 
find / -user user1    // 搜索属于用户 'user1' 的文件和目录 
find /home/user1 -name \*.bin   //  在目录 '/home/user1' 中搜索带有'.bin' 结尾的文件 

Locate 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db ;
新建立的文件,locate是搜索不到的,需要更新数据库(updatedb)

7、用户和群组

image-1660029387275.png

useradd --help       // 帮助文档
useradd -m user1     // 创建一个新用户 
// 注意:Kali创建用户一定要加-m
userdel -r user1     // 删除一个用户 ( '-r' 排除主目录)  
passwd    // 修改口令 
passwd user1     // 修改一个用户的口令 (只允许root执行) 
whoami      // 作用:‘我是谁’显示当前登录的用户名,一般用于shell脚本
chsh -s /bin/bash username     // 将之前创建的用户的默认外壳改成bash

注意关于用户的这三个文件

/etc/passwd 存储用户的关键信息
/etc/group 存储用户组的关键信息
/etc/shadow 存储用户的密码信息

/etc/passwd 记录了所有用户信息(以 :  分隔7个字段),文件内容非常规律,每行记录对应一个用户

image-1660029927511.png

8、Linux中更改文件属性

1、chgrp:更改文件属组(change group)

语法: chgrp [-R] 属组名 文件名 (-R递归更改文件属组)

2、chown:更改文件属主,也可以同时更改文件属组(change own)

语法:
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

image-1660029980600.png

文件的权限——使用"+"设置权限,使用"-"取消权限
以三个为一组,且均为【rwx】的三个参数的组合
[r]代表可读(read)
[w]代表可写(write)
[x]代表可执行(execute)

image-1660030016085.png

1、第0位确定文件类型
2、第1-3位确定属主(该文件的所有者)拥有改文件的权限
3、第4-6位确定属组(所有者的同组用户)拥有该文件的权限
4、第7-9位确定其它用户拥有该文件的权限
chmod ugo+rwx directory1   // 设置目录
        // 所有者(u)、群组(g)以及其他人(o)
        // 读(r )、写(w)和执行(x)的权限 
chmod go-rwx directory1     // 删除群组(g)与其他人(o)对目录的读写执行权限 
chown user1 file1           // 改变一个文件的所有人属性(拥有者) 
chown -R user1 directory1    // 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 
chgrp group1 file1          // 改变文件的群组 (所在组)

三种基本权限
image-1660030299233.png

image-1660030386594.png

Chmod 777 file    用数字的形式改变权限 

赋予文件权限 chmod 
chmod 777 hello.php
chmod 777 demo       // 单层目录修改权限
chmod -R 777 demo    // 递归多层目录修改权限
chmod -R 777 demo/*   // 递归当前目录下多层修改权限

9、打包和压缩文件

zip 压缩

语法: zip 压缩文件名 要压缩的文件

压缩单个文件

zip web.zip a.html
zip web.zip ./a.html

压缩多个文件

zip web.zip a.html b.html
zip web.zip ./a.html ./b.html

压缩目录

// -r 是启动递归,将目录下的所有文件全部压缩到web.zip里面
zip -r web.zip dota
zip -r web.zip ./dota

从压缩文件里面删除文件

zip -d web.zip a.html

移动文件到压缩文件里面。注意:会删除源文件的

zip -m web.zip c.html 

unzip 解压缩

语法: unzip 解压缩文件名

显示压缩文件内所包含的文件

unzip -l web.zip
unzip -l ./web.zip

不必先询问用户,unzip执行后覆盖原有文件

unzip -o web.zip
unzip -o ./web.zip

指定文件解压缩后所要存储的目录

unzip -d web web.zip
unzip -d ./web ./web.zip

压缩文件问题: 为什么有些文件压缩后反而变大了?

首先要明白压缩文件的原理,文件的源代码中有大量重复的数据,如ABABABABABCD如果我们把AB替换成X那么原文可以这样写XXXXXCD然后再后面补充上AB=X这样会间接很多。
但是如果就是ABCD我们按照上面的写法就是XCD AB=X反而比原文长了。
这个AB=X我们叫做词典,一旦一个文件有大量重复的内容:如编程用的EXE文件、文本文档、WORD等等会有很多相同代码,文件的压缩率(缩小后的体积除以原体积)会很小。但是视频、照片则很少有相同的重复代码,所以压缩率很大或者超过100%就是比源文件大的情况
因为有些文件已经压缩过的,经过某些算法几乎无法压缩,同时还要生成压缩文件头,字典等等东西因此会变大。

打包压缩

tar: 打包压缩

-c 归档文件
-x 解压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名

语法举例:

tar -cvf abc.tar abc  // 只打包,不压缩
tar -zcvf abc.tar.gz abc // 打包,并用gzip压缩
tar -jcvf abc.tar.bz2 abc // 打包,并用bzip2压缩
// 当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了

bunzip2 file1.bz2   // 解压一个叫做 'file1.bz2'的文件 
bzip2 file1         // 压缩一个叫做 'file1' 的文件 
gunzip file1.gz     // 解压一个叫做 'file1.gz'的文件 
gzip file1          // 压缩一个叫做 'file1'的文件 
gzip -9 file1       // 最大程度压缩
posted @ 2023-10-16 16:23  Mr-Ryan  阅读(15)  评论(0编辑  收藏  举报