liunx详解-1

一 文件系统

根目录结构

root root用户家目录

home 其他用户家目录

etc 系统配置目录

bin sbin 可执行二进制文件目录,sbin只有root可访问

opt 软件安装目录

usr 存放系统应用程序,/usr/local 本地管理员软件目录,用于yum安装软件

proc 内存的映射

mut 挂载存储设备,并能映射到指定路径

sys 系统相关

boot 引导文件目录

lib lib64 内核与核心依赖

dev 硬盘配置

tmp 存放各种临时文件

var 存放运行时需要改变数据的文件

lost found 当系统异常关闭时保存异常日志

media 多媒体

selinux 系统安全

基本文件命令

cd 完整路径/相对路径 切换文件目录

  • / 根目录ss

  • ../ 父目录(可连续使用)

  • ./ 当前目录

  • ~ 用户家目录(root用户家目录在/root 其他用户分别在/home/ )

  • 参数-a 显示隐藏文件

  • 无目标路径则切换至家目录

mkdir 文件夹

创建文件夹

  • mkdir ~/sxt

  • mkdir /sxt

  • mkdir -p ~/a/b/c -p 自动创建多级父文件夹

  • mkdir ~/sxt{1,2,3}a 创建sxt1a,sxt2a,sxt3a文件

rmdir 文件夹

删除空文件夹

cp 文件/文件夹 目标路径

复制文件(夹)到目标路径

  • cp -r haha ../ 参数r 表示文件夹表遍复制(将文件夹中的内容一起复制)

  • cp -f haha ../ 参数f 表示若存在重复文件则覆盖

  • cp -rf ~/aaa/* ../ 将aaa文件加下所有内容复制到父目录中 rf参数组合使用

  • cp aaa/bb* ../ 将aaa文件加下所有bb前缀的内容复制到父目录中

mv 文件/文件夹 目标路径

剪切文件(夹) 重命名(连同内容)

  • mv -f haha ../ 参数f 表示若存在重复文件则覆盖

  • mv haha hehe 相同目录下的移动也就是重命名

rm 文件(夹)

移除文件或文件夹

  • rm -f install.log 参数f 强制删除,不确认

  • rm -rf sxt 参数r 遍历删除文件夹

  • rm sxt* 支持模糊匹配,删除所有sxt开头的文件 ,一般用前后的*匹配

  • rm *.zip 输出zip结尾文件

touch 文件

  • 创建文件(若已存在,则不再创建)

  • 更新文件的元信息中的时间

ll 查看当前文件夹下的详细内容

  • ls -l --color=auto的别名

  • -a 参数查看隐藏文件显示

ls 查看当前文件夹下的内容

-a 参数查看隐藏文件显示

find 查找文件

  • find 文件夹 -name 文件名 在某文件夹下查找某文件路径

  • find 查找路径 -name p*(匹配文件名,适用通配) 在根目录下查找p开头的文件 *p 查找p结尾的文件

pwd 查看当前路径

stat 查看文件状态

  • Inode: 2097164 文件的物理位置编号(唯一)

  • Access: 2019-08-02 18:03:53.632972412 +0800 访问记录

  • Modify: 2019-08-02 18:03:24.688978095 +0800 数据修改记录(元数据随数据一同修改)

  • Change: 2019-08-02 18:03:24.688978095 +0800 元数据修改记录

  • touch会同时修改三个时间记录

du 查看某个文件或文件夹的大小

  • 参数-a 能够查看到内部的文件信息

  • 参数-h 格式友好

df 查看硬盘分区状况 参数-h 格式友好

文件查看命令

cat 查看文档的最后一屏 tac 倒序显示第一页内容

head 查看文件的前若干行

head -N 文件 查看文件的前N行

tail 查看文档最后若干行

  • tail -3 file 查看文件最后3行

  • tail -f 文件 参数-f 实现监控文件的改变,注意这是一个持续状态

head -5 文件 | tail -2 组合使用查看第4,5行

more 和 less 分屏查看文档内容

  • 回车 下一行

  • 空格 下一页

  • b 上一页

  • h 帮助

  • q 退出

ln文件链接

软链接

ln -s 文件 链接

  • 软链接直接显示与源文件的链接

  • 若源文件删除则软链接失效

  • 显示ll时显示连接属性

硬链接

ln 文件 链接

  • 硬链接与真实数据连接,指向物理地址

  • 源文件删除不影响硬链接

  • 硬链接不显示与源文件的链接

二 系统及命令

系统命令

yum install 软件名 -y 安装软件

poweroff 关机

reboot 重启

shell 主机名(ip) 远程连接其他主机,也是外部工具远程调用的方式

exit 用户退出登录

who 查询系统当前登录用户

whoami 查看当前用户

pwd 查看当前位置

config 查看系统配置

ifconfig 查看网络配置

echo $PATH 查看环境变量

锁屏与解锁

ctrl+s 锁屏,但是可以输入

ctrl+q 解锁

命令辅助指令

命令查询网站https://man.linuxde.net/

type 命令 判断命令类型内部/外部/别称

  • cd is a shell builtin 内部命令

  • ping is /bin/ping 外部命令,存在文件位置

  • ll is aliased to `ls -l --color=auto' 别名

  • if is a shell keyword 关键字,非命令

help 命令 内部命令帮助

man 命令 外部命令帮助(可能需要yum安装)

  • yum install man -y

  • 命令等级1-8

  • 查看:回车 下一行 空格 下一页 b 上一页 h 帮助 q 退出

whereis 程序名 查找命令/程序的相关位置

file 路径

  • 查看命令文件的格式

  • ELF:Unix通用命令或者可执行文件的格式

  • 64-bit :64位

-bash: java: command not found 没有这个命令,命令错误或未安装

命令格式

命令参数之间必须用空格隔开

命令及参数的大小写敏感

书写地址时尽量使用tab补齐

参数中若存在空格用""将参数括起来

" "会将字符串中变量转义 ‘ ’将字符串只识别为字符串

三 vi编辑器

打开命令

vi file 直接打开文件

vi +10 file 打开文档将光标定位到第10行

vi + file 打开文档将光标定位到最后一行

vi +/字符串 file 打开文档,将光标定位到搜索到的第一个匹配字符串上

三种模式及转换

编辑模式 通过esc键进入

输入模式 从编辑模式进入

  • i 当前字符之前

  • a 当前字符之后

  • o 当前字符下一行

  • I 行首

  • A 行尾

  • O 上一行

末行模式 从编辑模式通过 : 进入

编辑模式详解

光标跳转

G 光标跳行

  • G 光标跳至最后一行

  • 30G 光标跳至指定行(行)

g 光标跳行

  • gg 光标跳至第一行

  • 7gg光标跳转至第7行

w 光标跳转到下一个单词或特殊字符 (3w 向下跳3个字符)

b 光标跳转到上一个单词或特殊字符 (3b 向上跳3个字符)

^ 光标移动到行首

$ 光标移动到行尾

+- 光标下移上移

hjkl 光标上下左右移动

编辑操作

r 替换字符

  • r 字符 将当前光标所在字符替换成输入的字符

  • N r 字符 将从当前光标所在字符开始的N个字符替换为所输入的字符

dd 删除行

  • dd删除光标所在行

  • X dd 删除从光标所在行开始的X干行

dw 从光标位置开始,删除一个单词或特殊字符

  • 注意是从光标位置开始的,光标在单词中间,前半部分不会删除

  • X dw 删除从光标位置开始的X个单词

u 恢复前一编辑操作

. 取消u的操作

x 剪切字符

  • x 剪切光标当前字符

  • N x剪切光标开始的N个字符

yy 复制行

  • yy 复制一行 到粘贴板

  • Xyy 复制X行 到粘贴板

yw 复制单词

  • yw 复制一个单词 到粘贴板

  • Xyy 复制X个单词或特殊字符,从当前字符开始 到粘贴板

p 粘贴 (不覆盖)可配合末行模式使用

  • 字符:将粘贴板的字符插入到光标字符之后

  • 单词:将粘贴板的单词插入到光标字符之后

  • 行:将粘贴板的若干行插入到光标下一行或若干行

  • Xp 执行粘贴X次

P 粘贴 (不覆盖)可配合末行模式使用

  • 字符:将粘贴板的字符插入到光标字符之前,不覆盖原先内容

  • 单词:将粘贴板的单词插入到光标字符之前,不覆盖原先内容

  • 行:将粘贴板的若干行插入到光标下一行或若干行

ZZ 退出编辑器

末行模式详解

  • 删除(剪切)

    • X d 删除第X行:

    • X,Y d 删除第X行到Y行数据

    • X.+Y d 删除第X行开始的Y行数据

  • 复制

    • X y 复制第X行:

    • X,Y y 复制第X行到Y行数据

    • X.+Y y 复制第X行开始的Y行数据

  • 查询

    • :/XXX 查找文本中XXX

    • N下一个,n上一个

  • 替换

    • :s/XXX/YYY/ 将光标之后第一个查找到的XXX替换为YYY

    • :s/XXX/YYY/g 将光标所在行的所有XXX替换为YYY

    • :X,Ys/XXX/YYY/g 将X-Y行中所有XXX替换为YYY

    • :X,+Ys/XXX/YYY/g 将X及其下的Y行中所有XXX替换为YYY

    • :g/XXX/s//YYY/g 将全文中的XXX替换为YYY

  • set nu 设置行号 set nonu取消行号

  • 退出

    • q 退出

    • w 写入

    • q!取消保存并退出

    • qw 保存退出

若未正常退出,需要删除 .文件名称.swp

末行模式输入命令,可以用来复制

vim的安装

yum install vim -y

四 文件传输

linux互传

scp 文件 目标路径

  • 远端拉到本地 scp root@192.168.163.100:/root/123.war /root(将远端123.war文件下载到本地)

  • 本地文件发送到远端 scp /root/123.war root@192.168.163.100:/root/

参数-r 传输文件夹

scp复制文件会使得目标路径下的同名文件被覆盖

需要发送输入密码,可以通过免密码进行处理

linux传win

1 通过lrzsz 实现

  • yum install lrzsz -y

  • rz 接收win的文件

  • sz 向win发送文件

2 通过win安装ftp软件,远程连接实现

五 网络系统

ifconfig 查看网络配置 其中eth0为网卡1的配置 lo为环网配置。

ping 测试主机是否与目标主机连通

虚拟机连接模式

  • 桥接:与主机处于相同ip端,能被外网访问,ip与其他主机易冲突

  • 网络地址转换NTP:主机作为路由,所有虚拟机作为子IP,外网无法访问虚拟机

hosts文件内置DNS解析

  • liunx中 /etc/hosts

  • win中的地址为C:\Windows\System32\drivers\etc\hosts

netstat 当前网络信息

  • -anp 查看详细信息

  • -r 查看核心路由表

  • -l 仅列出监听状态下的服务

telnet 查看目标端口是否连通 用户查看软件端口是否打开

需要安装yum install telnet -y

telnet ip 端口号

  • 结果1:Connected to 192.168.163.11. 连接成功

  • 结果2:Connection refused 对方端口防火墙屏蔽或者没有监听

连接成功后退出:

  • 退出按下 ^]

  • 输入quit或q 退出

http请求:curl -X GET http://www.baidu.com/ 得到html文本需要输出到文件中

wget 下载网络资源,html等

六 权限系统及用户

用户

  • 文件位置

    /etc/passwd 保存用户信息及组信息

    /etc/shadow 保存用户的密码信息

  • 创建用户

    useradd 用户名 创建用户,自动创建同名组

    passwd 用户名 创建用户密码 需要两次输入确认密码

  • 删除用户

    userdel -r 用户名

  • 修改用户,用户需离线才能执行

    usermod -l 新用户名 旧用户名 修改用户名

    usermod -L 用户名 锁定用户,无法登陆

    usermod -U 用户名 解锁用户

  • 用户切换

    su 用户名

    exit 退出切换

  • 创建组命令:groupadd 组名

  • 删除组命令:groupdel 组名

  • 修改组名: groupmod -n 新组名 旧组名

  • 查询用户所在组:groups 用户名 (若无参数则查询当前用户所在组)

  • 为用户修改组或添加组,需要用户重新登录生效

    usermod -g 组 用户 修改用户所属主组,只会将主组修改

    usermod -G 组 用户 用户添加组

  • 组信息文件位置:/etc/group 其中,自定义组的编号从500开始往后排

sudo

sudo使得其他用户具备root身份执行命令

  • 执行格式:sudo 命令

    以root身份执行命令,系统视为root用户执行

    每15min验证一次身份

  • 执行前需对/etc/sudoers只读文件修改,使得指定用户具备sudo权限

    修改命令为visudo

    进入文件后约99行位置添加以下内容,使得目标用户具备执行/usr/sbin目录下的所有命令

    目标用户名      ALL=(root)      /usr/sbin/*

文件权限

ll命令获取的文件信息
drwxr-xr-x. 7 root root   4096   Nov 11 20:19 sysconfig
-r---w-r--. 1 yw   yw     1150   Nov 23 20:13 123.py
lrwxrwxrwx. 1 root root   14     Aug 1 19:33 system-release -> 123.py

信息包括:前缀,文件个数 ,所属用户 ,所属组,占用空间,修改时间,文件名,链接信息

前缀说明

  • 第一位为文件类型

    d 文件夹 - 文件 l 软链接

  • UGO模型

    2-4位:u 用户权限

    5-7位:g 组权限

    7-9位:o 其他用户权限

  • rwx权限

    UGO每种权限对应一组rwx权限

    r 读 w 写 x 执行(文件必须拥有此权限才能执行)

修改文件权限

文件所属信息修改

  • chown 用户:组 file 修改文件的所属用户及组

  • chown 用户 file 修改文件的所属用户

  • chgrp 组 file 修改文件所属组

以上命令适用root用户

参数-R 遍历修改文件夹及其子文件的权限

chmod 权限修改

  • chmod [ugo]+/-[rwx] file 分别为ugo加减权限,适用集中修改

    例1:chmod ugo+rwx file 添加全部读写执行权限

    例2:chmod o-wx file 去除其他用户的写与执行权限

  • chmod 700 file 通过数组执行权限修改

    三位数字分别对应ugo三种权限对象

    将xwx视为二进制的111,范围0-7

    r权重4 w权重2 x权重1

    0 ---,1 --x,2 -w-,3 -wx,4 r--,5 r-x,6 rw-,7 rwx

七 进程proc

  • ps -ef 查看当前进程

    • UID所属用户

    • PID进程号

    • PPID父进程,若父进程关闭则改为父父进程

    • CMD为进程信息

    ps -ef | grep xxx 查找xxx的进程号

  • kill -9 进程号 杀死指定进程

  • ps -aux 只查看当前用户的详细进程信息

  • top 查看实时的系统运行情况

  • jobs -l 查看当前终端中的后台进程

  • 后台进程

    • 格式:命令 & (实现命令后台执行,在新的子线程中执行,不会阻塞原线程)

    • 后台进程执行一段时间后会被挂起

      nohup 后台命令 (该命令不会被挂起)

    • nohup ping www. 163.com > 123 2>&1 &

      重定向的命令需设成功失败两种输出方式,否则无法执行

八 管道与重定向

重定向

  • 将数据输出方向转到指定方向,默认输出控制台

  • > 覆盖输出 >> 追加输出

  • 输出种类 1>> 标准输出(默认) 2>> 错误输出 后缀2>&1全部输出

    ls ~/aaa 1> info 将标准的命令结果覆盖输出到info 文件中

    ls ~/aaa 2>> info 将错误的命令结果追加输出到info 文件中

    ls ~/aaa >>info 2>&1 无论是否错误都将结果输出到info 文件中

  • 默认是使用当前进程,会造成进程阻塞,&后台进程执行

    ping www.163.com >> 123 使用当前进程

    ping www.163.com >> 123 & 使用后台子进程执行

  • 输入重定向 cat < info 输入重定向,符号反向。

  • 命令 > /dev/null 数据输出到 /dev/null 信息黑洞自动丢失

管道

  • 将前面命令的结果传递给后面的命令

  • ps -ef | tail -3 查看检查前3行

  • ps -ef | grep sshd 查看ssh相关的进程的行

上一篇:【Liunx】centos防火墙


下一篇:【Liunx】基础命令