二.Linux基础入门和帮助
一.Linux基础
1.用户
root用户
一个特殊的管理帐户
也被称为超级用户
root已接近完整的系统控制
对系统损害几乎有无限的能力
除非必要,不要登录为 root
普通( 非特权 )用户
权限有限
造成损害的能力比较有限
2.终端(terminal)
在Linux中有很多终端类型
控制台终端: /dev/console
串行终端:/dev/ttyS#
虚拟终端:tty: teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#
图形终端:startx, xwindows
CentOS 6: Ctrl + Alt + F7
CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接
查看当前的终端设备:
tty
3.交互式接口
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
交互式接口类型:
GUI(Graphic User Interface)
X protocol, window manager, desktop
Desktop:
GNOME (C, 图形库gtk)
KDE (C++,图形库qt)
XFCE (轻量级桌面)
CLI(Command Line Interface)
shell程序
shell:
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并
把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的
命令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,然后将刚才解析出来的参数传给该程序并执行
shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能
由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替
显示当前使用的shell
echo $
显示当前系统使用的所有shell
cat /etc/shells
4.主机名
Linux中设置合理的主机名可以方便日常工作和管理
设置临时主机名:
hostname NAME
持久生效:
hostnamectl set-hostname NAME
注:主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
有些软件对主机名有特殊要求
5.命令提示符
登录Linux后,每次输入命令前显示的那串提示字符
默认:
[root@localhost ~]#
最后的符号为#表示管理员
$ 最后的符号为$表示普通用户
可以通过修改PS1变量实现个性的提示符格式,从而可以明显分别不同的系统环境
显示提示符格式
[root@centos8 ~]#echo $PS1
[\e[1;35m][\u@\h \W]$[\e[0m]
修改范例:
PS1="[\e[1;5;41;33m][\u@\h \W]\$[\e[0m]"
PS1="[\e[1;32m][\t [\e[1;33m]\u[\e[35m]@\h[\e[1;31m] \W[\e[1;32m]]
[\e[0m]\$"
提示符格式说明:
\e 控制符\033
\u 当前用户
\h 主机名简称
\H 主机名
\w 当前工作目录
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式
! 命令历史数
# 开机后命令历史数
持久保存修改的提示符格式(Centos):
echo 'PS1="[\e[1;32m][\t [\e[1;33m]\u[\e[35m]@\h
[\e[1;31m] \W[\e[1;32m]][\e[0m]\$"' > /etc/profile.d/env.sh
Ubuntu:
[root@ubuntu2004 ~]#tail -1 .bashrc
PS1='[\e[1;35m][\u@\h \W]$[\e[0m]'
6.执行命令
①过程
输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分
配资源将其运行起来
②分类
shell中可执行命令分类:
内部命令:由shell自带的,而且通过某命令形式提供
外部命令:在文件系统路径下有对应的可执行程序文件
区别指定的命令是内部或外部命令
type COMMAND
范例:
[root@centos8 ~]#type -a echo
echo is a shell builtin
echo is /usr/bin/echo
注:shell builtin表示内部命令,显示路径表示外部命令,一个命令可以同时为内部和外部命令
③管理
help :可以查看内部命令列表
enable 管理内部命令:
enable cmd 启用内部命令
enable –n cmd 禁用内部命令
enable –n 查看所有禁用的内部命令
查看外部命令路径:
which -a |--skip-alias
whereis
④Hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的
路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不
存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
hash 命令常见用法:
hash 显示hash缓存
hash -l 显示hash缓存,可作为输入使用
hash -p path name 将命令全路径path起别名为name
hash -t name 打印缓存中name的路径
hash -d name 清除name缓存
hash -r 清除缓存
⑤命令别名
对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行
显示当前shell进程所有可用的命令别名
alias
定义别名NAME,其相当于执行命令VALUE
alias NAME='VALUE'
撤消别名:unalias
unalias [-a] name [name ...]
unalias -a #取消所有别名
注意:在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件
source /path/to/config_file
. /path/to/config_file
如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令
⑥命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
COMMAND [COMMAND] [COMMAND] ....
选项:用于启用或关闭命令的某个或某些功能
短选项:UNIX 风格选项,-c 例如:-l, -h
长选项:GNU风格选项,--word 例如:--all, --human
BSD风格选项: 一个字母,例如:a,使用相对较少
注:
多个选项以及多参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用 ";" 符号分开
一个命令可以用\分成多行
7.常见命令
①查看cpu
②查看内存大小
③查看硬盘和分区情况
④查看查看内核版本和系统发型版本
⑤日期和时间
⑥关机和重启
⑦用户登录信息查看
⑧screen
⑨tmux
⑩echo
8.字符集和编码
① ASCII码
计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字
符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for Information
Interchange) 码
② Unicode
为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个
很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对
应的二进制代码,至于这个二进制代码如何存储则没有规定
9.命令行扩展和集合
① 命令行扩展:`` 和 $()
把一个命令的输出打印给另一个命令的参数,放在``中的一定是有输出信息的命令
$(COMMAND) 或 `COMMAND`
注: “ ” ,‘ ’, ``三者区别
单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,"最傻"
双引号:弱引用,不能识别命令,可以识别变量,"半傻不精"
反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内
容当成命令进行执行后,再交给调用反向单引号的命令继续,"最聪明"
②括号扩展:
{} 可以实现打印重复字符串的简化形式
{元素1,元素2,元素3}
关闭和启用{}的扩展功能
[root@centos8 ~]#echo $-
himBHs
[root@centos8 ~]#echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@centos8 ~]#set +B
[root@centos8 ~]#echo $-
himHs
[root@centos8 ~]#echo {1..10}
{1..10}
[root@centos8 ~]#set -B
[root@centos8 ~]#echo $-
himBHs
[root@centos8 ~]#echo {1..10}
1 2 3 4 5 6 7 8 9 10
10.Tab补全
tab 键可以实现命令及路径等补全,提高输入效率,避免出错
①命令补全:
内部命令:直接补全
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文
件,第一次找到的命令即为要执行的命令
命令的子命令补全,需要安装 bash-completion
注:用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表
②路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表
③双击Tab键
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录 (centos7 不支持)
=2Tab 相当于ls –A (centos7不支持)
11.命令行历史
12.调用命令行历史
13.bash快捷键
二.获得帮助
日常获得帮助逻辑:
COMMAND --help 或 COMMAND -h
使用 man 手册(manual): man COMMAND
信息页:info COMMAND
程序自身的帮助文档:README、INSTALL、ChangeLog
程序官方文档
相关网站,如:技术论坛
搜索引擎
1.whatis
whatis 使用数据库来显示命令的简短描述
此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用
执行下面命令生成数据库
#CentOS 7 版本以后
mandb
#CentOS 6 版本之前
makewhatis
2.查看命令的帮助
help COMMAND
man bash
3.--help和-h
显示用法总结和参数列表,大多数命令使用,但并非所有的命令工具含有此选项
格式说明:
[] 表示可选项
CAPS或 <> 表示变化的数据
... 表示一个列表
x |y| z 的意思是“ x 或 y 或 z ”
-abc的 意思是 -a -b –c
{ } 表示分组
4.man命令
man 提供命令帮助的文件,手册页存放在/usr/share/man,几乎每个命令都有man的“页面”
中文man需安装包
man-pages
man-pages-zh-CN
man 页面分组:
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux 内核API
man命令的配置文件:
#CentOS 6 之前版 man 的配置文件
/etc/man.config
#CentOS 7 之后版 man 的配置文件
/etc/man_db.conf
#ubuntu man 的配置文件
/etc/manpath.config
格式:
MANPATH /PATH/TO/SOMEWHERE #指明man文件搜索位置
也可以指定位置下搜索COMMAND命令的手册页并显示
man -M /PATH/TO/SOMEWHERE COMMAND
查看man手册页
man [OPTION...] [SECTION] PAGE...
man [章节] keyword
man 帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
... 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
man命令的操作方法:使用less命令实现
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K:向文件首部翻一行
q: 退出
#:跳转至第#行
1G: 回到文件首部
G:翻至文件尾部
/KEYWORD
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写
n:下一个
N:上一个
?KEYWORD
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写
n:跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
5.info
man常用于命令参考 ,GNU工具 info 适合通用文档参考
没有参数,列出所有的页面
info 页面的结构就像一个网站
每一页分为“节点”
链接节点之前 *
info 命令格式
info [ 命令 ]
导航info页
方向键,PgUp,PgDn 导航
Tab键 移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入 选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字 文本搜索
q 退出 info