shell中可能经常能看到:echo log > /dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 /dev/null :代表空设备文件 > :代表重定向到哪里,例如:echo...,2>&1,表示2的输出重定向等同于1 1 > /dev/null 2>&1 语句含义: 1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息...那么1和2是什么? 在shell中,每个进程都和三个系统文件 相关联:标准输入stdin,标准输出stdout、标准错误stderr,三个系统文件的文件描述符分别为0,1、2。...linux shell 中"2>&1"含义脚本是: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于&1 更准确的说应该是文件描述符 1,而1 一般代表的就是...用strace可以看到: 1. command > file 2>&1 这个命令中实现重定向的关键系统调用序列是: open(file) == 3 dup2(3,1) dup2(1,2) 2.
/test.sh > log.txt 2>&1 这里的2>&1是什么意思?该如何理解? 先说结论:上面的调用表明将....-> /dev/pts/7 2 -> /dev/pts/7 255 -> /home/hyb/workspaces/shell/test.sh 可以看到,test.sh打开了0,1,2三个文件描述符...那么现在就容易理解前面的疑问了,2>&1表明将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出),为什么1前面需要&?...我们同样通过前面的方法,可以看到test.sh进程的文件描述符情况如下: 0 -> /dev/pts/7 1 -> /home/hyb/workspaces/shell/log.txt 2 ->.../home/hyb/workspaces/shell/log.txt 255 -> /home/hyb/workspaces/shell/test.sh 我们可以很明显地看到,文件描述符1和2都指向了
变量说明: $$ Shell自己PID(ProcessID) $! Shell背景上次执行Process的PID $?...如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出全部參数。 $@ 全部參数列表。...如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出全部參数。 $# 加入到Shell的參数个数 $0 Shell本身的文件名称 $1~$n 加入到Shell的各參数值。...$1是第1參数、$2是第2參数…。 演示样例: #!...printf "The complete list is %s\n" "$2" 结果: [Aric@localhost ~]$ bash params.sh 123456 QQ The complete
首先了解下1和2在Linux中代表什么 在Linux系统中0 1 2是一个文件描述符 名称 代码 操作符 Java中表示 Linux 下文件描述符(Debian 为例) 标准输入(stdin) 0 1的写法其实是将标准错误输出重定向到名为"1"的文件里去了 写成2&>1也是不可以的 为什么2>&1要放在后面 考虑如下一条shell命令 nohup java -jar app.jar...2指向1,而1指向log,因此2也指向了log) 再来分析下 nohup java -jar app.jar 2>&1 >log & 本来1----->屏幕 (1指向屏幕) 执行2>&1后, 2---...-->1 (2指向1,而1指向屏幕,因此2也指向了屏幕) 执行>log后, 1----->log (1指向log,2还是指向屏幕) 所以这就不是我们想要的结果。...,但是第一中方式是最佳选择,一般使用第一种 参考: https://unix.stackexchange.com/questions/89386/what-is-symbol-and-in-unix-linux
//Shell最后运行的后台Process的PID printf "The complete list is %s\n" "$?"...如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 printf "The complete list is %s\n" "$@" //所有参数列表。...如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。...Shell本身的文件名 printf "The complete list is %s\n" "$1" //添加到Shell的各参数值。...$1是第1参数、$2是第2参数…。 printf "The complete list is %s\n" "$2" //添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出; 换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出....你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中; ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了...用strace可以看到: 1. command > file 2>&1 这个命令中实现重定向的关键系统调用序列是: open(file) == 3 dup2(3,1) dup2(1,2) 2. command...2>&1 >file 这个命令中实现重定向的关键系统调用序列是: dup2(1,2) open(file) == 3 dup2(3,1) 为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到...从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.
前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如果是刚开始接触Linux,这个东西的确不好理解,因为他没有直观的含义,不像一个命令,例如 cp是 copy 的简写,...文件描述符 Linux 中一切皆文件,每个文件都有一个文件描述符,值是个正整数。...回顾开头的那个命令: ls foo > /dev/null 2>&1 现在基本上已经可以理解了: stdout 重定向到 /dev/null stderr 重定向到 &1 /dev/null 是空设备的意思...&1 表示:文件描述符1 的值,也就是标准输出的值,那么 2>&1 就是 标准错误输出 与 标准输出 一样,也是重定向到空设备。 所以这个命令的意思是:正确信息和错误信息都不显示了。...> output 是 command 1> output 的简写 &文件描述符 是引用某个文件描述符的值 2>&1 是错误输出的位置与标准输出的位置相同
shell 1>&2 2>&1 &>filename重定向的含义和区别: 当初在shell中, 看到”>&1″和”>&2″始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出....在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是: 0 是一个文件描述符,表示标准输入(stdin) 1 是一个文件描述符,表示标准输出(stdout)...即可以把如上命令写成: ls a.txt b.txt >file.out 2>file.err 有了这些认识才能理解 “1>&2” 和 “2>&1”. 1>&2 正确返回值传递给2输出通道 &2表示2输出通道...如果此处错写成 1>2, 就表示把1输出重定向到文件2中. 2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道....下面是来自百度知道的内容,大家可以参考下: 问:Linux重定向中 >&2 怎么理解? 问题补充:echo "aaaaaaaaaaaaaaaa" >&2 怎么理解?
@TOC10_Linux基础-SHELL入门1---一....SHELL入门shell入门shell 是一个用C语言写的程序,它是用户使用linux的桥梁shell 脚本 实现自动化 重复性的操作编写脚本完成,减少人工失误---SHELL的变量shell的变量1..."$2"#(注:位置变量)root@sanchuang-linux shell_test# sh canshu.sh "hello" "world"#(注:传了2个参数)########这是hello...大于INT2返回为真 ,>[ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>=[ INT1 -lt INT2 ] INT1小于INT2返回为真 ,<[ INT1 -le INT2...---SHELL函数 定义知识点24 Shell函数 定义示例:add() { echo "两数相加为:$(( $num1 + $num2 ))"#(注:函数里面的操作内容)}----------
Part1前言 linux shell 常见的面试问题,基本是先让你随便说一些,测试一下你掌握的广度,这时候你至少要说上十个才行,但是!...Part2基础命令 注意,每个linux命令都包含很多参数,我这里不像网上教程一样全写出来,我只会把常用的或者面试大概率遇到的参数写出来,以免参数太多大家记混。...修改所属组 chgrp 参数 群组 文件 -c 回报更改部分 -f 不显示错误信息 -r 递归 chown 修改所属人 chown 参数 用户 文件 -f 忽略错误 cmp 比较文件 cmp 参数 文件1...文件2 diff 详细的比较文件 diff 参数 文件1 文件2 file 查看文件类型 file 参数 文件 -v 显示版本信息 -c 详细显示过程 find 查找命令 find 路径 参数 值...调用shell命令 好了,本节学习的内容够多了,大家放松放松,准备迎接下一节复习吧~
小姐姐的照片一张 在UNIX系统中,Shell拥有一个强大的特性:文件名替换。...命令行中只要是 *出现的地方,Shell都会进行替换: $ echo *: * chaptl chapt2 chapt3 chapt4 : chaptl chapt2 chapt3 chapt4...*并不仅限于放在文件名尾部,它还可以出现在开头或中间的位置: $ echo *t1 chaptl $ echo *t* chaptl chapt2...1.4.2 匹配单个字符 星号(*)能够匹配零个或多个字符,也就是说,x*能够匹配文件x,也能够匹配x1、x2、xabc等。问号(?)仅能够匹配单个字符。因此cat ?...* aa aax alice bb cc report1 report2 report3 $ 在上面的例子中,??
Part1前言 linux shell 常见的面试问题,基本是先让你随便说一些,测试一下你掌握的广度,这时候你至少要说上十个才行,但是!...Part2基础命令 注意,每个linux命令都包含很多参数,我这里不像网上教程一样全写出来,我只会把常用的或者面试大概率遇到的参数写出来,以免参数太多大家记混。...whereis 查找文件 where 参数 目录 文件 多用于查找原始代码 二进制 帮助等系统文件 如:whereis bash rhmask 加密文件 rhmask -d 原文件 加密后文件 scp 用于linux
Shell中的$0、$1、$2的含义 $0 就是你写的shell脚本本身的名字 $1 是你给你写的shell脚本传的第一个参数 $2 是你给你写的shell脚本传的第二个参数 例子 脚本 #!.../bin/bash echo $0 # 打印脚本文件名 case $1 in # start) echo $1 ;; # 第一个参数是start,打印第一个参数 stop) echo...$1 ;; # 第一个参数是start,打印第一个参数 *) echo "require start|stop" ;; # 第一个参数既不是start也不是stop esac echo $2
/mkconfig $0:Shell本身的文件名 $1:添加到Shell的第一个参数 $2:添加到Shell的第二个参数 $#:添加到Shell的总参数个数 实例 100ask24x0_config...100ask24x0 NULL s3c24x0 *实际运行mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0 *mkconfig:表示Shell...文件名($0) *100ask24x0:第一个参数($1) *... ...
1 和 2 在 Linux 中代表什么 在Linux系统中0 1 2是一个文件描述符 image.png 从上表看的出来,我们平时使用的 echo "hello" > t.log 其实也可以写成...echo "hello" 1> t.log 关于2>&1的含义 关于输入/输出重定向本文就不细说了,不懂的可以参考这里:Shell:管道与重定向 含义:将标准错误输出重定向到标准输出 符号>&是一个整体...如果是尝试过,你就知道2>1的写法其实是将标准错误输出重定向到名为"1"的文件里去了 写成2&>1也是不可以的 为什么2>&1要放在后面 考虑如下一条shell命令 nohup java -jar app.jar...我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的: 本来1----->屏幕 (1指向屏幕) 执行>log后, 1----->log (1指向log) 执行2>&1后, 2----->1 (...2指向1,而1指向log,因此2也指向了log) `` 再来分析下 nohup java -jar app.jar 2>&1 >log & 本来1----->屏幕 (1指向屏幕) 执行2>&1后, 2
一.变量总结 1. $$ Shell本身的PID(ProcessID) 2. $! Shell最后运行的后台Process的PID 3. $? ...如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 6. $@ 所有参数列表。...如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 .... $# 添加到Shell的参数个数 8. $0 Shell本身的文件名 9.$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 .../bin/bash echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@"
1、什么是shell? shell是linux内核的“壳”,是用户和内核的桥梁。它类似于windows下的命令提示符,将用户输入的命令解释给内核执行,并返回给用户结果。...3、shell中的特殊符号: http://blogold.chinaunix.net/u2/75431/showart_1110962.html 4、shell的程序结构: 以#!...下面是一个简单的shell脚本: 1 #/bin/bash 2 #This is a test shell script 3 #It's function is show how to use...the function of a shell script 4 /*定义了一个函数,其中$1,$2,$3是传递给该函数的参数*/ 5 function show(){ 6...echo "Today is $1.Your name is $2,and your ip address is $3." 7 } 8 /*定义了三个变量*/ 9 name
shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 分解这个组合:“>/dev/null 2>&1” 为五部分。...# 1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt # 2:/dev/null 代表空设备文件 # 3:2> 表示stderr标准错误 # 4:& 表示等同于的意思...,2>&1,表示2的输出重定向等同于1 # 5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null" # 因此,>/dev/null 2>&1...也可以写成“1> /dev/null 2> &1” 那么本文标题的语句执行过程为: # 1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息...# 2>&1 :接着,标准错误输出重定向 到标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
什么是shell? shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器) 。它接收用户输入的命令并把它送入内核去执行。起着用户与系统之间进行交互的作用。 ?...shell的功能: 命令行解释 命令的多种执行顺序 通配符 命令补全、别名机制、命令历史 I/O重定向 管道 命令替换(` ` 或$( ) ) shell编程语言 shell可以执行——内部命令、外部命令...shell命令分为: 内部(内置)命令 内部命令是shell本身包含的一些命令,这些内部命令的代码是整个shell代码的一个组成部分; 内部命令的执行是shell通过执行自己的代码中的相应部分来完成的...也可以通过ls命令查看这些shell的详细信息 #ls –al /bin/sh lrwxrwxrwx 1 root root 4 10月 8 2017 /bin/sh->bash Shell搜索的目录的名字都保存在一个...shell变量PATH中 ?
1 变量的分类 在Linux中,变量分为环境变量 和 局部变量。 环境变量能被子进程继承,而局部变量只能在当前进程中使用。...1.2 常见的局部变量(非环境变量) PS1:命令提示符 在命令输入光标前有一串用中括号括起来的信息,这就是命令提示符。命令提示符究竟需要显示哪些信息,这就是由PS1这个局部变量决定的。...由于它是局部变量,因此子进程中无法继承这个变量,子进程拥有自己的PS1。...当前shell的PID 可以通过如下命令查看当前shell的PID: echo $$ ?...5 变量类型:declare/typeset Linux中的变量一共有5种类型,分别是:字符、整型、只读、环境变量。
领取专属 10元无门槛券
手把手带您无忧上云