常用shell命令归纳总结

常用shell命令归纳总结

大家好,又见面了,我是全栈君。

一.首先,什么是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 name

name :文件名或目录名

chmod -R 777 xml.go

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

语法:chown [-R] 用户名 name

chown 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: 查看命令记录表的内容

常用shell命令归纳总结

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

! 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内容

常用shell命令归纳总结

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

常用shell命令归纳总结

常用shell命令归纳总结

25,shell 语法

if then else :   shell 文件

例子1:

#判断文件是否存在

#!/bin/bash

if [ -f Af.php ];then
echo 'file exist'
else
echo 'file not exist'
fi

exit 0

执行shell文件

bash test.sh 

结果:

常用shell命令归纳总结

例子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 '零'
fi

exit 0

例子3:case 语句

#!/bin/bash

echo -n "你单身吗? (y/n)"

read val

case $val in 
 Y|y)
echo "我们约会吧"
;;

N|n)
echo "不约,再见"
;;

*)
echo "输入有误"
;;

esac

exit 0

结果:

常用shell命令归纳总结

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

#!/bin/bash

#将结果存在CUL_DIR中
CUR_DIR=`ls`  #此处不是单引号,而是`` 撇号

#显示ls 的结果
echo $CUR_DIR

for v in $CUR_DIR
do
if [ -f $v  ];then
echo "FILE: $v"
fi
done

exit 0

常用shell命令归纳总结

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

#!/bin/bash

sum=0
for ((i=0;i<10;i++))
do
((sum=$sum+$i))
done

echo "sum=$sum"

exit 0

常用shell命令归纳总结

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

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

#!/bin/bash

#设置起开始值
val=0

while true
do
if [ "$val" -eq "5" ];then
#如果是val=5,则挑出循环
((val++))
continue;
elif [ "$val" -eq "10" ];then
break;
else
#输出值
echo "val:$val"
#将数值加1
((val++))
fi
done

exit 0

结果:

常用shell命令归纳总结

数组:

例子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/bash

function foo()
{
 #定义局部变量i
 local 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
~        

常用shell命令归纳总结

数值运算

数值元算主要有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种有问题

常用shell命令归纳总结

字符运算

#!/bin/bash

str='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 前两个/,一个的话只会替换一个l

exit 0

常用shell命令归纳总结

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 命令和语法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111514.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月19日 下午2:00
下一篇 2022年2月19日 下午2:00


相关推荐

  • 用递归实现斐波那契数列 python_python斐波那契数列前30项

    用递归实现斐波那契数列 python_python斐波那契数列前30项文章目录一,递归方法: 二,斐波那契数列简介: 特性一: 特性二: 两种方法运行时间对比: /一,递归方法:/递归方法为:将问题一步步分解,直到得到可以解决的简单问题。通常涉及直接或间接条用自身:例如计算列表(1,3,5,7,9,13)中各元素的和。直接或间接调用sum()函数自身:python实现如下:In[1]deflistsum(a):iflen(a)==1:r…

    2025年8月26日
    11
  • 使用zabbix监控redis内存使用

    使用zabbix监控redis内存使用本篇提到的监控环境是有条件的,即默认单机只运行一个redis实例,且默认运行的端口是6379(也可以是其他端口,需要通过sed-i’s/6379/你修改的端口/g’xml模板文件修改模板文件里的端口号)。即然有这么多局限,岂不是适应用环境很差。确实,本篇算是一个基础部分,为后面提到的lld(lowleveldiscovery)自动发现做铺垫。由于前面几部分也对基础的东西做了很多总结…

    2022年5月18日
    40
  • DevOps 与 CICD 详解

    DevOps 与 CICD 详解DevOpsDevOps是Development(开发)和Operations(运维)的组合,是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合,以期打破传统开发和运营之间的壁垒和鸿沟;DevOps是一种重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例,通过自动化软件交付和架构变更的流程…

    2022年6月6日
    57
  • BufferedWriter[通俗易懂]

    BufferedWriter[通俗易懂]  带有默认缓冲的字符输出流。使用:  构造:BufferedWriterbf=newBufferedWriter(“outFilePath”);  写入:write(“thing”);  换行:newLine();  刷新缓冲区,会将内容写进目标文件:flush();  关闭该流的操作:close();importjava.io.BufferedWrit…

    2022年5月1日
    47
  • Java之驼峰命名法

    Java之驼峰命名法命名法 驼峰命名法 package 域名反转 团队名 项目名 Class Object Interface HandsomeProv 接口名 Impl Method Function 动词或动词 名词 设置 获取某个值的方法 命名为 setV getV 返回长度的方法 命名为 length 判断布尔值的方法 命名为 isV 将对 接口名 项目名 团队名 域名反转

    2026年3月17日
    3
  • BigDecimal 乘法问题

    BigDecimal 乘法问题直接用我的代码和结果描述一下问题吧 代码 Createdbyzha aeon2016 5 17 publicclassD publicstatic String args BigDecimala newBigDecima BigDecima

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号