linux命令行和linux编程区别,Linux命令行和Shell脚本编程(一)

一、Linux命令行

1.1 常用命令

echo -n "hello" #不换行

echo -e "hello\nworld"

head -n2 data.txt

tail -n2 data.txt

ping 127.0.0.1 > ping.log & #置于后台运行

jobs #查看后台作业

fg #移置前台运行

which command #查看可执行文件的位置

find . -name "*.c"

df -h #显示磁盘使用情况

du -sh #显示当前文件夹的大小

ln -s data.txt link

ln data.txt link

date #显示当前日期和时间

wc file #统计file的行数,单词数和字节数

wc -c file #只统计file字节数

wc -l file #只统计file行数

ps -ef #显示当前所有进程

ps -aux #显示所有包含其它使用的进程

top #显示系统正在执行进程的相关信息,包括进程ID、内存占用率、CPU占用率等

kill -9 PID #强制结束进程

killall command

free #显示系统内存使用情况

tar cvf file.tar file/

tar xvf file.tar

zip file.zip file/*

unzip file.zip

alias today='date +"%A, %B %-d, %Y"'

unalias today

1.2 快捷键

ctrl a:将光标移至行首

ctrl b:将光标向行首移动一格

ctrl e:将光标移至行尾

ctrl f:将光标向行尾移动一格

ctrl l:清屏

shift PageUp:向上翻页

shift PageDown:向下翻页

ctrl d:删除光标处字符/命令行没有字符则关闭shell会话

ctrl w:删除光标处向行首的单词

ctrl k:从光标位置剪切/删除至行尾

ctrl u:从光标位置剪切/删除至行首

ctrl y:在光标位置粘贴

1.3 零碎知识

1.3.1 Linux中单引号和双引号的区别

单引号用于保留字符的字面含义,各种特殊字符在单引号里面,都会变为普通字符

双引号比单引号宽松,可以保留大部分特殊字符的本来含义,但是三个字符除外:美元符号($)、反引号(`)和反斜杠(\)

1.3.2 重定向输入输出

command > demoFile:替换

command >> demoFile:追加

command < demoFile:输入重定向

command << EOF:内联输入重定向,EOF表示结束符

二、Shell脚本编程

2.1 基本脚本示例

#!/bin/bash

echo $HOME

var1=1

var2=$(echo 3)

echo $var1,$var2

环境变量:env或printenv命令显示当前所有的环境变量,export命令用于设置/更改环境变量

用户变量:由字母、数字、下划线组成的字符串,区分大小写,等号两边不能出现空格

命令替换:将命令的输出赋给变量,两种形式,一种是反引号`command`,一种是$(command)

注意:命令替换会创建子shell来执行command,所以command中是无法使用脚本中所创建的变量的

数学运算:形式:

f24d5eaba6df5c89a9f09cb3fac80d19.png

注意:只支持整数运算,如$[4/3]会得到1

bc:使用命令替换和管道实现浮点运算,scale是计算结果保留的小数位数,默认是0,所以计算之前要先进行赋值

var1=$(echo “scale=4; 3.44 / 5” | bc)

如果有大量计算可以使用内联输入重定向

var=$(bc << EOF

scale=4

a = ($var1 * $var2)

b = ($var3 * $var4)

a + b

EOF

)

运行脚本:

838449b3b9c899a5d3712be07ac3c415.png

chmod u+x newfile #u代表用户,g代表组,o代表其他,a代表所有以上

chmod 755 newfile

./newfile

退出脚本:

$?:上个执行命令的退出状态码

退出状态码是一个0~255的整数值,执行成功返回0,执行错误则返回正数值

使用exit命令允许你在脚本结束时指定一个退出状态码

shell脚本默认会以脚本中最后一个命令的退出状态码退出

2.1 条件语句if

if command

then

commands

fi

if command;then

commands

fi

执行command,如果command执行成功,即退出状态码为0,则继续执行commands,否则不执行

if command

then

commands1

else

commands2

fi

if command;then

commands1

else

commands2

fi

执行command,如果command执行成功,即退出状态码为0,则执行commands1,否则执行commands2

if command1

then

commands

elif command2

then

more commands

fi

if command1;then

commands

elif command2;then

more commands

fi

执行command1,如果command执行成功,即退出状态码为0,则执行commands,否则执行command2,如果command2执行成功,则执行more commands

if [ condition ]

then

commands

fi

if [ condition ];then

commands

fi

注意:第一个方括号之后和第二个方括号之前必须都加上一个空格,[  ]支持三类条件判断:

数值比较

字符串比较

文件比较

579bf0e91cdcd0d830e8356be60c774b.png

0980381230d24f821e700c56965b0d77.png

cd8efa1df893f2b68d947acfe3174c74.png

注意:字符串比较

大于号和小于号必须转义,否则shell会把它们当作重定向符号,把字符串值当作文件名

大于和小于顺序和sort命令所采用的不同。在比较测试中,大写字母被认为是小于小写字母的。但sort命令恰好相反

9c45053e7cec13de6b947b0ecf5c1cf5.png

复合条件判断:两种布尔运算符

[ condition1 ] && [ condition2 ]

[ condition1 ] || [ condition2 ]

if-then 的高级特性:

用于数学表达式的双括号

19d510683388be818fdde32e823a68f9.png

用于高级字符串处理功能的双方括号

f35701dbcf9335d6b92907934c39896b.png ,提供正则判断功能

740002c2a5044ddd4aa0fedffb746e3e.png

2.2 case语句

case variable in

pattern1 | pattern2) commands1;;

pattern3) commands2;;

*) default commands;;

esac

case命令会将变量variable与不同模式进行比较。如果变量和模式是匹配的,那么shell会执行该模式指定的命令。

可以通过竖线操作符在一行中分隔出多个模式模式。

星号会捕获所有与已知模式不匹配的值。

三、高级Shell脚本编程

Linux命令行和Shell脚本编程(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值