一.首先,什么是shell

shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。 shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能。

总括,shell是linux命令集的概称,是属于命令行的人机界面。Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。Shell 和Shell Script不是一回事,通常我们说的都是Shell Script。

由定义可知, shell相当于经过装饰的命令行,和命令行一样,都能操作linux。但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作。

二.常用命令

1. telnet

语法:telnet 主机名 或 telnet IP地址telnet 130.129.21.250 

2.ll 文件或目录处理:列出文件或目录下的文件名。

语法: ls [-atFlgR] [name]

ls 列出目前目录下的文件名。

ls -a 列出包括以 .开始的隐藏文件的所有文件名。

ls -t 依照文件最后修改时间的顺序列出文件名。

ls -F 列出当前目录下的文件名及其类型。以/ 结尾表示为目录名,以* 结尾表示为可执行文件,以@ 结尾表示为符号连接。

ls -l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。

ls -lg 同上,并显示出文件的所有者工作组名。

ls -R 显示出目录下以及其所有子目录的文件名。

3.cd  改变工作目录

语法:cd [name]name:目录名、路径或目录缩写。cd - //返回到原来的目录

4.cp: 复制文件

语法: cp [-r] 源地址 目的地址cp -r dir1 dir2 复制整个目录。

5.mv : 移动或更改文件、目录名称

语法:mv 源地址 目的地址

6.mkdir: 建立新目录

语法: mkdir 目录名

7.rm 和rmdir: 删除目录

语法: rmdir 目录名 或 rm 目录名rmdir dir1 删除目录  dir1,但 dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录  dir1及其子目录下所有文件

8.rm: 删除文件

rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。rm f* 删除文件名中以 f 为字首的所有文件。

9.pwd: 列出当前所在的目录位置

10.cat: 查看文件内容

cat file1 以连续显示方式,查看文件名 file1 的内容。

11.more:分页查看文件内容

语法: more 文件名 或 cat 文件名 | more

12.查看目录所占磁盘容量

语法: du [-s] 目录du dir1 显示目录 dir1 的总容量及其子目录的容量(以KB 为单位)。
du -s dir1 显示目录 dir1 的总容量(以KB 为单位)。
du -sh dir1 显示目录 dir1 的总容量(以M 为单位)。

13.文件权限的设定

(1)改变文件或目录的读、写、执行权限

语法:chmod [-R] mode namename :文件名或目录名chmod -R 777 xml.go

(2)改变文件或目录的所有权

语法:chown [-R] 用户名 namechown vagrant  xml.go 

14. groups: 检查自己所属的工作组名称

15. touch:改变文件或目录的最后修改时间(没啥意义)

语法:touch name

16.grep "关键字" 文件名: 查询关键字在文件中的位置

grep string file

17.查找文件或命令的路径

语法:whereis command 显示命令的路径。
语法:which command 显示命令的路径,及使用者所定义的别名。
语法:whatis command 显示命令功能的摘要。sudo find / -name xml.go //查找文件的路径

18.比较文件或目录的内容

语法:d i ff [-r] name1 name2
name1 name2:必须同时为文件名或目录名。diff file1 file2 比较文件file1 与 file2 内各行的不同之处。
diff -r dir1 dir2 比较目录 dir1 与 dir2 内各文件的不同之处

19.进程控制

(1)查看系统中的进程

语法:ps [-aux]
ps或ps -x 查看系统中,属于自己的进程。
ps -au 查看系统中,所有用户的进程。
ps -aux 查看系统中,包含系统内部的及所有用户的进程。

(2)结束或终止进程

语法:kill [-9] PID

(3)在后台执行进程的方式(不常用)

语法:命令 &

(4)jobs: 查看正在后台中执行的进程

20.history: 查看命令记录表的内容

!!:  重复执行前一个命令

! n:  n代表记录表的命令编号

! cat : 重复前面执行过的以 cat 为起始字符串的命令。

显示前一个命令的内容

语法: ! !:p

21.文件的压缩

(1). 压缩文件

语法:compress 文件名 压缩文件

语法:compressdir 目录名 压缩目录

(2). 解压缩文件

语法:uncompress 文件名 解压缩文件

语法:uncompressdir 目录名 解压缩目录

22.| :管道命令的使用

语法:命令1 | 命令2  将命令1的执行结果送到命令2,做为命令2的输入。

23.输入/输出控制

(1)标准输入的控制

mail -s “mail test” 电子邮件地址 < file1 将文件file 当做信件的内容,主

题名称为 mail test,送给收信人。

mail -s "mail test" xiaowangli@huashenggroups.com < xml.go

(2)标准输出的控制

语法:命令 > 文件 将命令的执行结果送至指定的文件中。ls -l > list 将执行 “ls -l” 命令的结果写入文件list 中。语法:命令>! 文件 将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。ll >list.txt
tail -30  xml.go>list2.txt

结果:list.txt内容

24.awk: 非常有用的一个文本处理命令,逐行运行,默认使用空格分割,-F 表示分割的样式

25,shell 语法

if then else :   shell 文件

例子1:

#判断文件是否存在#!/bin/bashif [ -f Af.php ];then
echo 'file exist'
else
echo 'file not exist'
fiexit 0

执行shell文件

bash test.sh 

结果:

例子2:根据输入判断正负数

注意:[ ] 内两边要空一格.关键词左右都要空一格

#!/bin/bash
#提示用户输入一个值
echo -n "请输入一个数字:"#保存用户输入的值到num中
read num#[ ] 内两边要空一格
if [ "$num" -gt 0 ];then
echo '正数'
elif [ "$num" -lt 0 ];then
#elif [ "$num" -lt 0 ];then
echo '负数'
else
echo '零'
fiexit 0

例子3:case 语句

#!/bin/bashecho -n "你单身吗? (y/n)"read valcase $val in Y|y)
echo "我们约会吧"
;;N|n)
echo "不约,再见"
;;*)
echo "输入有误"
;;esacexit 0

结果:

例子4:ls 列出当前目录中文件列表

#!/bin/bash#将结果存在CUL_DIR中
CUR_DIR=`ls`  #此处不是单引号,而是`` 撇号#显示ls 的结果
echo $CUR_DIRfor v in $CUR_DIR
do
if [ -f $v  ];then
echo "FILE: $v"
fi
doneexit 0

计算输出 1-10 之间数字的总和

#!/bin/bashsum=0
for ((i=0;i<10;i++))
do
((sum=$sum+$i))
doneecho "sum=$sum"exit 0

例子5:使用 break 和 continue 控制循环
break 命令允许跳出循环

continue 命令类似于 break 命令,只有一点重要差别,它不会跳出循环,只是跳过这个循环步。:[break 应用] 从 0 开始逐步递增,当数值等于 5 时跳出本次循环,等于10时停止递增。

#!/bin/bash#设置起开始值
val=0while true
do
if [ "$val" -eq "5" ];then
#如果是val=5,则挑出循环
((val++))
continue;
elif [ "$val" -eq "10" ];then
break;
else
#输出值
echo "val:$val"
#将数值加1
((val++))
fi
doneexit 0

结果:

数组:

例子6:

数组定义:

  1. array=(10 20 30 40 50)  一对括号表示是数组,数组元素用 “空格” 符号分割开。引用数组时从序号 0 开始。
  2. var="10 20 30 40 50"; array=($var)
  3. 除了上面的定义方式外,也可以单独定义数组:
array[0]=10
array[1]=20
array[2]=30
array[3]=40
array[4]=50

数组操作:

#!/bin/bash
array=(10 20 30 40 50)#显示数组中所有元素
echo "数组列表:"
echo ${array[*]}
echo ${array[@]}#显示数组第2项
echo "显示数组第二项"
echo ${array[1]}#a显示数组长度
echo "显示数组长度:" ${#array[*]}
echo ${#array[@]}#输出数组的第1-3项
echo "数组的第1-3项:" ${array[@]:0:3}#将数组中的0替换成1
echo "将数组中的0替换成1" ${array[@]/0/1}#删除数组的第2项
#unset 仅只是清除array[1]的值,并没有将array[1]删除掉
echo '删除数组的第2项'
unset array[1]
echo ${array[@]}exit 0

函数:

#!/bin/bashfunction foo()
{#定义局部变量ilocal i=0#定义局部变量total,传入foo 的参数总数local total=$##输出参数总数echo "total param=$total"#输出传入foo的每一个参数for val in $@do((i++))echo "$i -- val= $val"done#返回参数总数
return $total}foo
foo param1 param2 param3
echo "return value=$?"exit 0
~        

数值运算

数值元算主要有4种实现方式:(())、let、expr、bc。
工作效率:(()) == let > expr > bc**
(())和let是bash内建命令,执行效率高;而expr和bc是系统命令,会消耗内存,执行效率低。
(())、let和expr只支持整数运算,不支持浮点运算;而bc支持浮点运算。

#!/bin/bash
#4 种方式计算3*(2+5)#1.(())
val1=$((3*(2+5)))
echo "val1=$val1"#2.let
let "val2=3*(2+5)"
echo "val2=$val2"#3.expr
val3=`expr 3 \* \(5+2\)`
echo "val3=$val3"#4.bc
val4=`echo "3*(5+2)"| bc`
echo "val4=$val4"

第3,4种有问题

字符运算

#!/bin/bashstr='hello world'echo "显示字符串:" ${str}echo '显示字符串长度:' ${#str}echo '提取world:' ${str:6}echo '提取or:' ${str:7:2}echo '删除hello: '${str#hello}echo '删除world: ' ${str%world}echo '将所有的l替换为m: '${str//l/m} #此处l 前两个/,一个的话只会替换一个lexit 0

bash 调试

bash [-nvx] scripts.sh

  • 选项与参数:
  • -n: 不要执行 script,仅查询语法的问题;
  • -v: 再执行 sccript 前,先将 scripts 的内容输出到屏幕上;
  • -x: 将使用到的 script 内容显示到屏幕上,这是很有用的参数!
例子:想要执行 bash 脚本,并查看 bash 的调用流程,可以通过以下命令:bash -x test.sh

echo [-neE] string

选项与参数:

  • -n: 输出内容之后,不换行。默认是输入内容之后,换行。
  • -e: 开启反斜线“\”转义功能
  • -E: 开启反斜线“\”转义功能(默认)。
  • 例子:输出 please input a number: 之后不换行

bash 内建指令

echo
在屏幕上显示出指定的字串

read
从标准输入设备读入一行,分解成若干字,赋值给 bash 程序内部定义的变量

alias
别名,alias l='ls -al'

export
export 可以把 bash 的变量向下带入子 bash (即子 bash 中可以使用父 bash 的变量),从而让子进程继承父进程中的环境变量。但子 bash 不能用 export 把它的变量向上带入父 bash。

exec
当 bash 执行到 exec 语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程(也就是最初的 bash)就终止了,所以 bash 程序中 exec 后面的语句将不再被执行。

.
使 bash 读入指定的 bash 程序文件并依次执行文件中的所有语句。

exit
退出 Shell 程序,在 exit 之后可有选择地指定一个数位作为返回状态。

参考:linux的命令行操作和shell的区别

bash 命令和语法

常用shell命令归纳总结相关推荐

  1. hbase 数据插入指定rowkey_「HBase大爆炸」HBase之常用Shell命令

    HBase之常用Shell命令 1.进入 HBase客户端命令操作界面 2.查看帮助命令 3.查看当前数据库中有哪些表 4.创建一张表 创建user表,包含info.data两个列族 或者 5.添加数 ...

  2. 八、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(中)

    @Author : Runsen @Date:2020/9/11 文章是Runsen在Gitchat付费文章分享:Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程 顺便同步到C ...

  3. 七、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(上)

    @Author : Runsen @Date:2020/9/11 文章是Gitchat付费文章分享:Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程 顺便同步到CSDN中,这里 ...

  4. Hadoop之HDFS常用Shell命令

    Hadoop之HDFS常用Shell命令 启动Hadoop集群 sbin/start-dfs.shsbin/start-yarn.sh -help:输出这个命令参数 hadoop fs -help r ...

  5. Windows常用shell命令大全

    From: http://blog.csdn.net/yunzhongfeiniao/article/details/6564577 基于鼠标操作的后果就是OS界面外观发生改变,就得多花学习成本.更主 ...

  6. Linux基础(2)--Linux常用shell命令

    Linux常用shell命令 显示命令 查看当前工作路径 切换目录 清屏 显示和配置网络属性 新建文件夹 删除命令 压缩和解压命令 拷贝命令 帮助命令man 显示命令 – 命令:ls – 参数:a,l ...

  7. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

  8. hadoop fs –ls /hbase 无内容_Hadoop学习---HDFS的常用shell命令详解

    注意:访问hdfs系统的指令 hadoop dfs --- 已过时 hadoop fs -- 使用范围更大 hdfs dfs --范围相对较小hadoop fs 和 hdfs dfs之间没有太大的区别 ...

  9. Hadoop2常用Shell命令

    1.       FS Shell 1.1     简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FSshell命令使用URI路 ...

  10. Linux Android 常用shell命令汇总 不断更新

    文章目录 @[toc] 01 前言 02 正文 01 前言 Linux shell命令应该算是非常入门的东西,但是实际上在使用的时候,会遇到各种各样的问题,前几天我在我们的项目上需要做一个功能,根据进 ...

最新文章

  1. happy 99 (转载)
  2. L3-006 迎风一刀斩 (30 分)-PAT 团体程序设计天梯赛 GPLT
  3. Apache 配置SSL网站
  4. java实验十三io_Java语言基础13—IO
  5. 清明上河图30亿像素_清明上河图高清下载|
  6. 深度Linux操作系统使用体验
  7. 群晖Nas通过jellyfin搭建本地影音库详细全过程(一):通过群晖系统docker容器安装jellyfin影音库服务器
  8. dev chart 绘制图形
  9. Android 智能手机程序使用历史记录查询
  10. 活久见:都 2203 年了,你还在使用 word 调试 API
  11. 深踩 AndroidStudio 缓存的坑
  12. python filter函数_python 内置函数filter
  13. Centos6.4忘记密码 单机下修改root密码
  14. 如何在C加加的面向对象写游戏 我的世界
  15. 带有播放列表的网页播放器
  16. 不为人知的腾讯创业史---蜗牛创业网
  17. 百汇BCR:通过K线可以判断出外汇市场有哪些形态?
  18. sudo su后获取不到JAVA_HOME环境变量的解决方案
  19. 什么是域名?如何注册域名?
  20. C语言 统计一篇英文短文中单词的个数

热门文章

  1. 2022年武汉科技大学成人高等学历教育招生简章--学历提升、高起专、专升本
  2. 帆软日期格式转换_日期和时间函数- FineReport帮助文档 - 全面的报表使用教程和学习资料...
  3. php 判断来访IP地址是国内还是国外的
  4. 垃圾处理设备远程调试远程运维方案
  5. 在app上查看开发代码
  6. 等宽字体与非等宽字体_我最喜欢的等宽字体
  7. Process v3.5发布了!调节中介分析利器 SPSS process macro 插件
  8. 华为笔记本电脑安装 Linux 操作系统之Manjaro(手把手教学)
  9. 64位 mxcomponent_三菱MX Component 4.16S下载
  10. 2022年上半年软件设计师上午真题及答案解析