linux编程系统命令全信息详解
树图思维导图提供 linux命令全信息脑图 在线思维导图免费制作,点击“编辑”按钮,可对 linux命令全信息脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:f32d8fa6ff2df6c3a2dec1b1855bef71
linux命令思维导图模板大纲
ssh 远程连接 :ssh 用户名@IP地址 端口号
语法:uname -参数 如:uname -a
cat -n 文件名 :查看文件且显示行号
cat file1 file2 file3 >新文件 : 查看多个文件且写入到一个文件中,
cat -n file1 file2 >file3 : 结合重定向查看多个文件一共多少行
cat -b 文件 只给有内容的行,显示其行号,空行不显示
cat -E 显示文本每一行的$符号,每一行的结尾都会添加一个你看不到的$,表示改行的结尾
cat >>文件名<< EOF >内容1 >内容2 >... >EOF 写入多行数据
tac 将文件从后向前倒着查看
more 命令:分屏显示文本内容 空格: 翻篇 回车:下一行, 但是同cat一样很占内存
less 命令: 如果文本内容过多的话,不会一次性显示读取完,显示页面有多大就先显示多少; 空格: 翻篇 回车:下一行
head -3 文件 :查看文件前3行
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 前提是文件是存在的
可用于检测用户访问网站的行为 tail -f 访问日志 跟踪文件内容变化,但是需要文件退出后,可见,检测程序的日志变化(程序代码追加新内容到文件中)
tail -F filename 也是检测文件内容变化的 ;文件可以是不存在的
ip addr
pwd 打印当前在哪个绝对路径下
rmdir 删除空文件夹 :rmdir 文件夹路径;
mkdir 文件夹名 当前目录不存在该文件夹名字 则自动创建;存在则报错
mkdir dir1 dir2 一次性创建多个文件夹
mkdir ./dir1 ./dir2 ../dir3 一次性创建多个文件夹
一次性 递归创建多个文件夹
-p
mkdir -p /data/ops/nginx/
-p 自动判断,后边的文件夹路径,一层层是否存在,不存在则自动创建
在某个目录,创建多个同级文件夹:shell的花括号用法 (适用于touch, mkdir):
mkdir /opt/{王超,玉超,老王}
touch /opt/{王超,玉超,老王}
创建多个连续的,有规律的文件,1,2,3,4,5 touch /opt/{1..100}.log
logout 退出linux会话
win : ssh user@host port
linux : ssh -p port user@host
文件名不要使用 /
文件名不要使用特殊符号 如:<>,?*
如果需要用到特殊符号 ,文件名加上 单引号 ‘’
当文件名有空格等特殊符号,系统会自动把特殊符号进行转义,用反斜线 \ 显示
echo"你好"
linux 下,1. 单引号 表示 不做特殊符号转义,仅仅是一个纯字符串 2. 双引号 也表示 定义字符串,但它也能 识别特殊符号
echo "你好" > yuchao :把“你好”写入到了yuchao文件上了 同时新建了个yuchao文件;> 号是 重定向输出符
ls -l (参数,选项):显示更详细的信息,以列表展示; 简写为ll
ls -lh 查看文件详细信息 及 大小并以KB ,MB ,GB单位显示
ls -a (--all) 显示目录中所有文件,包括隐藏文件 ;每个目录下都有两个特殊目录,以及一些特殊文件
. 表示所处目录本身文件夹,
.. 表示所处目录的 上一级文件夹
.filename 以. 开头的文件,表示是隐藏文件 ;如:建一个隐藏文件 touch .yuchao
ls -l -d 仅仅显示文件夹本身的详细信息
systemctl start/stop/restart network 开启/停止/重启 网络服务
systemctl start 某项应用 :开启 systemctl stop 某项应用 :停止 systemctl restart 某项应用 :重启 systemctl reload 某项应用 :重新加载 systemctl enable 某项应用 :开机自启(持久化) systemctl disable 某项应用 :禁止开机自启 systemctl is-enabled 某项应用 :查询是否持久化(是否开机自启)
su 切换用户 :su - 用户名; 这个短横线表示切换用户的环境变量PATH,且进入该用户家目录,linux中每个用户都有自己的到单独的一套环境变量
1.修改完之后 直接输入 bash 重新加载系统的环境信息实现
2.退出登录实现
3.存放主机名的文件 /etc/hostname / 下
which 命令 在PATH中找到可执行命令存放在哪个路径下:linux命令实际是可执行文件 如:which ls
只输入id 显示当前登录用户
whoami 也是 显示当前登录用户
补全命令
补全文件路径
它也是去PATH变量(系统环境变量)路径中寻找的
- 代表上一次的操作 : cd -
stat文件时间属性
access time (访问时间)
cat
more
less
grep
change time (文件属性变化的时间)
chmod
chown
mv
当文件名发生比变化,文件属性即发生了变化,导致change时间更改
modify time (文件内容发生变化的时间)
文件内容变化 echo '我是成龙'>file.txt
mtime 变化会同时修改ctime
在该文件中,写入配置,并且是主,备,两个dns服务器的地址,为防止,第一个dns服务器挂掉,就无法做域名解析了
[root@linux01~]# cat /etc/resolv.conf Generated by NetworkManager nameserver 114.114.114.114 nameserver 223.5.5.5
其他主流的dns服务器地址
223.5.5.5---阿里云dns
223.6.6.6
1.1.1.1
119.29.29.29
公网dns
223.5.5.5
绿色的。正确的公网dns服务器
恶意的dns劫持
访问 www.baidu.com,,,却打开了传奇游戏页面
解决办法:修复客户端正确的dns服务器即可
hosts文件,也是关于dns劫持的一个重要因素,并且更直接
区分与windows和linux
history -c 清空历史记录
w命令 查看系统登录了几个用户
uptime 查看机器开机多久
需要联网安装后使用:yum install tree -y
tree -N 显示中文
tree -NF 显示文件类型
-r 递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有子目录和文件
-f 强制删除,不提示任何信息,慎重使用
-i 删除前需要确认
rm 玩家{30..35}.log
ln命令 ln是link的意思,表示创建一个快捷方式,和windows 图标快捷方式一样
自由修改别名 alias rm='rm -i' 自定义用法 变量='变量值',简化繁琐的命令+路径,如查看log日志很繁琐可以定义个命令: alias lg= 'ls /var/log' 以后只要输入 lg命令 就可查询日志了
这是临时好用的,下次启动就不行了,要想永久好用又不影响别人就写入到自己的用户环境变量中: ~/.bash_profile
unalias 别名 ; 取消别名
yum install vim -y
使用模式: 打开文件后 按下输入键 i 键(insert) --开始写东西,写完后 按Esc键 退出编辑模式,--- :wq! (w写入,q退出 ,!强制操作); 如果不保存退出:q!
移动光标位置,并进入编辑模式
i : 表示从光标所在的位置进入编辑模式
I : 表示将光标移动到一行的行首,再进入编辑模式
o : 再光标所在行的下面,新起一行进行编辑
O:在光标所在行的上面,新起一行进行编辑
a : 将光标移动到右边的下一个字符,进行编辑
A : 将光标移动到一行的行尾,进入到编辑模式
C : 将光标到行尾的内容进行删除,并进入编辑模式
cc : 将整行内容进行删除并进入编辑状态
只移动光标,不进入编辑模式
G : 将光标快速切换尾部
gg : 将光标快速切换首部
ngg : n表示移动到第几行
$ : 将光标移动到一行的结尾
0或^ 将光标移动到一行的行首
命令模式——底行模式
: 输入一些命令
/ 进入搜索状态(向下搜索 n依次向下)
? 进入搜索状态 (向上搜索 n 依次向上)
特殊使用技巧
dd 将一行内容进行删除(剪切)
3dd 将多行内容进行删除(剪切)
p 将内容进行粘贴
3p 粘贴多次内容
yy 复制一行内容
3yy 复制多行内容
u (undo) 操作错误如何还原
1.拷贝文件,且换名:cp /opt/wangchao.txt /home/王超.txt
2.拷贝单个文件,并保持原名称 : cp /opt/wangchao.txt /
3. 拷贝文件夹,以及递归拷贝操作: cp -r 原文件夹路径 目标文件夹路径
mv移动,剪切,重命名
语法:tar 参数选项 打包之后的文件名 要打包的文件或目录1 要打包的文件或目录2
-c creat 创建 打包
-v 显示文件打包过程
-f 指定文件打包名,此参数必须有,且必须在最后一位
-u update的缩写,更新原打包文件中的文件
-t 查看打包的文件内容 (不解压,看看有什么)
-x 解包,解压缩(将一个单个压缩文件,解压其内容)
tar -xf 通用的万能解压缩命令,可以自动适配各种压缩格式
-z 压缩操作,是tar命令去调用gzip命令的过程,压缩的参数 :tar -czvf 压缩后的名称 要压缩的文件
-z,压缩为.gz格式 ,记住用这个就好了,主流的80%人都用这个 你拿到一个 all_files.tar.gz ,这个如何解压? tar -zxvf all_files.tar.gz
如果只解压缩不拆包 用:gzip -d 压缩包 再拆包:tar -xvf tar包
-j,压缩为.bz2格式 all_files.tar.bz2 ,如何解压? tar -xjvf all_files.tar.bz2
-J,压缩为.xz格式
-C(大写c ) :解压到指定目录中: tar -xf 压缩文件名 -C 指定的路径
用tar命令压缩的文件,一般后缀如 *.tar 仅仅是打包了 *.tar.gz 打包+压缩 *.tgz 打包+压缩
zip 仅仅压缩多个文件的用法 : zip 压缩后的名称 要压缩的文件1 要压缩的文件2 并且自动给压缩后的文件添加 .zip后缀
zip压缩文件,和文件夹 : zip -r 压缩后的名字 要压缩的文件夹 要压缩的文件
该命令可能需要安装:yum install unzip -y
unzip 要解压的文件 -d 要解压到什么位置
PATH :echo ${PATH} 打印系统环境变量路径 当执行命令时,系统优先去PATH中定义目录中寻找,有则执行,无则报错
LANG :ECHO${LANG} 显示是什么字体 ,
LANG ="en_US.UTF-8" 字体是英文
LANG="zh_CN.UTF-8 " 字体是中文
yum install wget -y
wget 资源url地址
wget -O 指定文件下载到哪 资源下载链接
ps -ef |grep nginx 查看nginx进程信息,是否存在
iptables -F 关闭服务器的防火墙
wc -l 文件 : 统计行数
wc -w 统计多少个单词
wc - c 统计多少个字节数
wc -m 统计多少个字符 有几个字母就有几个字符
du -h 查看当前目录总大小,(kb)单位
du -ah 查看当前目录所有文件(包括子目录)
du -s 显示总计大小
find / -name doupo.txt 找出系统中doupo.txt 文件绝对路径
find /var -type f -name "*.log" 找出/var/下所有.log文件,文本类型文件
.log .txt .tar .tgz .png .gif 他们都是普通文本类型,都可以用 -type f 去查找
find /var -type -d -name "*.log" 查目录,文件夹类型的文件
find ~ -name 'nginx.tgz' 找出家目录下的nginx.tgz 文件 ~代表家目录
find / -type f -name '*.tar' -o -name '*.tgz' -o -name '*.zip' -o -name '*.tar.gz' 找出系统中所有的压缩文件 -o 参数表示 或者 的意思,找出多种类型文件时可用 ;补充:-a 并且的意思
find / -type f -size +20M -name '*.tar' 找出根目录下大于20M的.tar文件 +20M:大于20M , -20 M 小于20M ,20M 等于20M
find / -maxdepth 3 -type f -name filename :限定最大搜索目录为3层 找出某个文件 -maxdepth num 搜索深度,以用户指定的搜索路径为起点
-perm 777 查找权限为777的文件
grep '关键字' 文件名
grep -n '关键字' 文件名 :找出关键字并显示在第几行
grep -i '关键字' 文件名 :忽略大小写 ; 结合-n grep -n -i
grep -l 只打印匹配的 文件名
grep -r 递归查找
命令1 | 命令2
进程过滤 ps -ef | grep '关键字'
端口过滤 netatat -tunlp | grep '22'
统计/var/log中 有多少的.log 文件 find /var/log -name '*.log' | wc -l
统计系统有多少个用户 cat /etc/passwd | wc -l
命令1 | xargs -i 选项 选项 用{}代替传递的数据
如:备份.log文件 (批量备份) find /tmp/ -name '*.log' | xargs -i {} {}.abk
find / -name '.txt' -exec rm{} \; 删除找出的.txt文件 -exec命令 :找到资料后的处理动作 ;用法: 最后要加 ; 并用 \ 转义
find / -name '.txt' -ok rm {} \; 删除之前-ok会提示
netstat -tunlp 这个组合参数,是查看系统上,所有的端口信息
rename 重命名 : rename 原字符串 新字符串 文件对象
groupadd 组添加
group 组名 创建组
group 参数 组名
-g 设置组id号 默认从1000开始,1-999 是系统预留的组 : groupadd -g 1010 zuming
groupmod 组修改
groupmod 参数 组名
groupmod -n 新名字 原组名 ;修改组名
groupmod -g id号 组名 ; 修改组ID ,-g 代表 gid
groupdel 组删除
groupdel 组名
/etc/passwd 创建用户信息写在这个文件中
useradd 用户名
useradd 用户名 -g 主组名 :创建的时候就加入某个组(设置主组)
useradd 用户名 -G 组名 2 : 既属于自己组 也属于组名2 这个组(设置附加组)
-u :uid 用户的id
-M : 不创建用户家目录
用户没有家目录切换该用户时会报错,因为系统无法读取用户的个人配置文件,在使用useradd创建用户的时候,系统会自动去/etc/skel目录下拷贝所有的用户个人环境变量到家目录/home/用户名 下,要解决故障就要拷贝/etc/skel/目录下的所有相关配置文件到用户家目录下:cp -r /etc/skel /home/用户名 即可
-c : 添加注释、在/etc/passd中设置用户注释(选择是否添加)
-s : 设置用户登录shell解释器
/bin/bash 该用户登录系统后,给他使用bash翻译官
/sbin/nologin 该用户是无法登录的
用户创建过程,涉及的配置文件
1、在/etc/passwd 文件中创建一行关于这个用户的数据 2、在/etc/shasow文件中新增了一行关于这个用户密码的数据 3、在/etc/group文件中创建一行与用户名相同的组 4、在/etc/gshadow 文件中新增一行与新增群组相关的密码信息 5、自动创建用户的家目录,默认在/home下,与用户名同名
head -5 /etc/passwd 查看系统中前5个用户 tail -5 /etc/passwd 查看系统中后5个用户
-g 设置主组group
-G 设置附加组
-u 设置UID
-L 上锁,Lock ,禁止登录
-U 解锁
-c 添加注释
-s 设置用户登录的shell
修改当前机器用户信息
修改用户信息
禁止登录
想删除用户建议注释/etc/passwd用户信息而非直接删除用户
userdel 用户名 仅删除用户,保留其家目录
-f 强制删除用户,即使用户当前已登录
-r 删除用户的同时,删除与用户相关的所有文件
修改密码 (交互式) passwd 用户名
标准输入,非交互式设置密码 --stdin
echo '密码' | passwd --stdin 用户名
--stdin 给程序传入的数据 只有根用户才能执行此操作
stdout 程序执行产生的结果 如ls命令
密码写到这个文件/etc/shadow 默认是0权限,除了root用户任何用户不得查看 两个!!号是空密码
chpasswd 批量更新用户密码
chage 修改用户密码属性
id -u 显示用户id号
id -g 显示组ID
id -un 显示用户名
id -gn 显示用户组名
whoami 打印当前用户名
who 显示已登录的用户终端信息
tty 是虚拟终端的代称
pts/序号 ssh远程终端的代称
w 显示系统登录用户信息,以及负载信息
last 显示近期登录的终端记录
last -5 显示最新的5条登录记录
lastlog 显示关于用户的的登录记录
su 切换用户
作用是让普通用户不需要root密码即可使用root权限执行命令
1.需要编辑sudo配置文件 /etc/sudoers 你可以用vim去编辑这个文件但是2...
2. linux 提供visudo命令 默认用vi 去打开该文件,且提供语法检测功能
关于如何修改配置文件
1、打开/etc/sudoers文件,找到92行如下配置 ## Allow root to run any commands anywhere root ALL=(ALL) ALL yuchao ALL=(ALL) ALL
ln -s 命令的源路径 快捷方式的路径
chmod 选项 权限 文件
写法1:chmod u-r 文件名 写法2: chmod =rwx 文件名 写法3: chmod u=r,g=rw 文件名
chmod u-w 文件名
chmod u-x 文件名
chmod 702 文件名 702= rwx --- -w-
chgrp 组名 文件名
chown user 文件名
修改属主
chown 属主.属组 文件名
修改文件的属主,属组
chown .属组 文件名
修改文件的属组
1. 系统是用什么用户登录的,以及后续的文件创建动作
2.时不时的观察下文件的权限属性
如:ls -l /etc/passwd (看文件属性时) 属主,属组的权限属性是什么
如: ls -ld /data (看文件夹属性时) 属主,属组的权限属性是什么
3. 普通用户之间无法直接修改
chmod 改文件权限
chown 改文件属主
chgrp 改文件属组
4. root用户可以直接修改任意文件的权限属性
env 查看用户的环境变量
set | grep PS1 PS1:控制命令提示符的 PS1='[\u@\h \W]\$ '
unset 取消变量的赋值
可以判断出.txt类型
可以判断图片文件
可以判断出二进制文件类型
lsattr [-adlRvV] [文件或目录...]
子主题 1
date 查看系统时间
-n 根据字符串数值进行比较
-r 倒叙排序
-c 统计重复了多少次
nslookup : name server look up 名称服务器查找,简称,域名查找
交互式 (等待你输入,然后等待给结果) :nslookup
非交互式(等待你输入,然后等待给结果): nslookup www.baidu.com
dig :dig @全局域名ip 你的域名 dig@223.5.5.5 www.baidu.com
rm命令,删除文件是可以恢复的(你的操作其实被系统监控,录制,做了个备份),只要磁盘还未彻底删除,根据磁盘恢复数据手段,还是可以把数据拿回来的,shred之所以叫粉碎文件,是随机写入一堆二进制数据,导致文件无法使用
1.把数据传给另一台机器 :scp 源数据 远程机器 scp /etc/passwd root@192.168.231.133/opt 递归传输 scp -r
2.从另一台机器上拿取数据 : scp 远程机器 自己的机器 scp root@192.168.231.133/opt /etc 递归传输 scp -r root@192.168.231.133/opt /etc
树图思维导图提供 Linux 网络基础知识 在线思维导图免费制作,点击“编辑”按钮,可对 Linux 网络基础知识 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:199680f0e48eac8a1aeaadb90447d4f4
树图思维导图提供 抓住重点 在线思维导图免费制作,点击“编辑”按钮,可对 抓住重点 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:4c49e4799ddf94a339c56e46eb96a826