1、查看帮助信息
1.用man手册,linux提供的帮助文档
man ls
man cp
man mkdir
man /etc/profile # 可以查看文件的帮助信息
2.命令加上 --help参数,查看简短帮助信息
mkdir --help
rm --help
3、bash解释器内置命令的帮助
help -m cd
4、搜索引擎
linux cat
2、whoami
查看当前登录用户
3、which
查看二进制命令所在的目录
从PATH环境变量中查找
which cp
/usr/bin/cp
4、whereis
查看文件及文件的帮助等的路径
5、locate
通过内置updatedb数据库查找
yum install mlocate -y
6、hostname
查看主机名
7、ip add
查看本机ip
8、ip route
查看网关
9、ls
(list)
查看目录下的内容
ls -l /etc 查看文件的属性(use a long listing format)
ls -a /etc 显示所有文件,包含隐藏文件,以点开头的文件是隐藏文件
-d 查看目录本身
ls -lh # -h参数(human),是显示文件单位,以kb mb gb大小为单位 -l是列表形式,列出文件夹中详细信息
10、pwd
(print work directory)
打印当前工作目录
11、cd
(change dir)
切换目录
~ # 用户的家目录
. # 当前目录
.. # 上一级目录
# # root用户提示符
$ $ 普通用户提示符
* 匹配所有
cd - # 切换到上一次的目录
12、touch
创建文件
重复创建不会覆盖,只会修改时间戳
13、mkdir
mkdir 感谢老铁的花花
mkdir -p 斗鱼/lol # 递归创建目录 -p
mkdir stu{1..1000} # 创建stu0到stu999共1000个文件夹
mkdir m1 m2 m3 # 同时创建3个文件
14、tree
以树状图显示文件目录的层级结构
#确保你的机器可以上网 ,yum如同pip一样,自动的安装东西,解决依赖
# pip 是给python安装模块的工具
# yum 是给linux安装系统软件的工具
yum install tree -y # -y默认yes同意安装
[root@s25linux tmp]# mkdir -p a/b c/d
[root@s25linux tmp]# tree
tree -L 1 目录 # 自定义显示几级菜单(level)
tree -d # 只显示目录
-a # all所有文件
15、echo
echo命令如同python的print一样,能够输出字符串到屏幕给用户看,打印的默认分隔符是空格
-n do not output the trailing newline
-e enable interpretation of backslash escapes
数列:{a..z} 从a到z的所有字母
[root@s25linux tmp]# echo "感谢老铁送上的奥力给"
感谢老铁送上的奥力给
#linux在命令行的变量赋值,是临时生效的
#输出变量的值
#定义变量,中间有空格
name="感谢老铁送上的飞机"
#输出变量的值
[root@s25linux tmp]# echo $name
感谢老铁送上的飞机
16、seq
print a sequence of numbers 打印数字序列
seq 起始值 步长 终止值 # 纵向打印的设置
17、cat
cat 瞄一眼 文件的内容
cat -n 文件名 #读取内容,且显示行号
cat 文件名
[root@s25linux tmp]# cat first.py
print ("你看这个灯,它又大又量")
#利用cat写入文件内容,写一首诗
[root@s25linux tmp]# cat >> second.py << EOF
> #!coding:utf-8
> print("爱的魔力转圈圈")
> EOF
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]# cat second.py
#!coding:utf-8
print("爱的魔力转圈圈")
18、cp
拷贝
#对于配置文件的修改,或者是代码文件的修改,防止突然写错了,复制一份
#复制文件
[root@s25linux tmp]# cp 木兰诗.txt 新_木兰诗.txt
#复制文件夹,复制文件夹需要添加 -r 递归复制参数 -a 存档archive也可以复制文件夹,保持属性
[root@s25linux tmp]# cp -r avi new_avi
-t 将源文件和目标目录的位置互换
19、mv
mv命令可以 移动文件 ,文件夹的路径
mv命令也能够进行 重命名即把文件移动到当前目录
1.重命名的功能
语法是
mv 旧文件名 新文件名
[root@s25linux tmp]# mv 木兰诗.txt new_木兰诗.txt
2.移动位置
语法
mv 你要移动的文件或是文件夹 移动之后的目录名(如果文件夹存在,则移动,不存在是改名)
案例
mv test.txt b #移动 test.txt文件 到 b文件夹下(b文件夹得存在)
20、rm
rm -f 强制删除
rm -r 递归删除目录
rm -rf 强制删除目录
21、alias(别名)
为什么rm命令默认会有一个让用户确认删除的动作呢?
alias #直接输入可以查看当前系统的别名
案例
1.给系统添加一个别名
alias start="python3 /home/mysite/manager.py runserver 0.0.0.0:8000"
用途一:
简化操作
用途二:
alias rm="don't use rm commond"
提示用户不要使用危险的命令
1、可使用转义符在不删除别名的情况下不使用别名
\rm a.txt
2、或使用命令的全路径绕过别名
\bin\rm a.txt
22、unalias (取消别名)
unalias mv
设置和取消别名都是临时生效,重启后恢复
23、find
可以用于搜索机器上所有的资料,按照文件名搜索
语法
find 你要从哪找 -type 你要的文件类型是什么 -size 你要的文件内容多大 -name 你要的内容名字是什么
-type d 是找 文件夹 类型
-name 是指定文件的名字内容
#在系统上 全局搜索,所有的.txt文件
find / -name "*.txt"
#指定在etc目录下,进行局部搜索,一个网卡配置文件,网卡名字是以ifcfg开头的 ,文本类型文件
find /etc -type f -name "ifcfg*"
-size +1M
-1M
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option
or the -follow option is in effect, unless the sym‐
bolic link is broken. If you want to search for
symbolic links when -L is in effect, use -xtype.
s socket
D door (Solaris)
组合搜索:默认取交集(-a)and,取并集(-o)or ,取反!
-mtime 按时间
-mtime +7 7天前的
-mtime 7 第7天的
-mtime -7 最近7天的
模拟每天创建一个文件,连续30天
mkdir /data -p
for n in {01..30};do date -s "2030/05/0$n";touch /data/file$n;done
find . -mtime -7 查找最近7天创建的文件
-perm 按权限
-user 按用户
-exec 执行动作
-perm 按权限
[root@oldboy data]# mkdir oldboydir
[root@oldboy data]# find /data -perm 755
/data
/data/oldboydir
-user 按用户
[root@oldboy data]# chown oldboy oldboydir
[root@oldboy data]# find /data -user oldboy
/data/oldboydir
综合应用
-i 可以让后面的{}接收搜索到的内容。
find . -name "*.txt" | xargs cp -t /tmp/a
find . -name "*.txt" | xargs -i cp {} /tmp/a
find /data -name "file*" -mtime -7|xargs -i rm -f {} #完整写法
24、重定向
> 标准输出重定向 ,如同 python的 with open 中的 w模式 相当于1>
>> 标准输出追加重定向 ,如同 a模式 ,相当于1>
2> 2>> 错误输出重定向,将输出错误的结果
&> &>> 或>>c.txt 2>&1 正确的和错误的都输出
/dev/null 黑洞,放入的文件
/dev/zero 零设备,不断产生东西
[root@mawei ~]# cha >a.txt 2>b.txt
[root@mawei ~]# cat b.txt
bash: cha: command not found...
< 或 0< #重定向写入覆盖符,用在数据导入等操作中,mysql数据导入
<< 或 0<< #用在cat命令中
# 批量插入多行文本
cat >/oldboy.txt<<EOF
10.0.0.7
10.0.0.8
10.0.0.9
EOF
25、xargs
build and execute command lines from standard input
-n 指定将多少项作为命令行参数
xargs -n 3 <a.txt a.txt中的内容每三个一行显示
-i [replace-str]
This option is a synonym for -Ireplace-str if replace-str
is specified. If the replace-str argument is missing, the
effect is the same as -I{}. This option is deprecated; use
-I instead.
-n max-args
Use at most max-args arguments per command line. Fewer
than max-args arguments will be used if the size (see the
-s option) is exceeded, unless the -x option is given, in
which case xargs will exit.
26、管道符
| 过滤
1.例如过滤服务器上的进程信息
2.例如过滤服务器上的端口状态信息
27、grep(正则)
grep从文本中过滤有用信息的命令
grep "mysql" /etc/services # 字符串加双引号
-v 参数是 翻转过滤结果
[root@linux tmp]# grep -v "^$" test.txt 找出 空白行以外的内容
-i 忽略大小写
grep -i "al" test.txt
-n 参数显示行号
grep -n "大" test.txt
例如:
find / "*.txt" | grep mysql
28、head、tail
head /etc/passwd #默认看前10行
head -3 /etc/passwd #查看文件的前3行
tail 文件名 #默认从文件的后10行看
tail -2 /etc/passwd #查看文件的后2行
tail命令的实时监控
可以用于检测线上的日志文件,检测用户的请求信息
tail -f 文件名 #实时刷新文件内容
tail -f /tmp/test.txt #能够检测文件内容的变化
29、scp
(secure copy)
在2台linux机器(macos)之间,通过网络安全的传输文件,文件夹
环境准备,准备2台linux机器
确保两台机器能够通信
机器1:192.168.178.134
机器2:192.168.178.235
案例1:
我登录的是 机器1
需求1:将机器1的/tmp/好嗨哦.txt 发送到 机器2的/tmp目录下
[root@linux tmp]# scp /tmp/好嗨哦.txt root@192.168.178.235:/tmp/
需求2:把机器2的/tmp目录下的资料 给拿到本地的/opt目录下
scp 你想要的内容 内容发送到哪里
scp root@192.168.178.235:/tmp/小样别偷看.txt /opt/
情况2,我登录的是 机器2
【把别人的资料拿来】
案例1:我想拿到机器1的/opt/test.txt 拿到机器2的/tmp目录下
scp 我想要的内容 内容存放的地点
scp root@192.168.178.134:/opt/test.txt /tmp/
【把自己的资料发给别人】
案例2:我想把本地的/home/fisrst.py 发送给机器1的/home目录下
scp /home/first.py 账号@机器1:/home/
scp /home/first.py root@192.168.178.134:/home/
#如果发送的是整个文件夹,就得加上 -r 递归的拷贝参数
[root@linux tmp]# scp -r ./lol root@192.168.178.235:/tmp/
#用通配符发送多个文件
[root@linux tmp]# scp -r ./* root@192.168.178.235:/tmp/134bak/
30、lrzsz工具
用于windows(基于xshell工具)和linux之间互相传递文件
1.安装此工具
yum install lrzsz -y
2.安装好lrzsz之后,就存在了2个命令 一个是 rz 一个是sz
rz #直接输入rz命令,能够蹦出一个弹窗,接收windows的资料
sz 文件 #发送linux的一个文件,发给 windows某个位置,也是出现一个弹窗
31、date
时间
[root@centos ~]# date -s "2100/07/26 23:00:01"
2100年 07月 26日 星期一 23:00:01 CST
[root@centos ~]# date +%F
2100-07-26
[root@centos ~]# date +%Y
2100
[root@centos ~]# date +%m
07
[root@centos ~]# date +%d
26
[root@centos ~]# date +%w
1
[root@centos ~]# date +%H
23
[root@centos ~]# date +%M
01
[root@centos ~]# date +%S
30
[root@centos ~]# date +%Y-%m-%d\ %H:%m:%S
2100-07-26 23:07:49
过去和未来
[root@oldboy ~]# date +%F -d '-3day'
2100-07-23
[root@oldboy ~]# date +%F -d '+3day'
2100-07-29
[root@oldboy ~]# date +%F -d '-100year'
2000-07-26
[root@oldboy ~]# date +%F -d '+100year'
2200-07-26
服务器时间和互联网时间同步:
ntpdata ntp2.aliyun.com
32、du
(disk usage)
用法
du 【参数】【文件或目录】
-s (summarize) 显示总计
-h (human) 以k,M,G为单位显示,可读性强
案例
统计/var/log/文件夹大小
du -sh /var/log/
#显示当前目录下 所有文件的大小
[root@linux tmp]# du -h ./*
33、top
能够显示 动态的进程信息,cpu、内存,网络,磁盘io等使用情况
linux的资源管理器 就是top命令
第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比
第四行:内存信息(与第五行的信息类似与free命令)
total:物理内存总量
used:已使用的内存总量
free:空闲的内存总量(free+used=total)
buffers:用作内核缓存的内存量
第五行:swap信息
total:交换分区总量
used:已使用的交换分区总量
free:空闲交换区总量
cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
34、ps
process status
用于查看linux进程信息的命令
语法就是
ps -ef # -ef,是一个组合参数,-e -f 的缩写,默认显示linux所有的进程信息,以及pid,时间,进程名等信息
#过滤系统有关vim的进程
[root@linux ~]# ps -ef | grep "vim"
root 24277 7379 0 16:09 pts/1 00:00:00 vim ps是怎么用的.txt
35、kill
杀死进程的命令
kill 进程的id号
如果遇见卡死的进程,杀不掉,就发送 -9 强制的信号
kill -9 pid
36、netstat
查看linux的网络端口情况
语法如下
常用的参数组合 -t -n -u -l -p
[root@linux tmp]# netstat -tunlp #显示机器所有的tcp、udp的所有端口连接情况
#例如验证服务器80端口是否存在
netstat -tunlp | grep 80
#过滤3306端口是否存在
netstat -tunlp |grep 3306
#过滤ssh服务是否正常
[root@linux tmp]# netstat -tunlp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd
tcp6 0 0 :::22 :::* LISTEN 1147/sshd
#有些公司为了保护服务器安全,更改了默认的远程连接端口
# ssh端口 26674 ip 是 123.206.16.61 账号是 xiaohu 密码是 xiaohu666
#我怎么登陆服务器呢?用如下的命令去连接服务器
ssh -p 26674 xiaohu@123.206.16.61
37、history
查看历史记录
history 默认显示1000条
history -d 77 删除第77行的历史记录(删除敏感记录)
history -c 记录全部清除
38、more,less
浏览文件内容,分页显示。
回车,一行一行滚动
空格,一页一页滚动
/mysql,向下搜索含有mysql 字符串的内容,按n连续向下搜索,按N向上搜索
?mysql ,向上搜索,按n连续向上搜索,按N向下搜索
39、修改PS1变量控制提示符的样式
echo "PS1='[\e[32;1m][\u@[\e[0m][\e[33;1m]\h \W]\$ [\e[0m]'" >>/etc/profile
source /etc/profile