本章节内容主要介绍linux入门,其中包括用户登录、终端、shell介绍、执行命令、简单命令、以及bash的tab键补齐命令行历史和快捷键的使用。初学者对有些概念比较生疏,建议初学者查看官方文档和查看帮助,尽量多敲多练习,这样能够较快的掌握知识点。
一、用户登录
root管理员用户
一个特殊的管理账户,也被称之为超级用户,其UID为0,已接近完整的系统控制,对系统损害机会有无限的能力,在此建议各位尽量养成用普通用户登录系统,必要时授权给普通用户。
普通用户
普通用户的权限有限,因此普通用户对系统造成损害的能力有限,其UID在红帽企业版7和centos7上是以UID1000开始的(在centos5上是500开始)。
二、终端terminal
服务器非必要的组件,用户与主机交互,必然用到的设备。
终端通常分为:
物理终端:直接接入本机的显示器和键盘设备 ,其设备文件路径/dev/console,通俗来说就是我拿了一套显示器和键盘去机房直接连接服务器
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,期设备文件路径 /dev/tty# Ctrl+Alt+F# [1-6]
图形终端:属于虚拟终端,附加 在物理终端之上的以软件方式虚拟实现的终端。比如安装了KED或者GNOME图形桌面
模拟终端:图形界面打开的命令行或telnet等远程打开的界面,设备文件:/dev/pts/# ,通过网络在远程的操作间利用ssh或者telnet进行远程管理,不需要管理员跑去机房管理服务器,我们生产环境中通常是这么做的,除非机器故障远程不了的,才会去机房处理
三、交互式接口
GUI:Graphic User Interface
Desktop:
GNOME(C 图形库gtk)
KDE ( C++ 图形库qt)
XFCE (轻量级桌面)
CLI :Command Line Interface
四、shell
shell是linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。也被称之为linux的命令解释器(command interpreter) ,它也是一种高级程序设计语言。
shell程序的类型有:sh,csh,tcsh,ksh,bash
bash shell
GNU Bourne—Again Shell(bash)是GNU计划中 重要的工具软件之一,目前也是linux 标准的shell,与sh兼容。
命令提示符:prompt
[root@localhost ~]#CentOS默认使用bash shell
echo $PS1
prompt
管理员: #
普通用户:$
五、执行命令
内部命令:由shell自带,通过某命令形式提供,enable命令可以启动或禁用内部命令
外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件
区别当前使用的命令是内部命令还是外部命令:
用法:which command
如果是内部命令,执行which command之后就会显示一个路径,说明这个命令是存放在磁盘上的。
区别当前会用的命令是内部命令或外部命令
type command
如果是内部命令执行type command 之后他就是提示command is a shell builtin意思是这个命令是内部命令
hash命令
搜存到的外部命令路径结果缓存至kv(key-value)存储中hash,
hash -r 清楚缓存
hash -d command 删除某条命令的记录
禁用内部命令
enable -n command 禁用
enable command 启动
当执行enable -n cd 之后,这个命令将被禁用,但执行cd命令会根据环境变量的路径在磁盘上寻找cd命令。
命令格式
command [OPTIONS.. ] [ARGUMENTS]
短选项:-c,例如:-l,-h
长选项:--word,例如:--all,--human
参数:命令的作用对象,比如文件名,用户名
注意:
1、多选项,以及多参数和命令之间使用空白字符分隔
2、取消和结束命令执行:Ctrl+C Ctrl+d
3、多个命令可以用;符号分开
4、一个命令可以用\分成多行
六、简单命令
date 显示时间和日期
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
%F 显示年月日
%D 直接显示日期mm/dd/yy
%H 显示小时
%M 显示分钟
%S 显示秒
%s 从1970年1月1日到现在所经过的秒数
%m 显示月份
date -d "+2 day" 显示后天的日期
这个date命令在使用选项时跟其他命令不同,带选项是+%F,而不是-F
linux有两种时钟:
系统时钟:由linux内核通过cpu的工作频率进行计时的;
硬件时间:主板BIOS提供的时钟,由主板电池供电维持运行。
hwclock clock 显示硬件时钟
-s 以硬件时钟为准,校准系统时间
-w 以系统时间为准,校准硬件时间
cal 显示日历,默认显示当前月的日历
cal 年份 显示年份的日历
cal 2016
cal 月份 年份
cal 10 2016
cal 1752 特殊时间
nano 文本编辑
ctrl+o 保存
ctrl+x 退出
screen
打开新的screen
screen
退出并关闭screen
ext
剥离当前screen
ctrl+a,d
显示所有已经打开的screen;
screen -ls
恢复某screen
screen -r [session]
screen -S [session]
screen - x [session]
这个命令非常的实用,当生产环境中,A遇到问题不会处理,他准备求助他的同事B,他又不好意思让他跑过来一下,这时候screen命令就派上用场了,A只需要新建一个会话(screen -S help),而B只需要接入到这个会话当中(screen -x help),那么他们两个人屏幕上显示的内容完全一模一样,B的任何一个动作,A都会看到,这样既解决了问题,又学到了东西。
echo命令
-n 不在字符的最后自动换行
-e 在字符串出现以下字符
\a发出警告声
\b退格键
\c换行切光标移至行首
\n换行且光标移至行首
\r光标移至行首,但不换行
\t插入tab:
\\插入\字符
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
echo -e "\033[41;37m abcd \033[0m"
其中41的位置代表底色, 37的位置是代表字的颜色
其中31m-37m代表的是黑红绿黄蓝紫天白
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
七、bash的简单用法
$()或` `
把一个命令的输出打印给另一个命令的参数
echo "today is `date +%F`
{ }括号扩展
echo file{1,2,3}
file1 file2 file3
命令补全
内部命令:实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。
外部命令:bash根据PATH环境变量定义的路径自左而右在每个路径搜寻给定命令名的文件
路径补全
把用户给出的字符当做路径开头,并在其指定的上级目录下搜索以指定的字符串开头的文件名
如果唯一则直接补全,否则再次tab给出列表
命令行历史
保存你输入的命令历史,可以用它来重复执行的命令,登录shell时,会读取命令历史文件记录下的命令,保存在~/.bash_history文件中。登录shell后新执行的命令只会记录在缓存中;这些命令会在用户退出时追加至命令历史文件中
重 复前一个命令使用上方向键,并回车执行,有如下四种方法
按!!并回车
!-1
ctrl+p
!num 按照history命令输出中的序号重复对应命令
!?字符串:重复前一个包含abc的命令
!-n:重复n个命令之前的那个命令
ctrl -r来在命令历史中搜索命令
要重现调用前一个命令中最后一个参数
!$
esc ,.(点击esc键后松开然后点击.键)
alt+.(按alt键的同时点击"."键)
调用历史参数
cmd !^ 利用上一个命令的第一个参数做cmd的参数
cmd !$ 利用上一个命令的最后一个参数做cmd的参数
cmd !* 利用上一个命令的全部参数做cmd的参数
cmd !:n 利用上一个命令的第n个参数做cmd的参数
\command 不使用命令别名,使用命令本身的意义
’'使用单引号让命令不使用命令别名
调用历史参数
!string:^ 从命令历史中搜索以string开头的命令,并获取他的第一个参数
!string:$ 从命令历史中搜索以string开头的命令,并获取他的最后一个参数
!string:n 从命令历史中搜索以string开头的命令,并获取他的第n个参数
!string:* 从命令历史中搜索以string开头的命令,并获取他的所有参数
命令的优先级:
别名>内部命令>hash>外部命令
history
-c:清空命令历史
-d:删除历史中指定的命令
-a:追加本次会话新执行的命令历史列表至历史文件
-n:读历史文件未读过的行到历史列表
命令历史相关环境变量
HISTSIZE:命令历史记录的条数
HISTFILE:指令历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT=“%F %T"显示时间
HISTIGNORE="str1:str2 .. “ 忽略string1 string2历史
HISTCONTROL
ignoredups:忽略重复的命令,连续且相同方为重复
ignorespace:忽略所有以空白开头的命令
ingoreboth: ingoredups,ignorespace
erasedups:删除重复的命令
bash的快捷键
ctrl+l 清屏,相当于clear
ctrl+c 取消命令的执行
ctrl-a 会移动到命令行的最前面
ctrl-e 会移动到命令行的最后面
ctrl-u 会删除到行首
ctrl-k 会删除到行尾
Esc -b 左移一个单词