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、文件的基本类型
- 在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
2、反向查找命令
grep -v "ryan" /etc/passwd
3、展示行号和统计行数(number)
grep -n "ryan" /etc/passwd
4、搜索到了多少行
grep -c "ryan" /etc/passwd
5、能环顾四周(before after)
grep -A 10 "ryan" /etc/passwd
grep -B 10 "ryan" /etc/passwd
grep -C 10 "ryan" /etc/passwd
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、用户和群组
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个字段),文件内容非常规律,每行记录对应一个用户
8、Linux中更改文件属性
1、chgrp:更改文件属组(change group)
语法: chgrp [-R] 属组名 文件名 (-R递归更改文件属组)
2、chown:更改文件属主,也可以同时更改文件属组(change own)
语法:
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
文件的权限——使用"+"设置权限,使用"-"取消权限
以三个为一组,且均为【rwx】的三个参数的组合
[r]代表可读(read)
[w]代表可写(write)
[x]代表可执行(execute)
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 // 改变文件的群组 (所在组)
三种基本权限
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 // 最大程度压缩