最近一直在使用linux服务器,今天来汇总一下linux的常用命令,帮助自己随时查看,也希望能帮助到你
目录
开机命令
reboot 重启服务器 poweroff 关闭服务器
这两条命令从单词意思上也可以记得很清楚
版本相关
查看内核版本
uname -a
查看linux系统版本命令
lsb_release -a
查看命令
ls 查看当前的目录下的所有文件或目录
ls -a 比ls多显示隐藏文件
ls -t 以文件的修改时间排序
ls -S 以文件的大小进行排序
ls -l 显示文件的对应权限(这个我的另一篇文章里有详细解释)
du 查看当前目录的大小
当然后面的参数可以组合去使用,比如可以使用 ls -al 来显示所有文件包含隐藏文件的权限,同时还能显示软链接等信息
切换目录与查看所在目录
cd(change directory) 从单词中也能够看出,这是进行文件目录切换的命令,所以学好英语对编程的重要性不言而喻。
cd 加路径名(相对路径或者绝对路径),就进入了对应的路径
cd / 进入根目录
cd ~ 进入家目录
cd … 进去该目录的上一层目录 当然上两层目录输入 cd …/… 即可
cd - 进入上一次的工作路径
pwd 查看当前所在的路径
pwd -P 查看链接的实际路径
文件及文件夹的操作
touch 文件名 创建一个文件
mkdir 文件目录 创建一个文件目录
mkdir -p 路径名 在路径下创建目录,若目录不存在则创建对应的目录,这样做的话较为方便
echo "要写入的信息" >> 文件名 写入文件,末尾写入。
echo "要写入的信息" > 文件名 写入的文件,覆盖写入。
rm 文件名 删除文件
rm -r 目录名 删除目录,注意这里面的r是递归的意思。
rm -rf 目录名 强制删除目录以及目录中的所有文件或目录,且不会收到提示,同样也是递归删除。
rm -ri 目录名 删除目录或者目录文件且会收到提示。
rmdir 目录名删除空目录
rmdir -p 目录路径 如果目录也为空的话则一道删除
ls -lR|grep "^-"|wc -l 查看当前目录的文件夹个数
移动和修改文件
mv 文件名 路径 移动文件到对应的路径
如: mv test.txt /etc/usr/bin
mv -i a.txt b.txt 把文件a.txt 文件改名为 b.txt 如果b.txt 已经存在了,则询问是否覆盖。
mv * ../ 把所有文件都移动到上一级目录
cat > 文件名 创建文件并编辑,这里需要注意的是cat 只能新建新的文件,而并不能在已有的文件上进行编辑。
cat 文件名 把文本里的信息全部展示出来
cat 文件1 文件2 新文件 把文件1和文件2 合并写入新文件
文件复制
cp -ai 文件名 新文件名
cp -ai 文件名 目录
如果是复制文件夹,记得加参数r
文件查看
head -n 文件名 查看文件的前n行
tail -n 文件名 查看文件的后n行
例子
查看a.txt 的末尾10行
tail -10 a.txt
文件权限相关
文件权限的liunx命令有三个,chmod,chgrp、chown
chmod
在linux文件系统里,有三种不同的用户可以对文件或目录进行访问,分别是属主、同组、其他用户。属主一般为文件的创建者,还可以把文件的操作权限赋予其他的用户。
我们在通过ls -l来查看文件的详细信息时
-rw-rw-r-- 1 wac wac 134 9月 24 15:12 e_c189222.txt
其中第一个字段就标明了文件的权限信息
-rw-rw-r--
我们看到-把他们分隔为三个部分,这个部分代表三种不同的用户对文件的操作权限,其中r代表可读,w代表可写,x代表可执行。
而这三个用户分别代表所属、同组、其他用户。
我们再来讲一下如何改变这些权限
有两种设置方式,第一种是文字设置法。
chmod [who] [+ | – | =] [mode]
who代表不同的用户分别是u、g、o、a
u代表的是文件的所属者(user)
g代表的同组用户(group)
o代表其他用户(other)
a代表所有用户(all)
+ - =
分别表示对文件权限的操作加减或者对文件的权限进行reload
chmod a+x a.txt 给所有用户对于a的执行的权限
chmod a-w a.txt 所有的用户都不能对a.txt进行执行写入操作
当然在实际的使用中,往往采用的是另一种方式,数字设置法。大家对于chmod 777 文件名肯定不陌生,那么这个代表什么意思呢
777 这三个数字分别代表了不同的用户对文件的操作权限。
其中
r 读 是4
w 写 是 2
x 执行 是 1
4+2+1=7
那么chmod777 则代表给所有用户所有的权限
chmod 764 则代表所属用户可读可执行可写 同组用户可读可写 其他用户只能读
chmod 000 则代表所有用户对其都不能操作
chgrp
这个命令是改变文件所属的组
chgrp group filename
如
chorp wac a.txt 就是把文件a.txt 更改到 wac组下
如果是更改文件目录想要把文件目录下所有文件的组都更改则是
chorp -R test/
chown
这个命令则跟chgrp类似,是改变文件的属主和所属的组
chown - R wac etc /demo
这个命令是把etc下的demo目录下的所有文件和目录的组改为wac
文件压缩及打包
tar -zcvf etc.tar.gz /etc
文件传输
注意:scp命令是基于ssh进行传递的,在进行文件传输之前,先要保证主机也可ssh免钥登录到服务器。
文件上传:
scp -r 本地文件夹 远程用户名@远程ip: 要上传的文件或文件夹
如:
scp -r D:/上传文件夹/test-19-12.zip root@192.168.1.127:/home/use/
文件下载:
scp -r 远程用户名@远程ip:远程文件路径+文件名 本地路径
如:
scp -r root@192.168.1.127:/home/use/test-19-12.zip D:/下载文件夹
文件解压缩
这里来介绍两种常用的解压缩格式及方法。
tar 格式
将文件压缩为.tar.gz格式
tar 选项【-zcf】【压缩后文件名】【要压缩的文件或目录】
————————
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩或解压缩
-c 打包
-x 解包
如
tar -zcvf a.tar.gz a 把目录a压缩为a.tar.gz 的压缩文件
tar -zxvf a.tar.gz /data 将压缩包解压至 /data 目录下
zip 选项【-r(选调目录加文件则不需要加)】【压缩后文件名】【被文件或目录】
zip 格式
将文件或目录压缩为.zip格式。
zip -r a.zip a
把目录a压缩为 a.zip 文件
grep 命令
我们先来看看什么是grep,很多同学都知道可以通过 ps-ef|grep 文件名 来查看文件进程,都以为grep是查看文件进程及命令的。但是实际情况是,grep要远比这强大的多。
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本。这就很强大了,他是一个文本搜索或者可以说是文本匹配的工具,那么他的强大自然而然就在于文本的处理了,他的难点就在于正则表达式而不是他本身了。
下面就简单的说一下grep的用法,由于正则表达的基本使用式我的另一篇文章有介绍。所以在这里就不再多加叙述。
grep -i "正则表达式/文本" 文件名 搜索出能匹配上的字符串
grep -i -n "正则表达式/文本" 文件名 搜索出能匹配上的字符串并打印其行号
grep -i -n --color "正则表达式/文本" 文件名 搜索出能匹配上的字符串并打印其行号,且颜色标明
grep -i -o "正则表达式/文本" 搜索出能匹配上的字符串,但只打印字符串本身
grep -i -An "正则表达式/文本" 文件路径 搜索出要匹配字符串的前n行
grep -i -Bn "正则表达式/文本" 文件路径 搜索出要匹配字符串的后n行
grep -i -Cn "正则表达式/文本" 文件路径 搜索出要匹配字符串的前后n行
下面是一些简单的运用实例。
ps -ef | grep "正则表达式/文本" 查找指定的进程
ps -ef| grep "正则表达式/文本" -c 查找指定进程的个数
grep -lR 'pandas$' /home 在home目录中递归查找以pandas 为结尾的文件,并只列出文件名
grep -E 'ed|at' test.txt 或者 grep -e 'ed' -e 'at' test.txt 查找包含ed或者at的文本
grep -q 'ed' test.txt echo $? 查找文本中是否包含'ed' 包含则返回0,不包含则返回1
cat test.txt | grep -f key.log 搜索文件中包含日志关键词的文本
查看端口占用
netstat -nat 查看当前的端口号的占用情况
当然如果想查看某一端口号的使用情况,
则只需要使用命令
netstat -nat |grep “端口号”
比如想查看80端口的占用情况
netstat -nat |grep “80” 查看80端口的相关信息
lsof -i:8080 检查8080端口的占有情况
lsof -c -p 1234: 列出进程号为1234的进程所打开的文件
一键还原
rm -rf /* 慎用
总结
千里之行始于足下,这些都是linux最基础的命令,如果是用于从事服务端工作,这些命令是远远不够的,但是作为日常使用服务器做一些日常开发,这些简单的使用能够保证你工作的进行。