分类 第一个 eric 尝试 ive weight span 语法 行号
什么是 shell?
shell 是一个命令语言解释器(command-language interpreter). 拥有自己内建的 shell 命令集.此外,shell 也能被系统中其他有效的 Linux 实用程序和应用程序(utilities and application programs)所调用.
不论何时你键入一个命令,它都被 Linux shell 所解释.一些命令,比如打印当前工作目录命令(pwd), 是包含在 Linux bash 内部的(就象 DOS 的内部命令).其他命令,比如拷贝命令(cp)和移动命令(rm), 是存在于文件系统中某个目录下的单独的程序.而对用户来说,你不知道(或者可能不关心) 一个命令是建立在 shell 内部还是一个单独的程序.
Shell 的分类
bash:bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,也是很多 linux 版本默认的 shell.
csh:C shell 使用的是 "类 C" 语法,借鉴了 Bourne shell 的许多特点,它由以 William Joy 为代表的共计 47 位作者编成,共有 52 个内部命令.该 shell 其实是指向 / bin/tcsh 这样的一个 shell,也就是说,csh 其实就是 tcsh.
ksh:Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点.由 Eric Gisin 编写,共有 42 条内部命令.该 shell 最大的优点是几乎和商业发行版的 ksh 完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了.
zsh:Z shell 是 Korn shell 的一个增强版本,是 Linux 最大的 shell 之一,由 Paul Falstad 完成,共有 84 个内部命令.如果只是一般的用途,是没有必要安装这样的 shell
ash:ash shell 是由 Kenneth Almquist 编写的,Linux 中占用系统资源最少的一个小 shell,它只包含 24 个内部命令,因而使用起来很不方便.
tcsh:TC shell 是 C shell 的一个增强版本,与 C shell 完全兼容.
基本命令:
基本命令格式:
command [options] [arguments]
· command:命令
· options:-- 单词 或 - 单字
· arguments:参数,有时候选项也带参数.
在查看命令帮助时,会出现 [],<>,| 等符号,它们的含义如下:
·
无任何特殊符号 代表必选参数
· [] 表示是可选的;
· <> 表示可变选项,一般是多选一,而且必须是要选其一.
· x|y|z 多选一,如果加上 [],可不选.如果加上 {},必选其一.
· -abc 多选,如果加上 [],可不选.
echo
在终端上打印字符串到标准输出.
Usage: echo [-neE] [arg ...]
常用参数:
-e: 启用特殊转义字符 (\t, \b, \n 等)
-n: 行末不添加换行符
用法示例:
ls 的作用为显示指定目录的文件.
$
echo
hello world
# hello world
$
echo
-e
'\033[32;49;1mhello world\033[39;49;0m'
# 自己试试看这个结果是什么?
ls
Usage: ls [OPTION]... [FILE]...
常用参数:
-l: 重要参数,以长列表形式显示
-a: 列出所有文件,包含隐藏文件
-R: 递归目录列出文件
-d: 显示目录本身,而非目录下文件
用法示例
切换当前的工作目录
$ ls # 列出当前目录下所有非隐藏文件
$ ls . # 同上
$ ls -a # 列出当前目录下所有文件
$ ls /tmp/ # 列出指定目录下文件
$ ls /var/
log
/boot.log
# 列出指定文件
cd
Usage: cd [-L|[-P [-e]] [-@]] [dir]
用法示例:
~
$
cd
/path/
# 跳转到指定目录
$
cd
# 跳转到家目录
$
cd
# As above
$
cd
~USERNAME打开文件
# 跳转到指定用户的家目录
$
cd
-
# 跳转到上一次所在目录
cat
Usage: cat [OPTION]... [FILE]...
常用参数:
-n: 显示行号
用法示例:
倒序打开文件可以用命令 tac,即 cat 反向写
$ cat file1 file2 file3 #在当前终端下依次打开3哥文件$ cat - n file1 #打开单个文件,
并显示行号
pwd
显示当前工作目录
pwd: pwd [-LP]
用法示例:
$ pwd # 打印当前绝对路径
通配符
通配符的作用是用于模糊查询时通配文件名中某些不确定的字符.
Bash 中的通配符只有 3 个: *, ?, []
通配符
作用
?
匹配任意单个字符
*
匹配任意长度任意字符
**
匹配任意级别目录 (bash 4.0 以上版本支持,shopt -s globstar)
[]
匹配一个单字符范围, 如 [a-z],[0-9]
[] 的特殊用例:
[]:匹配范围
[^]:排除匹配范围
[:alnum:]:所有字母和数字
[:alpha:]:所有字母
[:digit:]:所有数字
[:lower:]:所有小写字母
[:upper:]:所有大写字母
[:blank:]:空白字符和 TAB 制表符
[:space:]:包括空白字符,TAB 制表符 (\t),换页 (\f)
[:cntrl:]:所有控制字符
[:graph:]:可打印并可看到的字符.空格是可打印的,但是不是可看到的.
[:print:]:所有可打印字符
[:punct:]:所有标点符号,非字母,数字,控制字符和 space 字符.
[:xdigit:]:十六进制数的字符.
Bash 组合键
Bash 有一些快捷组合键,灵活使用这些组合键可以让命令行操作事半功倍.
常用的快捷键:
移动光标
· alt+b: 前移一个单词
· alt+f: 后移一个单词
· ctrl+a: 移到行首(a 是首字母)
· ctrl+e: 移到行尾(end)
· ctrl+x: 行首到当前光标替换
编辑命令
· alt+.: 粘帖最后一次命令最后的参数(通常用于 mkdir long-long-dir 后, cd 配合着 alt+.)
· ESC, .: 同上
· alt+d: 删除当前光标到临近右边单词开始
· ctrl+w: 删除当前光标到临近左边单词结束
· ctrl+u: 删除光标左边所有
· ctrl+k: 删除光标右边所有
· ctrl+l: 清屏 (相当于 clear 命令)
· ctrl+shift+c: 复制(相当于鼠标左键拖拽)
· ctrl+shift+v: 粘贴(相当于鼠标中键)
其它
· shift+PageUp: 向上翻页
· shift+PageDown: 向下翻页
· ctrl+r: 进入历史查找命令记录, 输入关键字. 多次按返回下一个匹配项
· ctrl+c: 发送 Interrupt 信号,常用于取消未输入完整的命令,或中断当前正在执行的命令
· ctrl+d: 发送 EOF 信号,常用于登出交互式 shell,或结束 STDIN
· ctrl+z: 给当前正在运行的命令发送 SIGTSTP,将导致被后台挂起
别名
别名用于简化某些常用的命令及参数.
列出当前使用的别名:
alias
定义一个别名:
alias new_alias="command args"
Linux 的管道符(|)
管道符号,是 unix 功能强大的一个地方, 符号是一条竖线:"|",
用法: command 1 | command 2 他的功能是把第一个命令 command 1 执行的结果作为 command 2 的输入传给 command 2,
例如:
ls -l | more
该命令列出当前目录中的任何文档,并把输出送给 more 命令作为输入,more 命令分页显示文件列表.
又如 rpm -aq | less
软链接和硬链接
硬链接 (hard link):文件 A 是文件 B 的硬链接,则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的.如果删除了其中一个,对另外一个没有影响.每增加一个文件名,inode 节点上的链接数增加一,每删除一个对应的文件名,inode 节点上的链接数减一,直到为 0,inode 节点和对应的数据块被回收.注:文件和文件名是不同的东西,rm A 删除的只是 A 这个文件名,而 A 对应的数据块(文件)只有在 inode 节点链接数减少为 0 的时候才会被系统回收.
软链接 (soft link):A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块.但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项).A 和 B 之间是 "主从" 关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接.
硬链接:ln 源文件名 链接名
软链接:ln -s 源文件名 链接名
tr 命令
tr 命令可以对来自标准输入的字符进行替换,压缩和删除.它可以将一组字符变成另一组字符.
tr(选项)(参数)
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;
-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符.
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
Linux 的基础入门和基本命令
来源: http://www.bubuko.com/infodetail-2461814.html