linux shell 基础

简介: Linux命令行与shell脚本编程大全.第3版

ls 命令

#查看所有文件,包括隐藏文件(linux 隐藏文件是.开头的)
ls -a

image

#添加 -F参数 显示区分文件和目录(目录后面带斜杠),F 参数大写
ls -F

image
pwd输出当前目录

pwd

image

# .表示当前目录
# .. 表示父级目录

image

# -R 列出子目录
ls -R

image

# 列出文件详细信息 -l 小写
ls -l

image

# 过滤  通配符*代表零个或多个字符,?表示一个字符
ls -l *sh

image

#[si] 表示[]对应一个s或者i
ls -l connect_2_ecs.[si]h

image

# [a-z] 表示 a到z 的范围
ls -l connect_2_ecs.[a-z]h

image

# [!a] 排除a(a之外的其他字符)
ls -l connect_2_ecs.[!a]h

image

# 如果文件不存在touch 创建文件,否则他只会修改文件的修改时间
 touch test_one

image

#参数 -a 修改文件test_one的访问时间
#  ls -l  默认输出修改时间  如果想输出访问时间 加参数  --time=atime  如
# ls -l --time=atime
 touch -a test_one

image
文件拷贝

#  cp 复制文件如果文件已经存在会覆盖不会询问
# 所以安全起见 可以加上  -i 参数  cp -i source destination    destination 
# 可以是文件名 也可也是目录 ,如果是目录那cp 只会拷贝文件,
# 如果是文件名cp会拷贝文件并重命名
# 如果要拷贝到当前目录可以打个点  cp -i ../test_one .
# cp命令参数还很多可以用man cp 命令查看 其他参数的用法
# 按q退出 按上下键翻页

image
image

# cp命令还可以用通配符批量拷贝文件

创建文件链接

# ../connect_2_ecs.sh是源文件   run.sh新创建的链接文件 vim打开run.sh 
# 会发现run.sh是connect_2_ecs.sh run.sh内容,而且 run.sh颜色也不一样
# run.sh 是个链接文件大小很小,而且文件的Info编码也不一样
# info编码是linux为每一个文件分配的唯一的一个编码,用ls -li 查看
ln -s ../connect_2_ecs.sh run.sh

image
image
移动文件

# mv 命令只修改文件的名字跟未知不改变修改时间

删除文件

# rm 彻底删除文件无法找回,可以加 -i 参数删除之前询问

操作目录

# mkdir 创建单个目录
mkdir  test_2
# 创建多个目录 nurmemt test mv 要加参数 -p 
mkdir -p nurmemet/test/mv
# rmdir 只能删除空目录
rmdir  test
# 删除test 以及里面的子目录,
rm -r test
# 强制删除test 以及里面的子目录,
rm -rf test
# 强制删除test 以及里面的子目录,删除之前询问
rm -ri test
# 查看文件类型
file connect_2_ecs.sh

image
image

# 查看文本文件内容
cat connect_2_ecs.sh
# 查看文本文件内容
# -n 参数文本内容前面加上行号
# -b 参数也可以输出行号,但是它不计空行
cat -n connect_2_ecs.sh

image
image

# 命令不适合查看大文件内容
# 大文件可以用 more 命令查看,可以分页查看
# 按回车逐行查看
# 按空格分页
# 按q退出

image

# less 命令是more 命令的升级版,包含more命令所有的功能
# tail 命令直接定位到文件末尾
# tail -n 可以显示行数
# tail -f  循环读取文件末尾  (查看tomcat日志时很有用)
# head 命令输出文件头部几行

查看进程信息

# ps 默认情况下只输出当前用户所属的进程信息
# root 登录进来只是运行了bash和当前的ps
ps

image

# top命令实时查看进程信息
top

image

# kill  PID
# killall 命令行名称   如 killall java  会杀死所有java进程
# killall 命令还可以使用通配符  如  killall http*

磁盘管理

# 查看当前挂载的硬盘状态
# 当前很多图形界面系统如ubuntu已实现插入移动存储设备就自动挂载
# 但是假如系统没有这个功能,管理员得用命令挂载
# 磁盘挂载与卸载都可以mount命令实现这里不详细介绍
mount

image

# df  命令可以查看已挂载磁盘使用 情况
# df -h 会易读的方式输出信息如Kb转换成mb,gb之类的
df 

image
image

# 文件中搜索文本
# 结果只显示对应的行的数据
# 还可以加 -n 参数搜索结果的行号
grep 孙俪  test_one
# grep -n 孙俪 test_one
# 也可以加 -v 参数进行反向搜索
# grep -v 孙俪 test_one  

image
image

# shell 一次执行多条命令
# ( pwd ; (echo $BASH_SUBSHELL)) 
# 每个括号对应一个shell 
# 会创建单独的shell 执行括号内的内容
pwd ; ls ; cd /etc ; pwd ; cd ; pwd ; ls

image

# 输出命令属于哪个程序
# 也可以用which 命令

image
image

# 用 history命令可以查看 用户使用bash 命令历史记录
# 用户bash命令历史记录时保存在用户目录下.bash_history目录中
# 可以用cat .bash_history查看

image

# 为命令起别名
alias li='ls -li' 
# 之后输入li  相当于输入了ls  -li 命令
# 系统本身也会提供些别名,可以用alias -p 命令查看

环境变量

# 环境变量分为全局环境变量和局部环境变量
# 局部环境变量只是创建他的shell中有效
# env 命令可以查看所有系统环境变量
# printenv命令也可以查看所有系统环境变量
# 也可以用命令输出环境变量的值  如echo $HOME 
# 通常系统提供的环境变量全部都是大写字母
# 设置局部环境变量
echo myname
myname=nurmemet
# 如果要给变量赋带空格字符时字符串必须空引号括起来如下面
myname='nurmemet hamut'
# 如果用户自己创建的shell局部环境变量请都用小写字母,shell规范
# 局部环境变量只在当前shell中才能访问

#设置全局环境变量
# 先设置局部环境变量然后用export命令导出为全局环境变量
# 子shell中可以改变父shell中定义的全局环境变量但是这种改变只有
# 在子shell中有效并不会影响到父shell,即父shell中变量的值不会发生变化
# 用unset命令删除环境变量例如
unset school
# 请注意此时变量前面没有$符号
# 跟修改一样子shell中删除全局环境变量不会反映到父shell中,父shell依然可以访问

#PATH环境变量
#PATH环境变量的值是用冒号隔开的
# 下面是配置java的过程
#配置好了之后任何目录都可以访问java命令了

image
image
image
image
image

条件语句if else

echo  '选择云服务器  1. 预发布环境 2.测试环境 3.nurmemet ecs'
read replay
if [ $replay -eq 1 ] ; then
echo '126.26.246.36 预发布环境连接中... '
ssh root@126.26.246.36
elif [ $replay -eq 2 ] ;then
echo '48.98.48.118 测试环境连接中...'
ssh root@48.98.48.118
elif [ $replay -eq 3 ] ;then
echo '59.119.229.209 nurmemet连接中...'
ssh root@59.119.229.209
else echo '输入有误'
fi
# 注意 [] 前后空格是必须的,还有本例子中输入是整型数据 所以没有引号括起来,如果输入是字符串类型那条件语句应该 '$replay'
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
70 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
642 2
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
33 0
|
3月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
4月前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
59 4
|
4月前
|
Ubuntu Linux Shell
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
|
4月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
57 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志