08 August 2014

在linux系统中,有很多种shell可以选择,比如:/bin/sh,/bin/bash,/bin/tcsh,/bin/csh 。在/etc/shells文件中可以查看当前系统支持几种shell。不同的shell都有自己不同的特点和操作方式。

bash 介绍

命令历史


bash能够自动记录命令历史,用户所执行的命令都会保存在自己家目录下的.bash_history隐藏文件中。

可以通过history命令查看历史命令,所有的命令历史都有记录编号。命令的历史记录是由HISTSIZE 变量决定的。

在/etc/profile文件中定义了HISTSIZE的大小,可以手动修改。

可以通过上下键,翻阅历史命令,也可以执行“history -c”命令清空所有的历史命令。

输入!string命令调用历史记录,如:!vim 将调用最后一次以vim开头的命令。

通过ctrl+r打开搜索功能,输入关键字,即可搜索历史命令,按回车键完成操作。按esc键退出搜素。

管道和重定向


标准输入:键盘,鼠标,手写板等。
标准输出:显示器。

标准输入文件描述符为0 ,标准输出文件描述符为1,错误输出文件描述符为2.

重定向就是改变系统的标准输入和输出的方式。

管道


管道就是将上一个命令的输出作为下一个命令的输入,这样能把一串命令串连起来。

echo 'pass' | passwd --stdin tom    #设置tom的密码为pass。

find ./ -type f | grep 'aaa'    #在当前目录中查找aaa的文件。

重定向


重定向符:<,>,<<,>>。

< : 输入重定向,可以从文件中读取输入信息。
<< : 输入重定向,不覆盖原有的输入。
> : 输出重定向。覆盖其他追加内容。
>> : 输出重定向,输出内容追加而不是覆盖。

    ls > list.txt   #将ls输出保存到list文件中,屏幕无输出。
    
    hostname >> list.txt #将主机名追加到list文件中。
    
    mail -s test xxx@126.com < list.txt #将list文件的内容发送邮件给xxx。
    
    ls -l abc list.txt 2>error.txt  #将错误输出重定向到error文件中。
    
    ls -l abc list.txt > all 2>&1  #将标准输出和错误输出都重定向到all文件中。

重定向技巧


linux提供一个特殊设备 /dev/null ,任何东西往里写入都会永久消失。对于大量无意义的输出信息,可以重定向/dev/null

echo 'pass' | passwd --stdin tom > /dev/null

命令的使用顺序


在linux中,可以使用控制字符(;,&&,||,&)来控制命令的执行方式。

& :开启一个子shell进程,并在后台执行。
   
; :多个命令并列执行,命令之间没有逻辑上的关系。
   
&& :将多个命令组合,当且仅当前一个命令执行成功后才会执行控制符后面的命令。
   
|| : 当前一个命令执行失败时,才会执行后一个命令。

进程的前后台切换


当使用 & 控制符的时候,进程会转到后台执行。或者快捷键ctrl+z ,可以将进程放到后台,并暂停执行。

可以使用命令jobs 查看后台进程,(ps:能够查看进程id号)

可以通过命令 fg id号 ,将进程调回前台来执行。

可以通过命令 bg id号 ,将进程调到后台来执行。

花括号{} 的使用

    echo {a,b,c}

    echo user{1,3,4}

    echo {1..10} #输出1~10

    echo {0..10..2} #输出0~10的偶数

    mkdir /tmp/dir{1,3,4}

    ls -ld /tmp/dir{1,3,4}

    chmod 777 /tmp/dir{1,3,4}