三、初识shell
2017-11-22 11:56
218 查看
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
是一个程序,职责是模拟终端设备,和虚拟终端的区别表面上在于它以 GUI 形式的窗口出现,内部则是程序结构和系统控制结构有所不同,但本质上差不多。
控制台tty
显示系统消息的终端就叫控制台,Linux 默认所有虚拟终端都是控制台,都能显示系统消息。
但有时专指CLI下的模拟终端设备的一个程序,和gnome-terminal,urxvt,mlterm,xterm等相同,只是CLI和GUI界面的区别。一般console有6个,tty1-6,CTRL+ALT+fn切换。
控制台切换
Linux 预设的情况下会提供六个Terminal 来让使用者登入, 切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮。
图形界面切换到字符界面终端: Ctrl+Alt+F2-6
切换到图像界面 Alt+F1或按ctrl+alt+F1
字符界面之间切换: [Alt] + [Fn]
已经打开的终端上开启新窗口、并列、切换、缩小、放大
放大:ctrl+shift+"+"
缩小 ctrl -
新建一个独立窗口 ctrl+shift+n
新建一个并列窗口 ctrl+shift+t
2、系统与硬件
2.1 Linux硬件资源管理
1. 查看系统pci设备
lspci 列出所有的pci设备,比如主板、声卡、显卡、网卡等。
通过lspci -v 可以查看更详细信息。
2. 查看cpu信息
more /proc/cpuinfo
3. 查看内存信息
more /proc/meminfo
free -m
free -h
4. 查看磁盘分区信息
fdisk -l
2.2 常见文件系统类型
[\u@\h \W]\$
[root@localhost ~]# -->root用户提示符
[test@localhostr ~]$ -->普通用户提示符
PS1常用的参数含义如下:
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
[root@localhost ~]# date
2012年 10月 24日 星期三 09:38:54 CST
[root@localhost ~]# whoami
root
[root@localhost ~]# useradd jack
[root@localhost ~]# passwd jack
Changing password for user jack.
New UNIX password:
4、shell 语法
命令 选项 参数
[root@localhost ~]# ls
[root@localhost ~]# ls -a
[root@localhost ~]# ls -a /home
命令:整条shell命令的主体
选项:会影响会微调命令的行为 //通常以 -, --
- 短格式,比如-a -l 和 -al等价
--长格式
参数:命令作用的对象,一般情况下参数是文件或目录。
5、bash基本特性
系统的shell:cat /etc/shells
当前系统默认的shell:echo $SHELL
1. 自动补全<tab>
//Tab只能补全命令和文件 RHEL6
# ls /etc/sysconfig/network-scripts/
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# service network restart
# service sshd restart
# date -s 12:30
2.
快捷键
^C -----终止前台运行的程序 //ping 172.16.8.100
^D -----退出 等价exit
^L -----清屏
^A -----光标移到命令行的最前端 //编辑命令
^E -----光标移到命令行的后端 //编辑命令
^U -----删除光标前所有字符 //编辑命令
^K----- 删除光标后所有字符 //编辑命令
^R -----搜索历史命令,利用关键词
Alt+. -----引用上一个命令的最后一个参数,等价于!$,服务器端使用
ESC, .-----引用上一个命令的最后一个参数,等价于!$
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# cat
ESC .
3. 历史命令
# history
a. 光标上下键
b. ^R //搜索历史命令(输入一段某条命令的关键字:必须是连续的)
c.
!220 //执行历史命令中第220条命令
!字符串 //搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
!$ //引用上一个命令的最后一个参数
示例1:
[root@instructor ~]# ls /root
/home
[root@instructor ~]# cd
!$
cd /home
示例2:
[root@instructor ~]# ls /root
/home
[root@instructor ~]# touch
!$/file1
touch /home/file1
示例3:
[root@instructor ~]# service nfs restart
[root@instructor ~]# ls
[root@instructor ~]# date
[root@instructor ~]# !se
4. 命令别名
# alias //查看系统当前的别名
ll='ls -l --color=tty'
# alias localhost='cat /etc/sysconfig/network-scripts/ifcfg-eth0' //建立别名(临时的,仅在当前Shell生效)
#
unalias localhost //取消localhost这个别名
[root@localhost ~]# type -a ls
ls
is aliased to `ls --color=auto'
ls
is /bin/ls
[root@localhost ~]# /bin/ls
[root@localhost ~]# ls //别名优先
[root@localhost ~]# \ls //跳过别名
[root@localhost ~]# cp -rf /etc /tmp
[root@localhost ~]# cp -rf /etc /tmp
[root@localhost ~]# \cp -rf /etc /tmp
永久别名:
[root@localhost ~]# gedit /etc/bashrc //添加如下行
alias localhost='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
6、Linux获得帮助
如何判断一个命令是内部命令还是外部命令呢?
type
#help可以列出系统所有内部命令
内部命令一般可以使用 help 命令,查看帮助
1. 命令 --help
# ls --help
用法:ls [选项]... [文件]...
ls 常见选项
-a -----all,查看目录下的所有文件,包括隐藏文件
-l
------长列表显示
-h -----human 以人性化方式显示出来
-d -----只列出目录名,不列出其他内容
-t ------按修改时间排序
-S -----按文件的Size排序
-r ------逆序排列reverse
-i ------显示文件的inode号(索引号)
# date --help
Usage: date [OPTION]... [+FORMAT]
or: date
[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]
# date
# date +%H
# date +%F
# date 0214080014
# date 0214080014.00
2、man 手册名 (针对命令帮助,针对配置文件帮助,针对函数帮助)
一般情况是不需要使用章节号,例如:
# man ls
# man useradd
# man setfacl (/EXAMPLES)
技巧1:按章节查询
/usr/bin/passwd修改用户口令命令
/etc/passwd包含用户信息的配置文件
# man -f passwd 列出所有章节中的passwd手册
# man 1 passwd passwd命令的帮助
# man 5 passwd 用户配置文件的帮助
技巧2:在所有章节中查询
# man -a passwd
3. 官方手册
http://docs.redhat.comEnterprise Linux (5/6/7)
http://www.mysql.comdocs
4. baidu, google
man搜索:
/ -a,从上往下,n向下继续搜索,N向上继续搜索
?-a,从下往上
[]可选项
<>必选
...可以出现多次
|多选一
{}分组,无特殊意义
MAN:
NAME:命令名称及功能简要说明
SYNOPSIS:用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS:说明每一个选项意义
FILES:此命令相关的配置文件
BUGS:
EXAMPLES:使用示例
SEE ALSO:另外参照
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
1、Linux控制台使用
虚拟终端
屏幕和键盘只是一个终端,可能不够用,又不想增加设备投入,就产生了虚拟终端。像gnome-terminal,urxvt,mlterm,xterm等等:是一个程序,职责是模拟终端设备,和虚拟终端的区别表面上在于它以 GUI 形式的窗口出现,内部则是程序结构和系统控制结构有所不同,但本质上差不多。
控制台tty
显示系统消息的终端就叫控制台,Linux 默认所有虚拟终端都是控制台,都能显示系统消息。
但有时专指CLI下的模拟终端设备的一个程序,和gnome-terminal,urxvt,mlterm,xterm等相同,只是CLI和GUI界面的区别。一般console有6个,tty1-6,CTRL+ALT+fn切换。
控制台切换
Linux 预设的情况下会提供六个Terminal 来让使用者登入, 切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮。
图形界面切换到字符界面终端: Ctrl+Alt+F2-6
切换到图像界面 Alt+F1或按ctrl+alt+F1
字符界面之间切换: [Alt] + [Fn]
已经打开的终端上开启新窗口、并列、切换、缩小、放大
放大:ctrl+shift+"+"
缩小 ctrl -
新建一个独立窗口 ctrl+shift+n
新建一个并列窗口 ctrl+shift+t
2、系统与硬件
2.1 Linux硬件资源管理
1. 查看系统pci设备
lspci 列出所有的pci设备,比如主板、声卡、显卡、网卡等。
通过lspci -v 可以查看更详细信息。
2. 查看cpu信息
more /proc/cpuinfo
3. 查看内存信息
more /proc/meminfo
free -m
free -h
4. 查看磁盘分区信息
fdisk -l
2.2 常见文件系统类型
3、bash shell提示符
root@localhost ~]# echo $PS1[\u@\h \W]\$
[root@localhost ~]# -->root用户提示符
[test@localhostr ~]$ -->普通用户提示符
PS1常用的参数含义如下:
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
[root@localhost ~]# date
2012年 10月 24日 星期三 09:38:54 CST
[root@localhost ~]# whoami
root
[root@localhost ~]# useradd jack
[root@localhost ~]# passwd jack
Changing password for user jack.
New UNIX password:
4、shell 语法
命令 选项 参数
[root@localhost ~]# ls
[root@localhost ~]# ls -a
[root@localhost ~]# ls -a /home
命令:整条shell命令的主体
选项:会影响会微调命令的行为 //通常以 -, --
- 短格式,比如-a -l 和 -al等价
--长格式
参数:命令作用的对象,一般情况下参数是文件或目录。
5、bash基本特性
系统的shell:cat /etc/shells
当前系统默认的shell:echo $SHELL
1. 自动补全<tab>
//Tab只能补全命令和文件 RHEL6
# ls /etc/sysconfig/network-scripts/
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# service network restart
# service sshd restart
# date -s 12:30
2.
快捷键
^C -----终止前台运行的程序 //ping 172.16.8.100
^D -----退出 等价exit
^L -----清屏
^A -----光标移到命令行的最前端 //编辑命令
^E -----光标移到命令行的后端 //编辑命令
^U -----删除光标前所有字符 //编辑命令
^K----- 删除光标后所有字符 //编辑命令
^R -----搜索历史命令,利用关键词
Alt+. -----引用上一个命令的最后一个参数,等价于!$,服务器端使用
ESC, .-----引用上一个命令的最后一个参数,等价于!$
# ls /etc/sysconfig/network-scripts/ifcfg-eth0
# cat
ESC .
3. 历史命令
# history
a. 光标上下键
b. ^R //搜索历史命令(输入一段某条命令的关键字:必须是连续的)
c.
!220 //执行历史命令中第220条命令
!字符串 //搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
!$ //引用上一个命令的最后一个参数
示例1:
[root@instructor ~]# ls /root
/home
[root@instructor ~]# cd
!$
cd /home
示例2:
[root@instructor ~]# ls /root
/home
[root@instructor ~]# touch
!$/file1
touch /home/file1
示例3:
[root@instructor ~]# service nfs restart
[root@instructor ~]# ls
[root@instructor ~]# date
[root@instructor ~]# !se
4. 命令别名
# alias //查看系统当前的别名
ll='ls -l --color=tty'
# alias localhost='cat /etc/sysconfig/network-scripts/ifcfg-eth0' //建立别名(临时的,仅在当前Shell生效)
#
unalias localhost //取消localhost这个别名
[root@localhost ~]# type -a ls
ls
is aliased to `ls --color=auto'
ls
is /bin/ls
[root@localhost ~]# /bin/ls
[root@localhost ~]# ls //别名优先
[root@localhost ~]# \ls //跳过别名
[root@localhost ~]# cp -rf /etc /tmp
[root@localhost ~]# cp -rf /etc /tmp
[root@localhost ~]# \cp -rf /etc /tmp
永久别名:
[root@localhost ~]# gedit /etc/bashrc //添加如下行
alias localhost='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
6、Linux获得帮助
如何判断一个命令是内部命令还是外部命令呢?
type
#help可以列出系统所有内部命令
内部命令一般可以使用 help 命令,查看帮助
1. 命令 --help
# ls --help
用法:ls [选项]... [文件]...
ls 常见选项
-a -----all,查看目录下的所有文件,包括隐藏文件
-l
------长列表显示
-h -----human 以人性化方式显示出来
-d -----只列出目录名,不列出其他内容
-t ------按修改时间排序
-S -----按文件的Size排序
-r ------逆序排列reverse
-i ------显示文件的inode号(索引号)
# date --help
Usage: date [OPTION]... [+FORMAT]
or: date
[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]
# date
# date +%H
# date +%F
# date 0214080014
# date 0214080014.00
2、man 手册名 (针对命令帮助,针对配置文件帮助,针对函数帮助)
一般情况是不需要使用章节号,例如:
# man ls
# man useradd
# man setfacl (/EXAMPLES)
技巧1:按章节查询
/usr/bin/passwd修改用户口令命令
/etc/passwd包含用户信息的配置文件
# man -f passwd 列出所有章节中的passwd手册
# man 1 passwd passwd命令的帮助
# man 5 passwd 用户配置文件的帮助
技巧2:在所有章节中查询
# man -a passwd
3. 官方手册
http://docs.redhat.comEnterprise Linux (5/6/7)
http://www.mysql.comdocs
4. baidu, google
man搜索:
/ -a,从上往下,n向下继续搜索,N向上继续搜索
?-a,从下往上
[]可选项
<>必选
...可以出现多次
|多选一
{}分组,无特殊意义
MAN:
NAME:命令名称及功能简要说明
SYNOPSIS:用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS:说明每一个选项意义
FILES:此命令相关的配置文件
BUGS:
EXAMPLES:使用示例
SEE ALSO:另外参照
相关文章推荐
- Shell学习(1)--初识Shell script
- shell编程一:初识shell
- Shell初识
- 初识Shell
- linux 基础学习之三:bash shell初识 上
- Linux系统配置及服务管理_第01章系统部署 (第二小节初识shell)
- Shell初识
- 初识shell脚本
- Linux命令shell脚本编程学习笔记-18章初识sed和gawk
- 初识linux的shell
- linux 基础学习之三:bash shell初识 下
- 实验报告2:初识Shell 及 常用命令的使用
- Linux重修第二课(初识SHELL)
- shell之awk初识
- linux命令行与shell脚本大全_第十八章_初识sed和gawk
- 初识Shell
- Shell初识
- 初识Shell Scripts编程--最最简单的shell例子
- Linux学习-高级shell脚本编程(二)初识sed和gawk
- 初识MongoDB(三)--MongoDB客户端Shell方式访问