Linux-常用 Shell 命令
· 阅读需 22 分钟
最后更新于 2018-10-14 13:00:00
Linux 是一个优秀的开发环境,大多数服务器都在上面部署。作为一个程序员,熟悉 Linux 系统的常用操作也是很必要的。在 linux 内核外,shell 提供了我们程序员(用户)与内核之间的交互媒介,shell 可以说是一个命令解释器,当然它也负责将内核输出信息翻译给程序员。
Shell
Linux 是一个基于命令行的操作系统,提供了一个命令解释器,即 Shell(壳)。Shell 是一个软件,是操作系统的用户界面,用户通过在 Shell 中输入命令,然后命令解释器解释完成后将指令送往内核中执行,来实现对 Linux 系统的操作。
Linux 中的 Shell 也有不同的版本:Bourne Shell(贝尔实验室开发)、Bash(GNU 开发)、C shell(Sun 公司开发)、Z shell(集成了前几种 shell 的优点)等等,我们目前最常用的就是 Bash。
常用命令
下面将是一些常用的 Shell 命令的总结,熟悉这些命令能帮助我们更快的适应 Linux 系统的环境。
目录、文件
文件与目录是系统中最常见的基本单位,这里介绍一些常用的文件、目录操作。
# 文件属性与权限(总共10位)
[-][---][---][---]
# 第1位:-表示文件;d表示目录;l表示软链接
# 第2-4位:rwx 所有者(user)用户权限
# 第5-7位:rwx 所属组(group)用户权限
# 第8-10位: rwx 其他用户权限
r (可读) w (可写) x (可执行)
# 示例
-rwxr-xr-x # 这是一个文件,所有者可读可写可执行,所属组与其他用户可读可执行但不可写
pwd # 查看当前路径
cd [目录] # 切换到目标目录
创建
# 目录
mkdir [目录] # 创建一个空目录
mkdir -p [目录/子目录/] # 创建一个多层嵌套目录
# 文件
touch [文件] # 创建一个文件,或者更新已有文件时间
删除
# 命令格式
rm [选项] [目录文件]
# 命令选项
-i # 删除时提示
-r # 允许删除目录
-f # 忽略提示警告
# 命令示例
rm -rf ./tmp # 删除当前目录下的tmp文件或目录,忽略提示警告
rmdir [目录] # 删除一个目录(只能删除空目录)
查看
# 目录
# 命令格式
ls [选项] [目录]
# 命令选项
-d # 查看目录属性
-a # 查看目录内所有文件和子目录,包括隐藏的
-l # 显示文件、子目录详细信息
-h # 显示文件、子目录大小(带单位)
-i # 显示文件、子目录 inode
-R # 递归显示目录(显示子目录的子目录路径)
# 命令示例
ls -a # 查看当前目录所有文件、子目录
ls -lh /root/ # 查看root目录内所有文件、子目录并显示详细信息和大小
# 文件
cat [文件] # 查看文件内容
file [文件] # 查看文件类型
head [-n] [文件] # 显示文件内容开始n行(默认10行)
tail [-n] [文件] # 显示文件内容末尾n行(默认10行)
-f # 持续更新文件末尾内容(方便查看更新的日志)
more [文件] # 翻页显示文件内容(只能向下翻页)
less [文件] # 翻页显示文件内容(上下翻页)
复制
# 命令格式
cp [选项] [源目录文件] [目标目录]
# 命令选项
-r # 允许复制目录
-p # 同时复制文件属性
-d # 若源文件是链接文件,则复制链接属性
-a # 相当于 -pdr
-v # 显示详细信息
# 命令示例
cp -r ./tmp1 ./tmp/ # 将当前目录下的tmp1目录或文件复制到当前目录下tmp目录内
剪切
mv [源目录文件] [目标目录] # 剪切目录或文件
mv [旧目录文件名] [新目录文件名] # 重命名
搜索
由于命令行的界面给我们查看系统文件带来了视觉上的不便,所以学会使用命令去搜索文件会给我们了解系统中存放的文件情况带来方便。
locate
# 搜索某个目录、文件的所在路径
locate [文件] # 在后台数据库中搜索,速度快;但是最近新建的不能找到,需执行 updatedb 更新数据库
find
# 搜索某个目录、文件的所在路径,以及详细信息等
# 命令格式
find [搜索范围] [选项] [搜索目标]
# 命令选项
-name # 按目录或文件名搜索
-user # 按用户名搜索
-nouser # 搜索没有用户的目录、文件
-mtime # 按内容修改时间搜索
-atime # 按内容访问时间搜索
-ctime # 按属性修改时间搜索
-size # 按目录、文件大小搜索
-inum # 按目录、文件 inode 搜索
# 命令示例
find ./ -name tmp # 在当前目录下搜索名字为tmp的目录和文件
find / -nouser # 在根目录下搜索没有用户的目录和文件
find ./ -mtime +10 # 在当前目录下搜索10天前修改的目录和文件
find ./ -size 25k # 在当前目录下搜索大小为25KB的目录和文件
find ./ -size +25k -a -size -50k # 在当前目录下搜索大小为25KB到50KB的目录和文件
find ./ -inum 262 # 在当前目录下查找inode是262的目录和文件
# 执行多条命令(后一条命令接受前一条命令的结果)
find [搜索范围] [选项] [搜索目标] -exec [命令] [选项] {} \;
# 命令示例
find ./ -size 25k -exec ls -lh {} \; # 搜索当前目录下大小是25KB的目录和文件并显示详细信息
whereis
# 搜索命令所在路径及帮助文档
# 命令格式
whereis [选项] [命令]
# 命令选项
-b # 只查找可执行文件(命令)
-m # 只查找帮助文件
# 命令示例
whereis ls # 查找 ls 命令可执行文件所在路径及帮助文档所在路径
which
# 搜索命令所在路径以及别名
which [命令]
grep
# 搜索文件内容
# 命令格式
grep [选项] [搜索内容] [文件]
# 命令选项
-v # 结果取反
-i # 忽略大小写
# 命令示例
grep "Hello" hello.sh # 搜索 hello.sh 文件内包含Hello字符串的地方