在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}