Linux-常用命令

作者刚参加工作,处于学习笔记阶段,如有错误欢迎指点,共同进步,谢谢

🐯前言一:
Linux文件目录结构
cd / 进入根目录

  • /bin:Binary的缩写,存放命令的目录
  • /sbin:存放系统管理员使用的系统管理程序
  • /boot:存放的启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件
  • /proc:虚拟目录,是系统内存的映
  • /dev:磁盘等硬件用文件的形式存储的目录
  • /mnt:需要挂载的目录,习惯在此创建
  • /lib:系统开机所需要的动态链接共享库,类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
  • /etc:系统管理所需要的配置文件和子目录
  • /srv:service 的缩写,该目录是存放一些服务启动之后需要提取的数据
  • /usr:用户应用程序和文件放在这个目录下
  • /var:存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,例如:日志文件
  • /root:系统管理员目录,超级权限者的用户目录
  • /home:普通用户的主目录,普通用户的根目录都在里面存放
  • /opt:额外安装的软件可以安装在此目录,考虑磁盘存储,最好先创建目录并挂载磁盘后安装软件
  • /tmp:临时目录
  • /lost+found:当系统非法关机后,这里就存放了一些文件
  • 其它

🐯前言二:
Linux命令可以通过help 命令 或者 man 命令的方式查看其用法

一、基础命令

1. 查看当前目录文件夹/文件:ls

#查看当前目录,按行按类别显示
ls -l
ll  #简写

#查看隐藏文件
ll -a

#按文件日期时间先后顺序显示
ll -rt

2. 显示当前目录全路径:pwd

#查看当前目录
pwd

3. 切换目录:cd

#切换目录
cd /tmp

#返回上一次的目录
cd -

4. 创建目录:mkdir

#创建目录
mkdir test

#递归多级创建
mkdir -p /tmp/test1/test2

5. 创建文件:touch

#创建文件
touch test.csv
touch /tmp/test.csv

6. 复制文件:cp

#复制文件
cp test1.csv test2.csv

#递归复制一个目录所有文件夹和文件到另一个目录
cp -r /tmp/test1/* /opt/test2/

7. 移动/重命名文件:mv

#移动文件到另一个目录
mv /tmp/test1.csv /opt/          
#文件目录同样适用且默认目录树素有目录都被移动
mv /tmp/test1/ /opt/

#重命名文件:在原来的目录下覆盖原文件
mv test1.csv test2.csv

8. 删除文件/文件夹:rm (慎用!!)

#删除文件: 需要再次确认是否删除
rm test.csv

#删除文件夹:需要递归再次确认每一个 文件夹/文件 是否删除
rm -r test1/

#强制删除文件
rm -f test.csv

#强制删除文件夹(不推荐删除可以使用mv命令更换名称,以保留一份副本,以防万一)
rm -rf /tmp/test/
rm -rf ./test/

9. 查看文件内容:cat/head/tail/less/more

## cat
# 查看文件内容,打印在当前窗口
cat test.csv
cat /tmp/test.csv

#配置管道 | 和 grep 命令过滤出所需关键字的行
cat test.csv | grep "篮球"


### head
#查看前11行数据
head -11 test.csv
haed test.csv  #默认前10行

### tail
#查看后11行数据
tail -11 test.csv
tail test.csv  #默认后10行

#实时查看后面插入文件的数据,并打印在前台
tail -f test.csv


### less和more
less test.csv
more test.csv
##区别:
#less在新的窗口打开文件并只会打开一页的内容,通过翻页可继续打开其它页,速度快
#more在前台打开文件全部内容,也可翻页

10. 查找文件:find

#查看/tmp目录下所有test.csv文件
find /tmp -name test.csv

#不区分大小写(-iname),查看/tmp目录下所有test.csv文件
find /tmp -iname test.csv

#包含test
find /tmp -name *test*

#开头test,且后有两个字符
find /tmp -iname test??

#大于100M
find /tmp  -size  +100M

#大于100M,小于200M  (-a相当于and,-o相当于or)
find /tmp  -size  +100M -a -size -200M

#所有者为twy的用户
find /tmp -user twy

#所有组为twy的用户
find /tmp -group twy

#5分钟内被修改过内容(访问时间:-amin)(文件属性:-cmin)(文件内容:-mmin)
find /tmp -mmin -5

#指定深度
find /tmp -maxdepth 1 -name "*.ok"

#将结果按ls -l方式显示
find /tmp -name *test* -exec ls -l {} \;

#查找大于100M的文件
find /tmp -size +100M					

11. 建立链接:ln

#相当于windows里的快捷方式
ln 源文件 目标文件

#生成一个名为test02.csv,引用test2.csv的链接文件
ln test02.csv test2.csv 

12. 用户相关:useradd/passwd/who/w/su

#添加twy用户
useradd twy

#修改密码
passwd twy #输入密码加回车,两次

#查看登录用户:指连接工具或者ssh连接的用户,su不算
who
w  #查看详情

#root切换用户到twy用户
su twy

13. 权限相关:chmod/chown/chgrp

###chmod###
#权限解释 -rwxr-xr-x:

###
#第1位表示类型 (-文件)(d文件夹)(其它)
#第2-4位:所属用户权限
#第5-7位:所属用户组权限
#第8-10位:所属其它用户权限
#r:读权限
#w:写权限
#x:执行权限
###

#命令解读
chmod  [{ugoa}{+-=}{rwx}] [文件或目录]
# u:用户,g用户组,o其它,a全部,+添加权限,-去除,=替代权限
# 可以用数字表示:
# r:4 w:2 x:1

#修改test.csv文件用户读写执行,用户组读执行,其它用户执行权限
chmod 751 test.csv
#递归修改/tmp/tt/目录下所有文件/文件夹权限为:用户读写执行,用户组读执行,其它用户执行权限
chmod -R 751 /tmp/tt/


####chown###
#修改文件test.csv用户为test,用户组为twy
chown test:twy test.csv


###chgrp###
#修改文件test2.csv的用户组为twy
chgrp twy test2.csv

14. 打印前台:echo

#打印文字到控制台
echo "hello"

###追加和覆盖符号
#将字符串test覆盖插入test.csv文件
echo "test" > test.csv

#将字符串test追加插入test.csv文件
echo "test" >> test.csv

15. CentOS安装命令:yum/rpm

在线安装

##查看软件
#查看软件包列表
yum list
#查看已安装
yum list installed
#查看未安装/可安装
yum list available
#查看可更新
yum list updates
#查找某个软件
yum search 关键字

#安装软件
yum -y install 软件名称

#卸载
yum -y remove 软件名称

#更新
yum -y update 软件名称

离线安装

#查看已安装,过滤出mysql关键字
rpm -qa |grep mysql

#安装(有些软件需要依赖,要按照正确顺序进行安装)
rpm –ivh 全包名

#更新
rpm -Uvh 全包名

#卸载
rpm -e 包名

16. 压缩解压缩:gzip/gunzip/tar/zip/unzip

###gzip只能压缩文件###
#压缩test.csv文件,打包后原文件会消失
gzip test.csv 

#压缩test.csv.gz文件
gunzip test.csv.gz


###tar,联合了gzip,bzip拥有打包和压缩的功能
#c:打包,x:解包,v:显示详细信息,f:指定文件名,z:打包同时压缩
#打包目录/tmp/tt,指定名称为tt-tmp.tar.gz
tar -zcvf tt-tmp.tag.gz tt/

#解包和解压缩,并指定解压后的位置为/opt,用到参数-C
tar -zxvf tt-tmp.tag.gz -C /opt

###zip###
#压缩test.csv
zip test.zip test.csv

#递归压缩目录/tmp/tt
zip -r tt.zip /tmp/tt/

#压缩test.csv,添加密码:33445
zip -p33445 test.zip test.csv

17. 查看磁盘空间:df

#查看磁盘大小
df -h

#查看磁盘文件数
df -i

18. 查看内存:free

#查看内存大小
free -h

19. 网络相关信息:netstat

#查看本机监听的端口
netstat -tlun

#查看本机所有的网络连接
netstat -an    

#查看本机路由表
netstat -rn  

#查看9092端口是否被占用
netstat -tlnp | grep 9092

20. 时间相关:date

#获取当前时间,英文显示
date

###当前时间日期格式化
#时间戳
date +%s
#年月日时分秒
date +%Y%m%d%H%M%S
#指定日期格式化成时间戳
date -d "20990221 10:08:10" +%s
#将时间戳格式化成日期
date -d @4078104236 +%Y%m%d

#获取3个小时之前的年月日
date "-d 3hours ago" +%Y%m%d

21. 跨服务器传输文件:scp

#将文件test.csv 传输到h2机器的/tmp目录
scp test.csv h2:/tmp/

#指定目标用户twy传输
scp test.csv twy@h2:/tmp/

#如果传输的目录与本机当前目录相同,可使用$PWD
scp test.csv h2:$PWD

#递归传输目录所有文件
scp -r /tmp/tt/ h2:/tmp/

其它命令

#测试网络联通
ping IP地址(域名)

#退出登录
logout
exit

#重启命令
reboot

#关机命令
shutdown

#磁盘挂载命令
mount /dev/sde /app

#解挂载
umount -v /dev/sde

#查看当前目录各文件和目录所占磁盘大小
du -sh *

#查看和设置网卡信息
ifconfig

#查看近10条历史命令
history 10

#查看ip地址
hostname -i

#查看负载
top

#查看mysql服务状态
systemctl status mysqld  #centos7
service mysqld status   #centos6

#编码转换
iconv -f gb18030 -t utf8  ${file}  -o ${file}

#后台执行
nohup 命令 > /dev/null 2>&1 &

#普通用户使用root权限
sudo 命令

#查看主机信息,版本
uname -a

#查看启动时间
uptime

#清屏
clear

#显示cpu信息
lscpu                 #核数=CPU(s)  *  Core(s) per socket
#详细信息
cat /proc/cpuinfo

二、进阶命令

1. 文本编辑器:vim

###命令模式
i #切换到输入模式,在光标当前位置开始输入文本
a #进入插入模式,在光标下一个位置开始输入文本
A #进入插入模式,在光标行尾开始输入文本
o #在当前行的下方插入一个新行,并进入插入模式
O(大写) #在当前行的上方插入一个新行,并进入插入模式
x #删除当前光标所在处的字符
: #切换到底线命令模式,以在最底一行输入命令
dd #剪切当前行
d100d #剪切当前行及往后共100行
yy #复制当前行
y100y #复制当前行及往后共100行
p(小写)#粘贴剪贴板内容到光标下方
P(大写)#粘贴剪贴板内容到光标上方
u #撤销上一次操作
G(shift + g) #跳转最后一行
2 + G(2 + shift + g) #跳转第二行
gg #第一行
ctrl + f #向下一页
ctrl + b #向上一页
ctrl + d #向下半页
ctrl + u #向上半页
ZZ #相当于:wq
ZQ #相当于:q!


###输入模式
#使用 i o a 可进入输入模式,使用Esc退出
#与windows键盘编辑相同

###底线命令行模式
:w #保存文件。
:q #退出 Vim 编辑器。
:wq #保存文件并退出 Vim 编辑器。
:q! #强制退出Vim编辑器,不保存修改
:set nu #显示行号
:set nonu #取消行号
/test #搜索test关键字的,并高亮

详细如下图:

来源: https://www.runoob.com/linux/linux-vim.html

2. 字符串截取:grep/sed/awk/cut

grep:

#查看test.csv文件中出现twy行的数据
grep "twy" test.csv

#不区分大小写,查看test.csv文件中出现twy行的数据
grep -i "twy" test.csv

#查看test.csv文件中没有出现twy行的数据
grep -v "twy" test.csv

#查看test.csv文件中出现twy行的数据,并显示行数
grep -n "twy" test.csv

#递归查看目录/tmp/tt,出现twy的文件,并显示文件名和行数
grep -nr "twy" /tmp/tt/

#显示当前运行的进程中出现java的内容
ps -ef |grep java

sed:

###sed
# 对每行匹配到的第一个字符串进行替换
sed -i 's/原字符串/新字符串/' test.csv 
 
# 对全局匹配上的所有字符串进行替换
sed -i 's/原字符串/新字符串/g' test.csv 
 
# 删除所有匹配到字符串的行
sed -i '/匹配字符串/d'  test.csv  
 
# 特定字符串的行后插入新行
sed -i '/特定字符串/a 新行字符串' test.csv 
 
# 特定字符串的行前插入新行
sed -i '/特定字符串/i 新行字符串' test.csv
  
# 在文件第1行,插入内容"test"
sed -i '1itest' test.csv

# 在文件每一行的行首添加head字符串
sed 's/^/head/g' test.csv

# 在文件每一行的行末添加tail字符串
sed 's/$/tail/g' test.csv
 
# 对于文件第3行,把匹配上的所有字符串进行替换
sed -i '3s/原字符串/新字符串/g' test.csv

awk:

###awk
#用于按分隔符对行进行切割成列的形式
#显示含twy的行
awk "/twy/" test.csv

#按分隔符","切割,显示第2,3列
echo 'yy,tt,dd,,op,a' | awk -F "," '{print $2,$3}'

#按分隔符","切割,指定每行输入的分隔符",",指定每行输出的分隔符"|",显示第2,3列
echo 'yy,tt,dd,,op,a' | awk -v FS="," -v OFS="|" '{print $2,$3}'
#或
echo 'yy,tt,dd,,op,a' | awk  -F "," -v OFS="|" '{print $2,$3}'

#指定多个分隔符
echo 'yy,tt,dd|op,a:aaf:pp' | awk -F "[,|:]" '{print $2,$3,$4,$7}'

#输出行号,倒数第二个值,和最后一个值
cat test.csv |awk -F "," '{print NR,$(NF-1),$NF}'

#输出前先判断
cat test.csv | awk  -F ',' '{ if ( int ($3 / 100) == 3213)  print $2,$1,$3,$NF}'

cut:

###cut
#按照一定规则切割每行数据
-d:#按照指定分隔符分割列
-f:#输出切割后的第几段
-c:以字符 (characters) 的单位取出固定字符区间
-b:以字节为单位进行分割

#按分隔符,切割,并输出每行第二段
cut -d ',' -f 2 test.csv

#按分隔符,切割,并输出每行第二段和第三段
cut -d ',' -f 2,3 test.csv

#切割第5-8个字符
cut -c 5-8 test.csv

#切割前3个字符
cut -c -3 test.csv

#切割第5-8个字节
cut -b 5-8 test.csv
#注意:纯英文状态下字节和字符等效

#切割中文字符(只能使用-C,-b无效)
echo "嘻嘻哈哈的" | cut -c 2,3 #嘻哈

3.文件切割:split

#文件切割,文件过大无法打开时,或传输效率
#切割后cat合并与原文件无差别
-d #指定数字后缀
-a #后缀长度
-b #按文件大小切割,单位:字节(一般都按行数切割,大小分割可能造成单行分割)
-l #按行数切割

#按每个文件100M切割  文件大小可以是 KB、MB,GB,最大可以是 YB!只需使 K、M、G、T、P、E、Z 和 Y 这些合适的字母
$ split -b100M test_20210910.csv

#按每份4000000行切分,使用-d指定数字后缀,-a指定后缀长度,并指定前缀 test_20210910_
split -l4000000 test_20210910.csv -d -a 2 test_20210910_

4. 排序:sort

# 对文件每行按首字母a,b,c...z先后顺序进行排序
sort test.csv

#倒叙
sort -r test.csv

#去除重复行
sort -u test.csv

5. 定时器:crontab

#编辑
crontab -e

#浏览
critab -l

#定时
***** 分别为:分时日月周

6. 进程状态:ps

五种状态码:

  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

参数:

man ps

  • a 显示所有进程
  • -a 显示同一终端下的所有程序
  • -A 显示所有进程
  • c 显示进程的真实名称
  • -N 反向选择
  • -e 等于“-A”
  • e 显示环境变量
  • f 显示程序间的关系
  • -H 显示树状结构
  • r 显示当前终端的进程
  • T 显示当前终端的所有程序
  • u 指定用户的所有进程
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的行程
  • -C<命令> 列出指定命令的状况
  • –-help 显示帮助信息

示例:

#显示进程信息
ps -A

#指定用户显示进程信息
ps -u twy

#显示UID(用户),PID(程序id),PPID(程序父id),C(CPU资源百分比),STIME(程序开始时间),TTY(登录者终端位置),TIME(消费CPU时间),CMD(命令行)
ps -ef

#正在内存当中的程序
#USER,PID,%CPU,%MEM,VSZ(使用虚拟内存量),RSS(固定内存量),TTY(登录者终端位置),STAT(状态),START(程序开始时间),TIME,COMMAND,
ps aux

#程序树显示
ps -axjf

#杀死命令
kill -9 PID
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值