Linux常⽤命令及脚本知识Linux常⽤命令及脚本知识
Linux是⽬前应⽤最⼴泛的服务器操作系统,基于Unix,开源免费,系统的稳定性和安全性⾼。Linux的⽬录结构
/ 下级⽬录结构
bin
(binaries)存放⼆进制可执⾏⽂件
sbin
(super user binaries)存放⼆进制可执⾏⽂件,只有root⽤户才能访问
etc
(etcetera)存放系统配置⽂件
usr
(unix shared resources)⽤于存放共享系统资源
home
存放⽤户⽂件的根⽬录
root
超级⽤户⽬录
dev
(devices)⽤于存放设备⽂件
lib
(library)存放跟⽂件系统中的程序运⾏所需要的共享库及内核模块
mnt
(mount)系统管理员安装临时⽂件系统的安装点
boot
存放⽤于系统引导时使⽤的各种⽂件
tmp
(temporary)⽤于存放各种临时⽂件
var
(variable)⽤于存放运⾏时需要改变数据的⽂件
常⽤命令
命令格式:命令 -选项参数 (选项和参数可以为空)
操作⽂件及⽬录
ls
查看⽬录下的所有⽂件
ls # 查看当前⽬录下的所有⽂件
ls -l # 查看当前⽬录下所有⽂件的详细信息
ls -R # 也可以层级显⽰,使⽤参数R。
cd
切换⽬录
cd /home # 切换到 home ⽂件夹中
pwd
显⽰当前⼯作⽬录
pwd # 打印出当前的⼯作⽬录的完整⽬录
touch
创建空⽂件
# 创建xxoo⽂件,格式为txt
mkdir
创建⼀个新⽬录
mkdir xxoo_dir # 在当前⽬录中创建⼀个名为 xxoo_dir 的⽬录
mkdir -p dir0/dir1/dir2/ # 创建多级⽬录,⽗⽬录不存在的情况下先⽣成⽗⽬录
rmdir
删除空⽬录
rmdir dir0 # 删除空⽬录dir0
cp
复制⽂件或者⽬录
# 复制⽂件,结果为
cp -r dir0/ dir1/ # 递归处理,将制定⽬录下的⽂件与⼦⽬录⼀并拷贝;
mv
移动⽂件或⽬录、⽂件或⽬录改名
mv dir0 dir1 # 将 dir0 移动到 dir1(或者说将 dir0 改名为 dir1)
rm
删除⽂件
# r 删除该⽬录下的所有⽂件
# f 强制删除⽂件或⽬录
rm -rf dir0 # 递归删除 dir0 ⽬录中的所有⽂⽬录及⽂件
cat
显⽰⽂本⽂件内容
# 查看 ⽂件中的内容
more
分页显⽰⽂本⽂件内容,可前后翻页,空格向后,b 键向前
# 分页显⽰⽂件中的内容
less
分页显⽰⽂本⽂件内容,可前后翻页,空格向后,b键向前,⽀持底⾏模式
# 分页显⽰⽂件中的内容
head
查看⽂本开头部分的内容,默认10⾏
# 查看⽂件前10⾏的内容
head - # 查看⽂件前20⾏的内容
tail
查看⽂本结尾部分的内容,默认10⾏
# 查看⽂件中的最后10⾏
tail - # 查看⽂件中的最后20⾏
tail - # 循环滚动读取⽂件并动态显⽰在屏幕上,根据⽂件属性追踪
tail - # 循环滚动读取⽂件并动态显⽰在屏幕上,根据⽂件名追踪
wc
统计⽂本的⾏数、字数、字符数
# 统计⽂件的⾏数、字数、字符数
wc - # 统计⽂件的字符数
wc - # 统计⽂件的⽂本字数
wc - # 统计⽂件的⽂本⾏数
find
在系统中的指定⽬录下查指定的⽂件
find / - # 在根⽬录下查名字为的⽂件
grep
在指定⽂件中查包含指定内容的⾏
grep # 在⽂件中查含有69的所有⾏
# 也可以对两个⽂件进⾏⽐较,出不同的内容。
ln
建⽴链接⽂件
# 建⽴链接⽂件
ln - # 对源⽂件建⽴符号链接,⽽⾮硬链接
系统常⽤命令
top
显⽰当前系统中耗费资源最多的进程
top # 显⽰系统中耗费资源最多的进程
date
显⽰系统当前时间
date # 显⽰系统当前时间
cal
查看当前⽇期
cal # 查看当前⽇期
cal 2020 # 也可以指定查看某⼀年的,⽐如说我们查看2021全年的⽇期,则输⼊如下命令即可。cal 8 2008 # 也可以查看某年的某⽉,格式如下,以2008年8⽉为例
ps
较少单独使⽤,配参数根据需求,ps -ef或者ps -aux
ps -e # 显⽰所有进程,环境变量
ps -A # 显⽰所有进程,环境变量
ps -ef # 全格式显⽰
ps -a # 显⽰所有⽤户的所有进程(包括其他⽤户)
ps -au # 按⽤户名和启动时间的顺序来显⽰进程
ps -aux # 显⽰⽆控制终端的进程
kill
强制杀死⼀个进程
kill -9 69 # 强制杀死pid为69的进程
df
显⽰⽂件系统磁盘空间的使⽤情况
df # 显⽰⽂件系统磁盘空间的使⽤情况
df -h # 以⼈类可读的⽅式显⽰,Kb,Mb,Gb等
du
显⽰指定的⽬录及⼦⽬录已使⽤的空间的总和
du # 显⽰指定的⽬录及其⼦⽬录已经使⽤的磁盘空间的总和
du -s * # 显⽰指定⽬录的总和,*当前⽬录下表⽰所有
du -sh * # 以⼈类可读的⽅式显⽰,Kb,Mb,Gb等
free
显⽰当前内存和交换空间的使⽤情况
free # 显⽰当前内存和交换空间的使⽤情况
free -h # 以⼈类可读的⽅式显⽰当前内存和交换空间的使⽤情况
ifconfig
⽹卡⽹络配置,常⽤于查看当前ip地址
ifconfig # ⽹卡⽹络配置,常⽤于查看当前IP地址
ifconfig eth0 192.168.69.69 # 临时修改系统IP(重启后失效)
ping
测试⽹络的连接性
ping baidu # 测试⽹络的连接性
hostname
查看主机名
hostname # 查看主机名
shutdown
关机
shutdown -r # 先关机,再重启
shutdown -h # 关机后不重启
halt
关机后关闭电源
halt # 关机后关闭电源,相当于shutdown -h
reboot
重新启动
reboot # 重新启动,相当于shutdown -r
clear
清空屏幕。
clear
压缩解压缩
gzip
压缩后⾯的⽂件或者⽂件夹
# 压缩⽂件
gzip - # 解压后⾯的压缩⽂件
gzip - # 指定的数字num调整压缩的速度,-1或--fast表⽰最快压缩⽅法(低圧缩⽐),-9或--best表⽰最慢的压缩⽅法(⾼压缩⽐)。系统省缺值为6 tar
压缩
.表⽰⼀种压缩格式。
建⽴⼀个压缩⽂件
tar -zcvf workSpace/*
# -------------------------------------------------
# 其中参数解释如下:
# z 使⽤`gzip`进⾏压缩,`gzip`是⼀种压缩算法。
# c 创建⽬标。
# v 显⽰压缩的过程。
# f 重命名,也就是给压缩⽂件进⾏重新命名。
# -------------------------------------------------
解压
tar -zxvf
# -----------------------------------------
# 其中,x表⽰解压缩。
# 他们的参数的顺序是不固定的,可以进⾏任意的调整。
# -----------------------------------------
zip
打包
zip file.zip * # 进到待打包⽂件的同级⽬录⾥,然后进⾏打包,其中*表⽰将所有的⽂件进⾏打包。
zip file.zip -r workSpace/* # 多层⽂件夹进⾏打包,需要将⼦⽂件加递归的都打包到压缩⽂件中
unzip
解压
切换到压缩包所在的⽂件的,然后运⾏如下命令即可:
unzip file.zip
下载⽂件
wget
下载
wget url # 下载
wget url -O # 可以对下载的东西进⾏重命名,其中参数是⼤写的字母欧(O),不是零。
⽂件权限操作
Linux⽂件权限的描述格式解读
r(read)可读权限,w(write)可写权限,x(executable)可执⾏权限(可也以⽤⼆进制表⽰111 110 100 ---> 764)第1位:⽂件类型(d(directory)⽬录,- 普通⽂件,l(link)链接⽂件)
第2-4位:所属⽤户权限,⽤u(user)表⽰
第5-7位:所属组权限,⽤g(group)表⽰
第8-10位:其他⽤户权限,⽤o(other)表⽰
第2-10位:表⽰所有的权限,⽤a(all)表⽰
chmod
修改⽂件或⽬录的权限
# u 表⽰当前⽤户
# g 表⽰同组⽤户
# o 表⽰其他⽤户
# a 表⽰所有⽤户
# r 表⽰可读
# w 表⽰可写
# x 表⽰可执⾏
chmod u+ # 修改⽂件给当前⽤户添加可读权限
chmod -R u+r xxoo # 修改xxoo⽬录及其⼦⽬录的所有⽂件的权限,给当前⽤户添加可读权限
# 7 可读可写可执⾏,4+2+1
# 6 表⽰可读可写,4+2
# 5 表⽰可读可执⾏, 4+1
# 3 表⽰可写可执⾏,2+1
chmod 764 xxoo.sh # 直接指定⽂件的权限,当前⽤户可读可写可执⾏,当前⽤户所属组可读可写,其他⽤户可读chwon
修改⽂件的所属⽤户和组
chwon user1: # 将⽂件的所属⽤户指定为user1,组为group1
# ⽤数字来表⽰权限
# r = 4
# w = 2
# x = 1
# - = 0
chwon -R user1: # 修改⽬录下所有⽂件及⼦⽬录的所属⽤户和组
常⽤快捷键
Ctrl + C
Ctrl + C 停⽌进程
Ctrl + L
Ctrl + L 清屏
Ctrl + R
Ctrl + R 搜索历史命令
Ctrl + Q
Ctrl +Q 退出
Tab
Tab ⾃动补全
符号命令
重定向
>
将前⼀条命令的输出,写⼊到后⾯的⽂本中,将⽂本清空,然后写⼊。
echo "hello world" >
>>
将前⼀条命令的输出,写⼊到后⾯的⽂本中,不清空⽂本,追加写⼊。
echo "hello world" >>
|
管道命令符,以前⼀个命令的输出作为输⼊,然后进⾏运算。
| grep 'hello' # 打印中带有hello的⾏。
脚本知识
脚本
简单理解就是⼀堆Linux命令。
脚本⽂件
脚本⽂件⼀般是后缀名为.sh的⽂件。
执⾏脚本⽂件
sh fileName.sh
脚本⽂件中也可以定义变量,格式如下:
a=10
注意,等号(=)的前后不能有等号,不然会出现语法错误。
输出
Linux脚本中,也可以输出定义的变量,格式如下:
a=10
echo $a
在脚本中,使⽤echo打印结果,类同于Python中的print()⽅法。
echo也可以直接打印字符串,代码如下:
echo "Hello World"
echo Hello World
在Linux脚本中,字符串可以不带引号,带与不带影响不是很⼤。但是为了增强代码的可读性,建议带上双引号。
echo也可以⼀次打印多个结果,格式如下:
a=10
echo "Hello World" $a
$
在上边我们看到了$这个符号,在什么时候使⽤它呢?在函数的定义阶段(赋值),不需要使⽤$;在变量的调⽤的时候,则需要使⽤$。
计算
求和
a=10
b=3
c=`expr $a + $b`
echo $c
在上边的代码中,使⽤了⼀个变量c接收了计算结果,然后再将打印出来。其中,计算过程要使⽤反引号(`)将其括起来。
expr计算后边的式⼦的值。
求积
a=10
b=3
c=`expr $a * $c`
echo c
如果使⽤上边的代码进⾏计算a*c的积,则会报错,提⽰语法错误。是因为在脚本中,认为*是正则匹配的意思,所有就会出现错误。那么如何求两个变量的积呢,那就需要使⽤反斜线()进⾏转译就可以了,代码如下:
a=10
b=3
c=`expr $a \* $c`
echo c
总结下就是,+、-、*、/,其中乘转译⼀下就可以了,其他三个都不⽤处理。但是运算符的左右两端必须要加上空格,不然没有办法运算。
还有⼀个特殊的就是⼩括号(()),在脚本中也需要转译,书写为\(\)。
在脚本脚本中,如果有⾮常长的公式的话,建议拆成多个短的公式。
linux循环执行命令脚本
if判断
a=5
b=35
if [ $a > $b ]
then
echo $a
else
echo $b
fi
上边的代码的结果输出为5,按照我们的逻辑应该输出的是35才对,这是为什么呢?这是因为Linux脚本中不能使⽤⼤于号(>)这类符号来进⾏⽐较运算。在脚本中,⽐较运算如下:
序号⽐较运算脚本中的使⽤⽅式备注
1等于(=)-eq equal
2不等于(≠)-ne not equal
3⼤于(>)-gt geater then
4⼤于等于(≥)-ge geater or equal
5⼩于(<)-lt less than
6⼩于等于(≤)-le less or equal
所以,正确的代码如下:
a=5
b=35
if [ $a -gt $b ]
then
echo $a
else
echo $b
fi
注释
Linux脚本中注释使⽤#进⾏注释,加在每⼀⾏的最左端。
循环语句
for循环
格式如下:
for x in 1 2 3 4 5 6 7 8 9 10
do
echo $x
done
上边代码中,for⼀⾏的x没有带$是因为这⾥的是赋值,所以不需要带。下边的使⽤了$是因为这⾥是调⽤。
本分版本可以简化为如下⽅式:
for x in {1 .. 10}
do
echo $x
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论