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小时内删除。