linux常用命令总结

时间:2021-08-08
本文章向大家介绍linux常用命令总结,主要包括linux常用命令总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

linux常用命令

查看文件:

1、cat

cat 文件名 --查看显示文件内容
cat 查看文件内容
cat -n 文件名:显示行号

2、tac: 倒叙查看文件内容


3、head

head -n 数字 文件名 ——显示文件的前n行
或者直接head -10 文件名 ----显示文件的前10行
例:head -n 3 123.log 或 head -3 123.log

4、tail

tail -n 数字 文件名 ——显示文件的末尾n行
或者直接tail -10 文件名——显示文件的末尾10行

tail -f 文件名 ——动态更新显示文件 ctrl+c退出
tail -fn 500 文件名 --显示末尾500行,并实时更新

显示日志的前100行
head -100 123.log

显示日志的后20行
tail -20 123.log

显示日志的第100行
head -100 123.log | tail -1

显示日志的第10行-20行
head -20 123.log | tail -11

显示日志的3-6行
head -6 123.log | tail -4

5、more

more 文件名 ——分页查看大文件内容,直接加载整篇文件,消耗多余的缓存
空格显示下一页 回车显示下,不能向上翻页,只有less能向上翻页 q退出
例:more /etc/services

6、less

less 文件名 ——分页查看大文件内容,阅读到内容才加载,节约缓存
空格显示下一页 回车显示下一行 q退出
w后退一页 方向键↑后退一行
/关键字 搜索关键字 按n下一个
g 文件第一行
G 文件末尾行

7、wc:word count:统计指定文件中的字节数、字数、行数。


date 显示当前连接linux服务器系统日期时间
date -s 12/31/2021 设定日期 月/日/年
date -s 10:30:59 设定时间 小时:分钟:秒
date -s "10:35:00 03/11/2021" 同时设置日期时间
也可以:date -s "2021-07-25 21:36:00"

cal 查看日历

 

8、vi


vi 文件名 ——新建文件并编辑/编辑已存在文件指令
输入i 进入输入模式 --insert--
按Esc键 退出输入模式 进入一般模式
按q 退出recording模式

一般模式:
:q 退出 quit --未修改内容可以直接退出
:w 保存 write
:wq 保存并退出
:q! 强制退出 --放弃修改,直接退出

Y 复制整行
p 黏贴到光标下方
P 黏贴到光标上方
dd 删除一行
x 删除光标字
X 删除光标前一个字
:set nu 显示序号
:n 跳转到第n行
:$ 跳转到末行
/关键字 向下搜索关键字 按n下一个
?关键字 向上搜索 按n下一个

路径相关命令:

路径
1.绝对路径 /home/fanmao/error.log 从根目录到该文件的地址,路径不会变
2.相对路径 从参照路径到该文件的地址,路径会变

cd /etc 切换到/etc 绝对路径 change directory
cd aa 下一层目录aa 相对路径
cd .. 上一层目录 相对路径
cd - 切换到上一次路径.
cd / 切换到顶层根路径
cd ~ 切换到~路径 /root
/a 绝对路径 根目录下的a目录
a/ 相对路径 当前目录下的a目录下
pwd 显示当前完整路径 print work directory


ls 列出当前路径下的内容
ls /etc 列出etc目录下的内容
ls -lt 按文件修改时间降序查看
ls -lrt 按文件修改时间升序查看
ls -dl 只看当前目录的信息 如/home/user,表示只看user的信息


cp 源文件 目的地
cp 源文件 目标文件/新文件名 ,后面一定要接新的文件名,如果不想改名,也一定要加上/ ——复制文件指令 copy
cp -r 源目录 目标目录/新文件名,后面一定要接新的文件名,如果不想改名,也一定要加上/ ——复制目录

cp cc cc2 把本地的cc文件复制到本地,新名cc2
cp -r abc abc2 把本地的abc目录复制到本地,新名abc2
cp cc /etc/cc2 将本地的cc复制到/etc下,新名cc2
cp cc /etc/cc2/ 将本地的cc复制到/etc/cc2下,文件名不变

cp cc a1copy/cc2 把本地的cc 复制到本地a1copy目录下 并改名
cp cc /a1copy/cc2 把本地的cc 复制到根目录下的a1copy目录下 并改名

cp cc ../cc2 将本地的cc复制到上一层路径
cp cc abc/cc2 将本地的cc复制到当前目录的abc路径下
cp /etc/cc2 cc 将etc下的cc2复制到本地,新名cc
cp ../cc2 ./cc2 将上层路径的cc2文件复制到本地
cp /etc/passwd ./ 将/etc/passwd 复制到本地
cp ../error.log ./log
将上一层路径的error.log复制到本地并改名叫log


cp -r /home/abc /
将/home/abc目录复制到根目录下,不改名
cp -r test ../testing/
将当前目录下的test目录复制到上一层目录的testing目录内,不改名


scp 远程复制 加密复制
//从远程其他linux系统拷贝文件过来
scp 远程用户名@ip地址:文件的绝对路径 本地保存路径
例: scp root@192.168.60.133:/etc/passwd /home 保存到本地的home目录下
scp root@212.129.242.150:/etc/passwd /home/aa/passwdsun

//从本地拷贝文件到远程其他linux系统
scp 本地文件绝对路径 远程用户名@ip地址:远程保存路径
例: scp /etc/passwd root@192.168.60.133:/home 复制文件
scp /xyj.sh root@106.54.189.170:/home/
scp -r 复制目录


mv 源对象 目标对象 ——剪切/重命名指令 move
mv a1 a2 重命名对象。如果本地本来就有一个a2,那这个指令就是把a1剪切到a2里面了,等同于mv a1 a2/a1(最后一个a1可加可不加)

mv a1 b1/a1 最后一个a1可加可不加 将本地的a1 剪切到本地的b1目录下 文件名不变
mv a1 /b1/a2 剪切并改名
mv ../a a2 从上一层路径剪切a到本地 新名a2

rz 从本地上传文件到linux系统,直接rz就可以,就是上传到当前路径下
sz +文件路径 -- 从linux系统下载文件到本地
例:sz /home/abc.log

ln 源文件 硬链接文件名 ——创建硬链接
ln -s 源文件 软连接文件名 ——创建软连接
文件内容 硬链接和软连接都和源文件相同,修改源文件随之更改,修改硬链接源文件也更改。
删除源文件 硬链接独立 软连接失效

 

文件解压缩:

gzip 文件名 ——压缩为文件名.gz
gzip 文件1 文件2 ——分别压缩多个文件
gunzip 压缩包.gz ——解压缩文件
gunzip 压缩包1.gz 压缩包2.gz --同时解压文件
注意:只可以针对文件压缩,不可以目录。
压缩和解压缩后原文件消失


tar ——打包压缩目录指令 xx.tar.gz
tar -zcf 压缩包.tar.gz 目录 ——打包压缩指定目录
tar -xf 压缩包.tar.gz ——解包解压缩
注意:用于目录的压缩,压缩解压缩后源文件不消失

zip 压缩包.zip 被压缩文件/目录 ——压缩文件或目录
zip 压缩包.zip 文件1 文件2 目录1 ——将多个文件或目录压缩到一起
unzip 压缩包.zip ——解压到本地
注意:可以压缩文件和目录,可以压缩多个文件在一个压缩包内。压缩和解压缩后源文件不消失


创建、删除、写入、追加文件:

mkdir 目录名 --在本地创建一个目录(同级下目录不可重复)
mkdir 目录1 目录2 目录3 ——同时创建多个目录
mkdir -p 目录1/目录2/目录3 ——同时创建多个递归目录


touch 文件名 ——创建文件(不存在的文件)/更新最近修改时间(已存在文件)
touch abc.txt
在其他路径创建文件:touch 路径+文件名。如touch /root/fanmao/123,表示在根目录下的root下的fanmao里面创建一个名字是123的文件


rmdir 目录名 ——删除空目录 remove
rmdir 绝对路径 ——删除指定绝对路径空目录
rmdir 目录1 目录2 目录3 ——同时删除多个空目录


rm ——只能删除空文件命令
rm 文件名 ——删除文件,提示确认“yes”是否删除
rm -r 目录 ——删除目录,提示
rm -f 文件 ——强制删除文件,不提示
rm -rf 目录或文件 ——强制删除目录或文件
rm -rf 路径,如rm -rf shanghai/pudong/wanggang,表示删除当前目录下shanghai目录下pudong目录下的wanggang,道理同在其他路径创建新的目录或文件
rm -rf * 删除当前路径下所有文件和目录


> 重定向,写入 (将当前文档全部覆盖更新)
date > aa.log

>> 追加 (在原有文档基础追加写入,不会覆盖原文件)
date >> aa.log 将日期追加到该文件

追加自定义字符到指定文件:echo 新内容 >> 文件名

当文件不存在时,echo “123” >> haha,相当于创建一个名为haha的文件,内容是123,等同于echo “123” > haha

 

文件权限:

14024749 drwxr--r-- 1 root root 0 10-31 11:22 aanew
节点ID号 权限 里面的内容数 所属主 所属组 大小 最近修改时间 名

不同颜色的文件:
普通文件 黑色/白色 权限首位-
目录 蓝色 权限首位d
压缩包 红色
绿色 可执行文件
浅蓝色 链接文件 权限首位l
红色底色 出错的链接文件

第一位:文件类型 d或 l或 -
第2-4位:所属主的权限 u(user)
第5-7位:所属组的权限 g(group)
第8-10位:其他用户的权限 o(other)

r:read-4 查看内容cat 查看目录内容ls
w:write 修改内容vi 创建删除文件touch rm
x:excute-1 运行sh 进入cd

u所属主 g所属组 o其他
chmod 修改文件/目录权限 文件名 +给是与权限 -是去除权限
chmod ugo+w b2
chmod u-x,g-rw b2
chmod u+wx,ugo-r b
所属主去掉x权限 所属组去掉wx权限 其他用户去掉所有权限
chmod u-x,g-wx,o-rwx 文件名
所属组去掉r权限 给与w权限 其他用户给rx权限
chmod g-r,g+w,o+rx 文件名

可以chmod 766 文件名,直接用8进制数字改权限,更方便!

chown 用户名 文件/目录 ——修改文件或目录的所属主 owner
chgrp 组名 文件/目录 ——修改文件或目录的所属组

 

查找命令:


精确查找 完全和关键字等同于的查询
模糊查找 在关键字基础上符合格式的查询

locate 文件名 ——快速文件名查找文件(模糊查询)也可以查找目录,也可以加路径查找
(基于文件库全盘查找,文件库非实时更新)
updatedb ——locate之前先要更新文件库

find 查找指令
find 路径 -name 关键字 —— 通过文件名查找文件 区分大小写
find 路径 -iname 关键字 —— 通过文件名查找文件 不区分大小写
find 路径 -size +5M-------查找路径下大于5M的文件,+号不能少


查询本地 路径可以不填或用./表示
通配符:以什么开头 以什么结尾 包含什么关键字
* 代表任意个字符 init*=》init,init1,init333
? 代表单个字符 ?init=》xinit ??init=》xyinit

find /etc -name init 在etc目录下查找名字为init的文件

find /etc -name init* 在etc目录下查找名字init开头的文件

find /etc -name *init* 在etc目录下查找名字包含init的文件
当前目录下查找文件内容中包含hello字段的所有文件名,并输出行号:grep -rn hello -r表示递归查找 -n是显示行号

-amin 在几分钟内被访问过 cat/tac/more... find -amin +5 查找本地5分钟前被访问过 a代表access
-mmin 在几分钟内被编辑过内容 find / -mmin -3 vi/ m代表modify
-cmin 在几分钟内被修改过属性 vi/chmod/chgrp/chown c代表change
find -cmin -5 查找本地5分钟内被修改过属性


文本过滤:


| 管道符 在前段指令的基础上继续执行后半段,可结合前面的head、tail一起使用
grep
grep ,在文本中查询有关键字的内容
语法:grep 搜索字符串 文件名
如一个文件 Hello.java 中含有Lemon 关键字,可以使用grep 命令进行查找:
Grep -n Lemon Hello.java
其中的-n 表示在第n行,直接输入-n就行,运行后会自动显示多少行

例:cat abc.log | grep error 显示abc.log中有error字样的行
more abc.log | grep error 显示abc.log中有error字样的行
less abc.log | grep error 显示abc.log中有error字样的行


进程相关:

ifconfig 查看网卡信息(IP 子网掩码...)
ifconfig eth0 IP地址 ——给指定网卡配置IP
ping IP地址/域名(网址) ——查看本地和指定IP地址互通性
hostname 显示主机名
who 显示用户信息
whoami 显示当前登陆的用户名
tab键 补全操作
键盘上键 调出之前的指令
clear 清屏


ps -ef 查看所有进程 (进程ID 进程名)
kill -9 进程ID 结束指定进程
w 查看登陆详细信息 (用户名 主机IP 连接时间 空闲时间 最近执行指令)
netstat 查看连接端口信息

free:内存使用率
top:CPU使用率
查看磁盘:du 或df

reboot 重启
poweroff 关机

 


用户管理:


useradd 用户名 ——创建普通用户
userdel 用户名 ——删除用户 (注意:使用中的账号不可以删,退出重新连接)
groupadd 组名 ——创建用户组
groupdel 组名 ——删除指定用户组


cat /etc/passwd ——查看/etc/passwd文件 passwd是专门用来保存用户相关信息的文件

passwd 用户名 ——创建/重置密码

fanmao3:x:506:507::/home/fanmao3:/bin/bash
用户名:密码:用户ID:组ID::家目录路径:shell脚本编译器bash

su 切换用户名

su zhangsan 切换到zhangsan用户登陆
su 切换到root 等同于su root
注意:root切换到普通用户不需要输入密码,普通用户切换到超级用户或其他普通用户需要密码。

 

cat /etc/group ——查看用户组信息
gpasswd -M 用户1,用户2 用户组 ——向用户组设置用户1,用户2
gpasswd -d 用户 用户组 ——从用户组移出用户(每次移出一个)

 

 

 


执行脚本 sh EndDayBatch.sh
1.cd 到脚本的路径
2.ls 查看脚本是否在 查看权限
3.su root / chmod 给权限。查看当前用户,输入w,如果有很多用户,看最近的时间谁在使用就可以了,USER:登录的用户名
TTY:登录终端
FROM:哪个IP地址登录的
LOGIN@:登录时间
IDLE:用户闲置时间
JCPU:指的是和该终端连接的所有进程占有的时间,这个时间里并不包括过去的后台作用时间,但却包括当前正在运行的后台作用所占用的时间
PCPU:是指当前进程所占用的时间
WHAT:当前正在运行的命令

 

 

shell脚本======================
【编写第一个脚本】
cd / 到根目录
touch abc.sh 创建一个脚本文件 abc.sh
vi abc.sh 编写
=============
#!/bin/bash --#代表单行注释 注释该脚本用什么解释器
echo "hello test1120!" echo(输出) 显示hello test1120!可自定义
=============
:wq 保存退出
bash abc.sh 通过解释器执行脚本文件 sh abc.sh也可以
chmod +x ./abc.sh 也可以通过将文件变成可执行来执行
./abc.sh 执行abc.sh 通过这种方式运行,第一行要写对,方便系统查找适合的解释器

【read】 接受用户输入值,如read name:运行的时候就要输入name是什么,如name=zhangsan,赋予name这个变量的值是zhangsan,那运行的时候直接显示出张三,$name,调用这个变量值,如echo $name,就是输出name这个值
========================
#!/bin/bash
echo "what's your name?"
read name 定义一个变量name放输入值
echo "my name is ${name}aaa" {}定义变量的位置结尾


【分支语句】
if [表达式]
then
语句1
else
语句2
fi

-eq 两边相等 p19
-ne 两边不相等
-gt 左边大于右边
-lt 左边小于右边
-ge 左边大等于右边
-le 左边小等于右边

==================
#!/bin/bash
echo "num1:"
read num1
echo "num2:"
read num2
if [ $num1 -gt $num2 ]
then
echo "${num1}>${num2}"
elif [ $num1 -lt $num2 ]
then
echo "${num1}<${num2}"
else
echo "${num1}=${num2}"
fi
=========================


【while循环】 循环5次
==================
#!/bin/bash
i=1
while [ $i -le 5 ] //i<=5
do
echo $i
i=`expr $i + 1` //对变量的定义 不需要$i= i=i+1
done
==========================

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/huxiaoguang1991/p/15045233.html