1. 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe.
2. bash (Bourne Again shell)是众多shell的一种, 但它是Linux 预设的shell. bash 是 GNU 计划中重要的工具软件之一,目前也是 Linux distributions 的标准 shell. 因此, 掌握bash这一个shell就能保证你在linux的世界里畅通无阻了, 当然, 想学习其它shell也会水到渠成, 毕竟它们都是大同小异的.
bash在linux下的路径为/bin/bash. 一般linux系统的/bin目录里都会有好几种shell, 除了预设的bash, 可能还会有sh, ksh, csh等等.
在bash下的操作, 尤其提几点:
1) . 表示当前目录, 如: ./a.out, 表示执行当前目录下的a.out程序
2) .. 表示上层目录, 如: cd .., 表示进入到当前目录的上一层
3) <Tab>可以用来对命令或者文件名进行补全.
比如当前目录下只有一个可执行程序main, 输出gdb再按<tab>, 则会自 动补全gdb main.
比如当前目录有aaa, bbb两个目录, 要进入aaa目录只需要cd a再按<tab>键, 就会自动补全成cd aaa了.
如果有多个选项, 可以按两下<tab>, 则会列出所有待选项.
4) 运行可执行程序的话, 需要"路径+程序名", 除非在PATH环境变量里的路径
(比如你echo $PATH,看到的结果类似于:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games), 执行这些路径里的程序, 不用加路径, 因为默认会去这里搜索.
比如/home/xxx/abc/a.out, 即使你就在当前目录下, 也不能直接a.out, 需要加上路径, 输入./a.out或者/home/xxx/abc/a.out, 都可以执行a.out程序.
其实可以把'.'这个当前目录加入到PATH中, 就可以不加路径而执行当前所在目录下的可执行文件, 但是习惯上一般不会这样做.
3. man手册
几乎所有的命令, 函数等, 都可以在shell中man xxx来获取它的详细信息.
4. 一些常用的bash命令
ps: 只列举一些常见命令的简单用法, 简单够用为原则, 追求更多更全的命令, 请看专业书籍自行学习.
我还发布了一篇, 用来专门记录常用bash命令的.可参考
pwd 显示当前所在目录
cd 改变目录,能处理绝对和相对路径
ls 列出当前目录下的文件, 常用参数, -a, -l
cp 拷贝文件
mv 剪切/重命名
rm 删除文件, 常用参数, -rf (递归删除一个文件/目录, 哪怕目录非空)
clear 清除屏幕
history 显示历史命令记录, 非常有用的一个命令. 历史命令存储在家目录的.bash_history隐藏文件里.
find 搜索目录中文件, 常用参数-name. 如find -name aaa, 从当前目录开始递归查找叫aaa的文件.
chmod 改变文件保护权限
chown 改变文件的属主和组
grep 在文件中搜索匹配的行并输出
ps 罗列运行进程, 默认罗列当前shell运行的进程, 常用参数-ef | grep xxx, 列举所有进程并筛选出其中包含xxx字段的进程
kill 中止一个进程
last 显示过去多少个用户或终端登录到本机器
ln 在文件间建立连接
man 显示具有一定格式的在线手册
passwd 设置用户的密码
reboot 重新启动系统
tar 创建和编辑Unix归档文件
touch 改变文件的时间参数
wc 统计一个文件中的字节数,单词数,行数
who 查看其他登录的用户
which 显示命令的全路径
ping 命令—确定网络上机器是否可达或到达速率
top 显示当前系统的CPU, 内存等资源占用情况