辨别||、&&、;、$*等符号在linux中的含义

与或

# 将&&前后的两个命令当做一个表达式,如果表达式出错,那么可以认为该表达式为false

➜ ~ ls / && date

bin boot dev etc home initrd.img initrd.img.old lastore lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old

Thu Mar 21 14:18:44 HKT 2019

# 第一个命令失败,后面的命令不再执行。短路,因为表达式整体的值已经可以通过第一个表达式获得。

➜ ~ ls /hello && date

ls: cannot access '/hello': No such file or directory

# 与&&恰好相反

➜ ~ ls /hello || date

ls: cannot access '/hello': No such file or directory

Thu Mar 21 14:19:03 HKT 2019

# 第一个执行成功,已经可以获得整个表达式的值,所以不执行第二个表达式。短路。

➜ ~ ls / || date

bin boot dev etc home initrd.img initrd.img.old lastore lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old

分号;

表示过程,不计算值,因此按顺序执行。

➜ ~ ls / ; date

bin boot dev etc home initrd.img initrd.img.old lastore lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old

Thu Mar 21 14:23:48 HKT 2019

➜ ~ ls /hello ; date

ls: cannot access '/hello': No such file or directory

Thu Mar 21 14:23:52 HKT 2019

$相关表达式

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}…

指令本身为0。后面为传入参数。个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住。

#!/bin/bash

echo $#

echo $*

echo $@

echo $0

echo $1

echo $2

echo "--------"

# 当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。

for a in $*

do

echo ${a}

done

for a in $@

do

echo ${a}

done

echo "--------"

# 但是当它们被双引号" "包含时,就会有区别了:

# "$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。

# "$@"仍然将每个参数都看作一份数据,彼此之间是独立的。

for a in "$*"

do

echo ${a} # 这 2 个参数会合并到一起形成一份数据,它们之间是无法分割的

done

for a in "$@"

do

echo ${a} # 这 2 个参数是相互独立的,它们是 2 份数据

done

输出如下:

➜ Documents ./shell.sh hello world

2

hello world

hello world

./shell.sh

hello

world

--------

hello

world

hello

world

--------

hello world

hello

world

$?

获取上一个命令的退出状态

➜ ~ pkill -f xxxxoooo

➜ ~ echo $?

1

$!和$$

# Shell最后运行的后台Process的PID

➜ ~ ping www.baidu.com > /dev/null &

[1] 14025

➜ ~ echo $!

14025

# Shell本身的PID(ProcessID)

➜ ~ ps -ef | grep -v grep | grep zsh

sasurai 9143 9122 0 09:48 pts/1 00:00:00 /usr/bin/zsh

sasurai 11946 5190 0 14:32 pts/4 00:00:00 /usr/bin/zsh

sasurai 19350 19085 0 10:52 pts/0 00:00:00 /usr/bin/zsh -i

➜ ~ echo $$

9143

输出/输入重导向

文件描述符

名称

常用缩写

默认值

0

标准输入

stdin

键盘

1

标准输出

stdout

屏幕

2

标准错误输出

stderr

屏幕

我们在简单地用时,相当于使用 0< 或 1>(下面会详细介绍)。

cmd > file

把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。

cmd >> file

把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。

cmd < file

使cmd命令从file读入

cmd << text

从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<

cmd <<< word

把word(而不是文件word)和後面的换行作为输入提供给cmd。

cmd <> file

以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。

cmd >| file

功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。

: > filename 把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与’touch’的效果相同).

cmd >&n 把输出送到文件描述符n

cmd m>&n 把输出 到文件符m的信息重定向到文件描述符n

cmd >&- 关闭标准输出

cmd 输入来自文件描述符n

cmd m m来自文件描述各个n

cmd 关闭标准输入

cmd 移动输入文件描述符n而非复制它。(需要解释)

cmd >&n- 移动输出文件描述符 n而非复制它。(需要解释)

注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。

for循环

for var in 集合

do

cmd1...

done

while循环

while [ 条件 ]

do

echo "hello"

done

if条件语句

if [ 条件 ]; then

cmd1

elif [ 条件 ]; then

cmd2

else

cmd3

fi

case语句

case 值 in

模式1)

command1

command2

command3

;;

模式2)

command1

command2

command3

;;

*)

command1

command2

command3

;;

esac

linux中特殊字符的含义,Linux中的特殊符号以及特殊语法相关推荐

  1. linux中mkdir命令含义,Linux中mkdir命令详解

    Linux中mkdir命令详解 linux mkdir用来创建目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1. 新建一个文件夹 one 2. 新建三个 ...

  2. linux中特殊字符反引号,linux中的特殊符号$ ‘’ 反引号 反斜杠

    写在前面:Shell中的特殊字符有 $ 美元符 \ 反斜杠 ` 反引号 "双引号 < ,>;,*,?,[,] 1.反引号``:命令替换 在输出一句话的时候,如果想中间加入命令输出 ...

  3. Linux五部分的含义,Linux 目录下部分重要目录的用途及含义及一些命令的作用

    Linux根目录下部分重要目录的用途及含义 /proc:这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息.也就是说,这个目录的内容不在硬盘上而是在内存里. /sys:系统 (syste ...

  4. linux wc -l的含义,linux wc 命令简介

    此wc命令不是让大家没有食欲的地方.而是linux下一个简单的小命令. NAME wc - word, line, character, and byte count SYNOPSIS wc [-cl ...

  5. linux的ping命令含义,Linux ping命令详解

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性 基于IMCP协议 常见命令参数 -q 不显示任何传送封包的信息,只显示最后的结果 -n 只输出数值 -R 记录路由过程 ...

  6. Linux文件的rwx含义,Linux文件权限rwx简单了解

    Ⅰ  了解Linux下的文件权限 如上图所示,ll命令详细展示当前目录下的文件或者子目录信息 红框标注的即为此文件或者目录的权限 [第一行文件10.c的权限以-开头,用来说明这是一个文件:第四行cod ...

  7. java中this的含义_Javascript中的this的含义

    一.几个问题 JavaScript中的this代表什么?和Java对象里面的this或Objective-C里的self是否有相同的含义? // demo 1 var a = 2; function ...

  8. python中关键字参数含义_python中接受任意关键字的参数

    1.*args args是非关键字参数,可以理解为形参,为了方便记忆我理解它是arguments的缩写. 2.*kwargs kwargs是键值对参数,为了方便记忆我理解它是key word argu ...

  9. Linux中fan的含义,Linux 常用命令总结

    大三这学期选了一门 Linux 操作系统,虽然之前学过一些,但是不够系统,以下简单整理了一下常用的一些命令. 一.初识 Linux 发行版本 Ubuntu debian deepin CentOS r ...

最新文章

  1. datatables分页下一页不能点击_干货,删不掉Word文末最后一页?学会5个方法,再也不愁啦...
  2. 多线程python实现方式_python多线程的两种实现方式(代码教程)
  3. pod install 在1.0.0.beta.1 cocoapods版本显示错误
  4. Python爬虫实战源码合集(持续更新)
  5. mysql awk_Awk实用手册(全)
  6. Atitit aop spring5.2 demo与流程总结 目录 1.1. 定义切面MyAllAspect 1 1.2. 定义普通类型userservice 1 1.3. 设置切面到某个方法上ex
  7. 高等代数——大学高等代数课程创新教材(丘维声)——3.2笔记+习题
  8. 3步解决网盘限速,还能远程下载!
  9. mame新版ROM下载网站推荐
  10. 【U+】通用财务,附加数据库后,软件看不到账套。
  11. 北京某数据中心全年用水量分析
  12. windows蓝屏解决方式SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,失败的操作wdf01000.sys
  13. LISA: A Learned Index Structure for Spatial Data
  14. 1.2 控制LED闪烁
  15. 并发-2-竞争条件例子、锁对象
  16. java pos打印机_Java实现POS打印机自定义无驱打印
  17. C语言单片机压力传感器报警器,单片机压力传感器的实时监测和报警程序
  18. 迹美 java_三款图像处理软件人像美容效果大比拼
  19. 什么是脏读?幻读?不可重复读?
  20. 计算机设备资产台帐,固定资产登记台帐.doc

热门文章

  1. QFile练习(20200213)
  2. Deep Compression阅读理解及Caffe源码修改
  3. Faster-RCNN学习
  4. LINUX中软件包的分类
  5. 那几个题(没懂的地方留言)
  6. 在 Windows XP 下查看所有卷标信息
  7. Java多线程相关的常用接口
  8. better-scroll 上拉加载,下拉刷新(解决移动端长页面卡顿)
  9. TypeScript入门知识五(面向对象特性二)
  10. NetSetMan IP地址切换工具