linux shell指令大全整理

linux shell指令大全整理整理了linuxshell中经常用到的指令和语法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

linux shell指令

shell是一种脚本语言, 需要有编译器执行

  1. bash是linux下默认的shell
  2. sh是unix下默认的shell

在ubuntu中bash和sh都可用

执行

#!/bin/bash
#告诉系统用哪个解释器解释
  1. 通过bash执行, 不需要执行权限
bash test.sh
  1. 设置为可执行文件, 直接执行
chmod +x test.sh
./test.sh

变量类型

  1. 局部变量

在脚本中定义, 仅在当前shell中有效, 其他shell不能访问

  1. 环境变量

所有程序, 包括shell启动的程序, 都能访问环境变量, 在c中通过system()函数执行的结果可以通过环境变量传递回来

  1. shell变量

特殊变量, 比如传递给shell的参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YEeaQ6cj-1648294508220)(C:\Users\87698\Documents\myMarkdown\linux shell指令.assets\961754-20170330200924617-398300179.png)]

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

局部变量

# 定义变量, 不能有空格, 对于文本有没有双引号好像都可以
country=china
country="china"
# 数字没有双引号就是数字, 有就是文本
number=100

# 使用变量,可以用{}限定界限
echo "i from ${country} i $number old"

命令替换

转义符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LawTagIw-1648294508223)(C:\Users\87698\Documents\myMarkdown\linux shell指令.assets\961754-20170330200926508-1068258772.png)]

命令替换

用反引号“可以将一个命令的输出给另一个变量

directory=`pwd`
echo $directory

shell运算符

原生bash不支持简单的算术运算, 但是可以通过其他命令来实现, 比如awkexpr,expr是一款表达式计算工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NVnTDVFh-1648294508225)(C:\Users\87698\Documents\myMarkdown\linux shell指令.assets\961754-20170330200928242-1174589159-16482726592884.png)]

val=`expr 2 + 2`

通过命令替换将计算结果传给val

字符串

单引号的限制:

  1. 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  2. 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号的优点:

  1. 双引号里可以有变量
  2. 双引号里可以出现转义字符

shell的文件包含

Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本

. filename
#或
source filename

字符串运算符

用来计算两个字符串是否相等, 假定变量a为”abc”,变量b为”efg”, 要用[]括号

运算符 说明 举例
= 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= 检测两个字符串是否不相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n “$a” ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。

if-else

注意[]要和里面内容用空格分开, 运算符=两边也要用空格分开

if和[]也要分开, then要另起一行

用fi结尾

a="abc"
b="efg"

if [ $a = $b ]
then
	echo "equal"
else
	echo "no"
fi

if else-if else

-gt判断左边的数字是否大于右边的数字, 不是用>

-lt判断左边是不是小于右边的

==判断两数是否相等

echo要用””, 不然会把 1 的 值 写 入 到 1的值写入到 1a名字的文件里

a=100
if [ $1 -gt $a ]
then
        echo "$1 > $a"
elif [ $1 -lt $a ]
then
        echo "$1 < $a"
else
        echo "$1 = $a"
fi

for循环

穷举法, 或者用{x…y}表示从x到y, 或者用*表示所以可用的

#穷举法
for loop in 1 2 3 4
do
  echo "The value is: $loop"
done

#从0开始的10个,没有10
for i in { 
   0..10}
do
  mkdir dir$i
done

#通配符
for i in /etc/*.conf

#用$()效果和``一样,执行脚本读取返回值
for i in $(cat /root/users.txt)        --》从列表文件读取文件名
do
    useradd $i
    echo "123456" | passwd --stdin $i --》通过管道指定密码字串
done

while循环

这边用了两个括号后, 就可以<=号进行判断了, 不知道为什么, 而且还是连着的

而且用了let命令,let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量

#!/bin/bash

let a=5+4
let b=9-3 
echo $a $b
int=1
while(( $int<=5 ))
do
  echo $int
  let "int++"
done

无限循环

用了read命令, 从输入得到一个值到input变量中, 判断是不是y,是则用break跳出循环

while :
do
  echo "input a key:"
  read input
  if [ $input = 'y' ]
  then
    echo "you input y break"
    break
  else
    echo "you input other"
  fi
done

函数

参数和调用脚本一样, 通过空格穿, 返回值只能返回int, 没什么用

funWithParm(){ 
   
	echo "第一个参数为 $1 !"
	echo "第二个参数为 $2 !"
}
funWithParm 1 2

重定向

命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。

输出重定向是将输出定向到文件里

输入重定向是从文件读书数据作为输入给程序

>右边不需要空格

深入理解

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

如果希望stderr重定向到file, 可以这样写, 在>前加2

command 2>file

标准错误文件 stdout 和 stderr 合并后重定向到 file

command > file 2>&1
command &> file

ping历程

找到局域网中的主机

  • -c 1 —》只ping一次。
  • -i 0.2–》第一个包和第二个包之间间隔0.2s
  • -w 2 –》只等待2s

tr -s替换重复的字符

cut用来从标准输入或文本文件中剪切列或域

#!/bin/bash
for r in 192.168.1.{ 
   1..254}
do
    ping -c1 -w2 "${ip}" &>/dev/null
done
arp -n|grep ether|tr -s ' '|cut -d' ' -f1

通配符

有点类似正则表达式

符号 作用
* 匹配任何字符串,包括空字符串,*代表0个或多个
? 匹配任何一个字符,?代表一个字符
[abcd] 匹配abcd中的任何一个字符
[a-z] 表示范围a-z,中的任何一个字符

管道符

|:把前面命令的结果给后面的命令

arp -n|grep ether|tr -s ' '|cut -d' ' -f1

作业控制

命令 说明
ctrl+c 终止进程
ctrl+z 挂起一个进程
jobs 查看当前有多少在后台运行的命令
fg 将后台中的命令调值前台继续运行
bg 将一个在后台暂停的命令, 在后台中继续执行
命令+& 将命令后台执行
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180669.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 并发加锁是怎么实现的_JAVA并发编程

    并发加锁是怎么实现的_JAVA并发编程业务锁在处理并发问题时,很多情况下需要用到业务锁来达到按照某个维度同步执行业务块。例子:@Override@Transactional(rollbackFor=Exception.class,noRollbackFor=TerminateException.class)publicApplyDOsubmitApply(ApplyDOapplyDO){…

  • 轻松理解转置卷积(transposed convolution)或反卷积(deconvolution)「建议收藏」

    轻松理解转置卷积(transposed convolution)或反卷积(deconvolution)「建议收藏」原文地址:Up-samplingwithTransposedConvolution本文暂时没有插入图像,以后修订在CNN中,转置卷积是一种上采样(up-sampling)的方法.如果你对转置卷积感到困惑,那么就来读读这篇文章吧.本文的notebook代码在Github.上采样的需要在我们使用神经网络的过程中,我们经常需要上采样(up-sampling)来提高低…

  • 计算机网络交换机命令汇总,锐捷交换机常用配置命令汇总,收藏备用![通俗易懂]

    计算机网络交换机命令汇总,锐捷交换机常用配置命令汇总,收藏备用![通俗易懂]一、连接及远程登录用一台计算机作为控制台和网络设备相连接,通过计算机对网络设备进行配置。1、硬件连接把Console线一端连接在计算机的串口上,另一端连接在网络设备的Console口上。按照上面的线序制作一根双绞线,一端通过一个转换头连接在计算机的串口上,另一端连接在网络设备的Console口上。2、软件安装在计算机上安装一个终端仿真软件来登录网络设备。“超级终端”安装方法,通常是使用secure…

  • python shutil删除_python删除文件

    python shutil删除_python删除文件importos删除文件:os.remove()删除空目录:os.rmdir()递归删除空目录:os.removedirs()递归删除目录和文件(类似DOS命令DeleteTree):方法1:自力更生,艰苦创业#Deleteeverythingreachablefromthedirectorynamedin’top’,#assumingtherearenosymbol…

  • eclipse 导入父子工程_eclipse 导入maven 父子项目

    eclipse 导入父子工程_eclipse 导入maven 父子项目你先要确认svn上是否是maven项目,否则要自己重新建一个maven项目然后直接引入目录了。如果确认是maven项目,那么有个两个方案。案一:先用任何client软件将svn下载。然后在eclipse选择import,然后当作existmavenproject导入。案二:在project中有checkoutmavenfromscm。scm就是指版本控制软件。不过不同版本控制的sc…

  • 中国石化测试面试题_中石化面试一般问什么

    中国石化测试面试题_中石化面试一般问什么面试过程:首先,上午进行面试人员签到,大约100人左右。一共要2个人。下午1点半开始统一面试。人员较多,所以每个人只有3分钟时间,一共最少8位面试官。过程中,他们很少提问题,如果你的技术比较新颖,会问你一些。例如SSH或SSM框架就没意思了。面试官问的面试题:以下都是对我当时的提问及个人回答。1.你都擅长哪些RPC技术。答:webservice或者restFul或者ICE微服务。2.你用过微服务…

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

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