Linux 常用命令(持续更新中)
2023-10-30 本文已影响0人
__Y_Q
- 当前路径
- 定位到用户主目录
- 主机名查看
- 重启
- 主机名设置
- 主机名与IP的映射
- 查看当前文件夹内文件信息, 可搭配过滤
- 文件权限/归属
- 权限及拥有者和所属组的修改
- 链接
- 文件内容追加
- 文件的拷贝/移动/重命名/删除
- 创建多级目录
- 用户与用户组操作
- 软件包的管理方式. rpm 和 yum
- 查看端口与进程
- 使用 scp 将文件/目录分发到其他主机
- 使用 rsync 进行远程同步
- grep过滤与管道符
- 追加和覆盖
- grep 结合正则表达式使用
- 统计有多少文件和目录
- 系统信息
- 防火墙设置
- 设置普通用户的 sudo 权限
- 压缩和解压缩
- 更换镜像源
1. 当前路径
pwd
2. 定位到用户主目录
cd ~
3. 主机名查看
hostname
4. 重启
reboot
5. 主机名设置
vim /etc/hostname (centOS 7, 需重启)
6. 主机名与IP的映射
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.64.130(虚拟机IP) zyq.com(主机名)
7. 查看当前文件夹内文件信息, 可搭配过滤
ll //列出来的结果详细,有时间,是否可读写等信息 ,像 windows 里的详细信息, ll 不是命令,是 ls -l 的别名, ls 命令可以说是linux下最常用的命令之一。
ls //只列出文件名或目录名 就像 windows 里的列表
-t //降序,
-tac //升序
-a //列出目录下的所有文件,包括以 . 开头的隐含文件
-d 将目录象文件一样显示,而不是显示其下的文件
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
–color=no 不显示彩色文件名
–help 在标准输出上显示帮助信息。
–version 在标准输出上输出版本信息并退出。
8. 文件权限/归属
drwxrwxr-x. 7 root root
-rw-r--r--. 1 root root
d
开头表示是目录, -
开头表示是文件.
后面是文件权限
-
r
可读 -
w
可写 -
x
可执行(脚本,比如shell 脚本 ) -
-
表示没有任何权限
以上面为例, 每三位代表一个权限.
- 第一个三位表示当前所属用户的权限.
- 第二个三位表示所属组拥有的权限.
- 第三个三位表示所有用户的权限.
权限后面的数字意义
- 如果当前是目录, 那么表示下面有几个子目录. (文件不算目录)
- 如果是文件, 那么表示硬链接数量有几个.
root root
表示文件/目录所属用户及用户组.
9. 权限及拥有者和所属组的修改
首先需要了解权限的数字表示法.
-
r
= 4 -
w
= 2 -
x
= 1
-rw-r--r--. 1 root root
以这个为例, 将对应的权限按照数字表示法就为
rw-r--r-- = 644
解读:
当前所属用户权限有读和写就为 4+2.
当前所属组权限只有读, 就为 4.
其他人的权限也只有读, 就为 4.
这个权限表示, 除了 root
这个用户可以读写外, 其他人和组都只有只读权限.
修改权限命令
chmod 666 filename, 或者 chomd r+x, chmod r+w, 可以以数字的形式, 也可以 rwx的形式
改变文件/目录的拥有者和所属组
- 改变文件拥有者命令:chown
chown userName(要改变为新拥有者的名称) fileName(要改变拥有者文件的名字 )
- 改变文件所属组命令: chgrp
chgrp groupName(要改变为新所属组的名称) fileName(要改变所属组文件的名字 )
- 改变文件夹拥有者命令: chown -R
chown -R userName(要改变为新拥有者的名称) fileName(要改变拥有者文件的名字 )
- 改变文件夹的所属组命令: chgrp -R
chgrp -R groupName(要改变为新所属组的名称) fileName(要改变所属组文件的名字 )
- 一条命令同时改变拥有者和所属组
chown userName:groupName filePath
10. 链接
软链接
- 相当于windows 的快捷方式
- 改变源文件时,软连接创建的文件也会改变
- 删除链接后,源文件还在
- 删除源文件后,链接指向错误
硬链接
- 相当于拷贝一个文件
- 改变源文件时,软连接创建的文件也会改变
- 删除链接后,源文件也还在
- 删除源文件时,硬链接所创建的文件不受影响
软连接命令格式: ln -s file/dir linkName
例: ln -s readme.txt rm.txt //rm.txt 为快捷方式的名字
硬链接命令格式: ln file/dir linkName
修改符号连接的owner
$>chown -h centos:centos xxx //-h:针对连接本身,而不是所指文件.
修改符号链接
$>ln -sfT index.html index //覆盖原有的连接。
11. 文件内容追加
echo 追加内容 >> 要追加的文件名
- 几种查看文件的方式
-
cat filename
全部内容 -
more filename
翻页查看 -
tail filename
末尾内容,通常与 -f 参数连用,适合于查看服务实时动态日志信息
例: tail -f xxxx.log
tail -200f yyy.log 查看末尾200行的信息
- head filename 开头文件,适合查看,文件格式,内容模板样式等
12. 文件的拷贝/移动/重命名/删除
- 拷贝
cp fileName path //拷贝一个文件到一个目录中
cp fileName newFileName //拷贝一个文件的内容至一个文件中(新文件)
cp -r dir newDir //拷贝一个目录到另外一个目录去 -r 是递归拷贝
- 移动和重命名
mv fileName path //移动(fileName与Path不在同一目录下就是移动)
mv fileName path //重命名(当fileName 与path同一个目录下的时候就是重命名)
- 删除
rm -rf fileName //递归强制删除, file 最好是绝对路径, -r 递归 ,-f 强制
13. 创建多级目录
mkdir -p path //-p 有就执行,没有就创建
14. 用户与用户组操作
查看所有用户与用户组 ID
cat /etc/password
查看用户组根据用户名
id username
将x用户添加到yy组
usermod -a -G yy x
创建普通用户
useradd zhangsan //创建一个用户
passwd 刚才创建的用户名 //添加密码 这种模式会默认创建group组
创建用户组
groupadd zhangsan
切换用户
//带 - 的是完全切换用户以及环境变量,
//不带 - 的仅仅只是切换用户
//一般建议使用 su - 用户名的方式切换
su - zhangsan 或者 su zhangsan
删除用户
userdel -r zhangsan // -r 表示删除用户的时候删除该用户的主目录
切换到管理员用户
su 或者 sudo -s
15. 软件包的管理方式. rpm 和 yum
有两种方式 rpm
和 yum
RPM
, 依赖比较严重, 必须一一安装所依赖的包.
RPM
常用的命令
- 查询
rpm -qa q表示查询,a表示所有
//相关参数
-》 表示查询套件的相关信息
-i 表示显示套件的相关信息
-v 表示显示指令执行过程
-h 表示套件安装时列出标记
- 检查某个软件是否安装
rpm -qa | grep 软件名
选项 --nodeps: 不检测依赖性,一般建议在试验环境使用
- 卸载已安装的软件
rpm -e --nodeps xxxxxx
rpm -e httpd-manual-2.2.15-26.e16.centos.noarch.rpm //错误,需要去掉后缀名
rpm -e httpd-manual-2.2.15-26.e16.centos.noarch //正确
- 安装软件
rpm -ivh xxx.rpm
rpm -ivh httpd-manual-2.2.15-26.e16.centos.noarch.rpm
yum
yum
会自动安装所依赖的包.
常用命令
- 查询
#查询已经安装好的包
yum list
#查询指定安装的包
yum list | grep 'httpd'
yum list installed | grep ssh
- 安装
#选项 -y :安装过程中无须确认,直接安装依赖包
yum -y install httpd-devel.x86_64
- 卸载
yum -y remove httpd-devel.86_64
- yum 仓库: 地址
/etc/yum.repos.d/
- gpgkey 校验码:
gpgcheck = 1
开启校验,0
是关闭
16. 查看端口与进程
netstat -an | grep 端口号
netstat -lntp
ps -Af | grep 进程名
ps -ef | grep nginx
#也可以使用防火墙的命令来查询指定端口是否开放
firewall-cmd --query-port=要查询的端口/tcp
17. 使用 scp 将文件/目录分发到其他主机
scp -r ./hadoop-2.7.3/ yzhang@zyq03.com:/opt/app
#复制哪个目录,到哪台主机的哪个目录下
18. 使用 rsync 进行远程同步
使用 rsync
远程同步,可以处理符号链接问题, scp
处理不了符号链接, 同时速度也更快.
rsync -lr dirOrfile yzhang@zyq01.com:/path
#-l copy符号链接过去后仍为符号链接
#-r 递归
19. grep过滤与管道符
grep 过滤
-c 只输出匹配行的计数
-i 查询多文件时不显示文件名
-l 查询多文件时只输出包含匹配字符的文件名
-n 显示匹配行及行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-B before 前
-A after 后
--color 搜索出来的关键字变色
例1:
grep -i --color '关键字' 文件名
#搜索关键词的前五行和后五行
grep --color '关键字' 文件名 -B5 -a -A5
例2: 过滤出当前目录下带有 `t` 关键字的信息并变色.
ll | grep --color 't'
管道符, 用竖线表示 |
, 表示将前一个命令的输出结果传递给后面的命令处理,两边都是命令.
例 cat /etc/passwd | more
筛选过滤
例 cat /etc/passwd | grep 'root'
例 head -5 文件名 | grep 关键字 #搜索前五行中 包含关键字的行
过滤条件
例 ls /dev | grep 'odrom '
20. 追加和覆盖
追加 >>
以追加的方式将命令正确的结果输出到文件或设备中
#从student 中读取包含zhangsan 的行,追加到name.txt 中,name.txt 存在则直接追加,不存在则先创建文件再进行追加
grep 'zhangsan' student >> name.txt
覆盖符号为>
21. grep 结合正则表达式使用
-
^
表示起始 -
$
表示结束 -
.
表示单个字符 -
*
表示所有字符
例
#找出包含一个数字的信息
grep '[0-9]' /etc/xxxx
#找出包含三个数字的信息
grep '[0-9][0-9][0-9]' /etc/xxx
#找出包含三个数字后面以:7结尾的信息
grep '[0-9][0-9][0-9]:7' /etc/xxx
#搜索以txt 结尾的文件
ls | grep .txt$
#搜搜以r开始,以n结尾,中间为任意字符 .*联合起来使用表示 任意字符
grep '^r.*n$' /etc/xxx
22. 统计有多少文件和目录
ll | wc -l
23. 系统信息
uname #系统类型
uname -r #内核版本
cat /proc/cpuinfo #CPU信息
cat /proc/meminfo #内存信息
date #系统日期
date -R #系统时区
cal 2023 #日历表
date -s 2023-10-31 #设置系统时间(需要root)
date -s 15:45:25
df -lh #查看磁盘信息(需要root)
fdisk -l #查看磁盘信息(需要root)
mount #查看磁盘挂载信息(需要root)
mount 把什么挂载到什么地方 #挂载磁盘(需要root)
umount /xxx/sdb1 #卸载磁盘(需要root)
du -sh /home/xxx/ #查看某个目录的大小
du -h /home/xxx/
fsck /dev/xxx #修复磁盘
free -m #看系统内存的使用情况
top #各个进程内存的使用情况
top 按下 M 显示详细
24. 防火墙设置及开放端口
CentOS7中防火墙改变为 firewalld
- 查看防火墙状态
firewall-cmd --state
- 关闭防火墙
systemctl stop firewalld.service
- 启动防火墙
systemctl start firewalld.service
- 重启防火墙
firewall-cmd --reloadl
- 禁止firewall开机启动
systemctl disable firewalld.service
- 开放指定端口
firewall-cmd --zone=public --add-port=要开放的端口/tcp --permanent
- 关闭指定端口
firewall-cmd --zone=public --remove-port=要关闭的端口/tcp --permanent
- 查看指定端口是否开放
firewall-cmd --query-port=要查询的端口/tcp
25. 设置普通用户的 sudo 权限
切换到root
账户。
执行 vi /etc/sudoers
或者 visudo
在最上面插入
账户名 ALL=(root)NOPASSWD:ALL
yzhang ALL=(ALL) NOPASSWD: ALL
26. 压缩和解压缩
解压
-
.tar
结尾的tar -xvf xxx.tar
- 解压到当前目录
tar -xvf xxx.tar
- 解压到指定目录
tar -xvf xxx.tar -C dirPath
- 解压到当前目录
-
.tar.gz
结尾的- 解压到当前目录
tar -zxvf xxx.tar.gz
- 解压到指定目录
tar -zxvf xxx.tar.gz -C dirPath
- 解压到当前目录
-C
意思是重定向. 这个选项用在解压缩,若要在特定的目录解压缩,可以使用这个选项
压缩
-
.tar
结尾的-
tar -cvf test.tar test
#打包完成之后在压缩 -
gzip test.tar
#使用gzip直接压缩,源文件会被删除
-
-
.tar.gz
结尾的-
tar -zcvf zzz.tar.gz dir/file
#要打包的文件或者目录
-
27. 更换镜像源
选择一个好的镜像源加快Centos7系统的更新升级或者安装软件的速度
- 更换阿里的镜像源
- 先备份原来的
yum
源sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 设置阿里云的
yum
源sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 添加 EPEL源
-
EPEL
是由Fedora
社区打造,为RHEL
及衍生发行版如CentOS、Scientific Linux
等提供高质量软件包的项目。装上EPEL
后,可以像在Fedora
上一样,可以通过yum install package-name
,安装更多软件。 sudo wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
-
- 清理缓存并生成新的缓存
sudo yum clean all
sudo yum makecache
- 先备份原来的
- 安装完成后执行
sudo yum list
查看
[yzhang@zyq01 ~]$ sudo yum list
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com