2017-7-11 使用bash,标准输入输出和管道

来源:互联网 发布:计算机算法基础 余祥宣 编辑:程序博客网 时间:2024/06/04 20:09

1.命令行快捷方式 

1)文件globbing

*:匹配零或多个任意字符

?:匹配任何当个字符

[0-9]:代表一个区间中任意一个数字 [a-z][A-Z]

[abc]:匹配列表中任何字符

[^abc]:匹配任何除了列表中的字符

 

2Tab

在命令行按下Tab键 对于一个命令名称可以补齐命令  对于一个参数可以补齐文件名

3)历史记录

bash保存了你曾经输入过的命令的历史记录,他可以用来重复执行命令

命令:history  查看命令的历史记录

[root@localhost dir1]# history 

    1  ping 172.24.254.254

    2  shutdown -h now

    3  config

    4  ifconfig 

    5  ifconfig eth0

    6  ifconfig eth1

   

扩展:!+历史记录的行号   可以执行该命令

 !+命令起始几个字符  可以倒叙查看最近的一条符合的命令

 用上下键来滚动之前的命令

 ctrl+r 在历史记录中查找一条命令

 (reverse-i-search)`bash': vim ./.bash_history

   Esc.(先按再按)和Alt+.(同时按住)  可以调用之前命令的参数

4)波浪符

可以指向你的用户主目录

[root@localhost dir1]# cd ~

[root@localhost ~]# pwd

/root

也可以指向其他用户的主目录

[root@localhost ~]# cd ~pwk

[root@localhost pwk]# pwd

/home/pwk

2.命令行扩展:

Ctrl+a abc..xyz)移到行首

Ctrl+e end)移到行尾

Ctrl+uundo) 删除光标之前的命令

Ctrl+k kill)删除光标以后的命令

Ctrl+f forward)向右走

Ctrl+b backward)向左走
3.终端一些操作技巧

Ctrl+shift+t创建一个新的终端卡片夹

Ctrl+shift+c 复制选定的内容

Ctrl+shift+v 粘贴拷贝的内容

Alt+数字  切换终端窗口

4.标准输入输出和管道

1)标准输入输出

标准输入(STDIN)缺省为键盘

标准输出(STDOUT)默认为终端窗口

标准错误(STDERR)默认为终端窗口

2)重定向

格式:命令  操作  文件名

>(1>) 重定向标准输出到文件

[root@localhost pwk]# ls -l /etc/passwd >/tmp/test.txt

[root@localhost pwk]# cat /tmp/test.txt 

-rw-r--r--. 1 root root 1861 Jul 11 11:09 /etc/passwd

[root@localhost pwk]# 

2> 重定向标准错误到文件

[root@localhost pwk]# ls -l /etc/aslkdjahf 2>/tmp/test1.txt

[root@localhost pwk]# cat /tmp/test1.txt 

ls: cannot access /etc/aslkdjahf: No such file or directory

 

&>重定向所有输出到文件

[root@localhost pwk]# ls -l /etc/passwd /etc/aslkdjahf &>/tmp/test3.txt

[root@localhost pwk]# cat /tmp/test3.txt 

ls: cannot access /etc/aslkdjahf: No such file or directory

-rw-r--r--. 1 root root 1861 Jul 11 11:09 /etc/passwd

 

>会覆盖内容 

[root@localhost pwk]# ls -l /etc/passwd >/tmp/test3.txt

[root@localhost pwk]# cat /tmp/test3.txt 

-rw-r--r--. 1 root root 1861 Jul 11 11:09 /etc/passwd

 >>用在追加  错误输出追加2>>

[root@localhost pwk]# ls -l /etc/group >>/tmp/test3.txt

[root@localhost pwk]# cat /tmp/test3.txt 

-rw-r--r--. 1 root root 1861 Jul 11 11:09 /etc/passwd

-rw-r--r--. 1 root root 901 Jul 11 11:09 /etc/group

 

执行顺序:

 ②ls -l /etc/passwd;>;/tmp/test3.txt

 

让另一个终端显示结果

一个终端:

[root@localhost ~]# ls -l /etc/passwd >/dev/pts/1

另一个终端:

[student@localhost ~]$ tty

/dev/pts/1

[student@localhost ~]$ -rw-r--r--. 1 root root 1861 Jul 11 11:09 /etc/passwd

 

3)管道符 |

command1|command2|command3....

发送command1的标准输出给command2的标准输入  标准错误不会通过管道传递

查看命令:more 回车走一行 空格走一页  但是不能回退

   more /etc/passwd   

  less 可用/查找 跟vim编辑差不多的命令很方便

筛选命令 grep 

[student@localhost ~]$ less /etc/passwd |grep pwk

pwk:x:500:500::/home/pwk:/bin/bash

过滤分词是要给他们加单引号 grep’inet add’

5.命令行扩展 命令行和括号集

命令扩展 &()或‘’

  编写sh文件:

  [root@localhost ~]# vim welcome.sh 

  1 echo "Today is :$(date +%Y+%m+%d)"

  2 echo "Welcome to $(hostname)"

  3 echo "You are in the $(pwd)"

  4 echo "Nice to meet you -->$(whoami)"

  [root@localhost ~]# chmod a+x welcome.sh 

  [root@localhost ~]# ./welcome.sh

  Today is :2017+07+11

  Welcome to localhost.localdomain

  You are in the /root

  Nice to meet you -->root

 括号的使用{} 

[root@localhost ~]# touch {a,b}_{1,2}.txt

[root@localhost ~]# ls [ab]*.txt

a_1.txt  a_2.txt  b_1.txt  b_2.txt          

 

复制可省略前面相同的名称

[root@localhost etc]# cp /etc/passwd{,:0000} 

[root@localhost etc]# ls passwd:0000

passwd:0000

原创粉丝点击