2-Linux基础
2020-02-19 本文已影响0人
Liang_JC
本章内容
◆ 用户登录
◆ 终端
◆ Shell介绍
◆ 执行命令
◆ 简单命令
◆ Tab键补全
◆ 命令行历史
◆ bash快捷键
◆ whatis
◆ command --help
◆ man and info
◆ 本地帮助文档/usr/share/doc/
◆ 官网在线文档
◆ 其它网站和搜索
演示
uname -r #显示核心版本
whoami #显示当前用户名
who #显示有谁在登陆
who -r #查看运行等级
lsb_release -a #查看当前系统版本
free #查看内存使用情况
init 3 #切换模式(3单用户,5图形界面)
runlevel #运行等级
ifconfig #查看IP地址
tty #查看当前终端
id #查看UID号(centos6:500,centos7:1000)
-u #账号名
终端
设备终端:键盘、鼠标、显示器
物理终端:/dev/console
控制台console
串行终端:/dev/ttyS#
ttyS
虚拟终端:tty:teletypewriters, /dev/tty#
tty可有N个,ctrl+alt+F#
图形终端:/dev/tty7 startx,xwindows
centos6:ctrl+alt+F7
centos7:在哪个终端启动,即位于哪个虚拟终端
伪终端:pty:pseudo-tty, /dev/pts/#
pty,ssh远程连接
查看当前的终端设备:tty
交互式接口
交互式:启动终端后,在终端设备附加一个交互式应用程序
GUI:Graphic User Interface
X protocol,window manager,desktop
Desktop:
GNOME(C,图形库gtk)
KDE(C++,图形库qt)
XFCE(轻量级桌面)
CLI:Command Line Interface
shell 程序
echo $SHELL #查看当前shell类型
cat /etc/shells #查看支持的shell类型
hostname #查看主机名
主机名示例:
bj-yz-k8s-node1-100-10.magedu.com
北京-yz-服务-节点-IP第三位-IP第四位.公司域名
命令提示符:
命令提示符:prompt
~:家目录
#:管理员
$:普通用户
显示提示符格式
echo $PS1
修改提示符格式
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\[\e[0m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1:31m\] \W\[\e[1;32m\]]\[\e\[0m\]\\$"
\e 控制符\033 \u 当前用户
\h 主机名简称 \H 主机名
\w 当前工作目录 \W 当前工作目录基名
\t 24小时时间格式 \T 12小时时间格式
\! 命令历史数 \# 开机后命令历史数
vim /etc/profile.d/env.sh #centos全局生效
PS1="\[\e[34m\][\u@\h \W]\\$\[\e[0m\]" #centos6
PS1="\[\e[36m\][\u@\h \W]\\$\[\e[0m\]" #centos7
pstree #查看运行的shell
shell内部命令
cd
shell外部命令
/bin /sbin 下可执行的二进制文件
type command #查看命令属于内部还是外部
enable command #启用内部命令
-n command #禁用内部命令
whereis #查找外部命令所在目录
echo $PATH #显示所有外部命令目录
hash #查看执行过的外部命令(缓存表)
-d #删除执行过的外部命令
-r #删除所有执行过的外部命令
-l #显示完整路径
命令别名
alias #别名
unalias #删除别名
命令执行过程
1 别名
2 内部
3 外部命令hash表
4 外部命令PATH
bash重新读取配置文件
source .bashrc
. .bashrc
如果别名与原命同名,要执行原命令,可使用
\aliasname
"aliasname"
'aliasname'
command aliasname
/path/command
命令格式
COMMAND [OPTIONS...][ARGUMENTS...]
选项:用于启动或关闭命令的某个或某些功能
短选项:-c -l -h
长选项:--word --all
取消和结束命令执行 ctrl+c ctrl+d
多个命令可以用";"分开
一个命令可以用\分成多行
日期和时间
linux的两种时间
系统时钟:有linux内核用过CPU的工作频率进行的
硬件时钟:主板
相关命令
date #显示和设置系统时间
date +%s
date -d @1509536033
hwclock,clock:显示硬件时钟
-s,--hctosys 以硬件时钟为准,校正系统时钟
-w,--systohc 以系统时钟为准,校正硬件时钟
ntpdate ip #与主机时间校正
时区:/etc/localtime
显示日历:cal -y
date +%F #格式:2019-12-05
date +%T #时间:16:01:02
%a #星期缩写
%A #星期全写
%b #月份缩写
%B #月份全写
%d "+|- day" #指定前后几天
%s #时间戳
%U #一年中的第几周(sunday为第一周)
%w #一年中的第几天
%W #一年中的第几周(monday为第一周)
date -s "2019-12-05 17:05:10" #设置系统时间
简单命令
关机:halt, poweroff
重启:reboot
-f: 强制,不调用shutdown
-p: 切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间
用户登录信息查看命令:
whoami: 显示当前登录有效用户
who: 系统当前所有的登录会话
w: 系统当前所有的登录会话及所做的操作
nano 文本编辑
screen命令:
创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
echo命令
功能:显示字符
语法:echo [-neE][字符串]
说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号
选项:
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能
显示变量
echo "$VAR_NAME” 变量会替换,弱引用
echo '$VAR_NAME’ 变量不会替换,强引用
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成
一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e '\033[43;31;5mmagedu\e[0m'
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
命令行扩展、被括起来的集合
命令行扩展:$( ) 或 ``
把一个命令的输出打印给另一个命令的参数
echo "This system's name is $(hostname) "
This system's name is server1.example.com
echo "i am `whoami` "
i am root
括号扩展:{ }
打印重复字符串的简化形式
echo file{1,3,5} 结果为:file1 file3 file5
rm -f file{1,3,5}
echo {1..10}
echo {a..z}
echo {000..20..2}
命令行历史
保存你输入的命令历史。可以用它来重复执行命令
登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
命令行历史
重复前一个命令,有4种方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-1 并回车执行
按 Ctrl+p 并回车执行
!:0 执行前一条命令(去除参数)
Ctrl + n 显示当前历史中的下一条命令,但不执行
Ctrl + j 执行当前命令
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p 打印输出 !*(上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string
^string1^string2 将上一条命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’ :
Ctrl+g:从历史搜索模式退出
要重新调用前一个命令中最后一个参数
!$ 表示
Esc, .(点击Esc键后松开,然后点击 . 键)
Alt+ .(按住Alt键的同时点击 . 键)
调用历史参数
command !^ 利用上一个命令的第一个参数做cmd的参数
command !$ 利用上一个命令的最后一个参数做cmd的参数
command !* 利用上一个命令的全部参数做cmd的参数
command !:n 利用上一个命令的第n个参数做cmd的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数
命令history
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT=“%F %T “ 显示时间
HISTIGNORE=“str1:str2*:… “忽略str1命令,str2开头的历史
控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令
export 变量名="值“
存放在 /etc/profile 或 ~/.bash_profile
bash的快捷键
Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + xx 光标在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + N 提示输入指定字符后,重复显示该字符N次
注意:Alt组合快捷键经常和其它软件冲突
简单命令
关机:halt,poweroff
重启:reboot
-f:强制,不调用shutdown
-p:切断电源
关机或者重启:shutdown
shutdown [OPTION]...[TIME][MESSAGE]
-r:reboot
-h:halt
-c:cancel
TIME:无指定,默认相当于+1(centos7)
now:立即,相当于+0
+m:相对时间表示法,几分钟之后;例如+3
hh:mm:绝对时间表示,指明具体时间
w:显示当前所有的登录会话及所做的操作
screen
ls #查看
-r #恢复终端
-x #加入会话
ctrl+a+d #临时剥离
echo #显示字符
语法:echo [-neE][字符串]
选项
-n 不自动换行
-e 启动\字符的解释功能
-E 默认,不支持\解释功能
echo -e "\a" #发声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至首行
\r 回车,即光标移至首行,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e '\033[43;31;5mmagedu\e[0m'
\xHH 插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
命令行扩展、被或起来的集合
命令行扩展:$()或``
把一个命令的输出打印给另一个命令的参数
echo "This system's name is $(hostname)"
echo "I am `whoami`"
括号扩展:{}
打印重复字符串的简化形式
echo file{1,3,5}
结果:file1 file3 file5
rm -f file{1,3,5}
删除file1 file3 file5
echo {1..10}
输出1到10
echo {a..z}
输出a到z 26个字母
echo {000..20..2}
000 002 004 ... 020
!command #执行上一条命令
!ls #执行最后一条以ls开头的命令
!?ls -l #执行上一条包换ls -l的命令
^ls^ll #将上一条命令中第一个ls替换为ll
history [-c][-d offset][n]
history -anrw [filename]
history -ps arg [arg...]
-c 清空历史
-d offset 删除历史中的指定第offset个命令
n 显示最近的n条历史
-a 追加本次会话新执行的命令历史列表至历史文件
-r 读历史文件附加到历史列表
-w 保存历史列表到指定的历史文件
-n 读历史文件中未度过的行到历史列表
-p 展开历史参数成多行,但不存在历史列表中
-s 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
HISTSIZE 命令历史记录的条数
HISTFILE 指定历史文件,默认为~/.bash_history
HISTFILESIZE 命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T " 显示时间
HISTIGNORE="str1:str2" 忽略str1命令,str2开头的历史
控制命令历史的记录方式
环境变量:HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为"重复"
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups,ignorespace的组合
erasedups 删除重复命令
export 变量名="值"
存放在/etc/profile或者~/.bash_profile
echo $HISTSIZE #显示历史条数
nano /etc/profile #修改历史条数
帮助
whatis #显示简单帮助描述
数据库 #刚安装完时没有生成,过一段时间会自动生成
手动生成数据库
makewhatis #centos6
mandb #centos7
命令帮助
内部命令:help COMMAND 或 man bash
外部命令:
(1) COMMAND --help 或 COMMAND -h
(2) 使用手册(manual)
man COMMAND
(3) 信息页
info COMMAND
(4) 程序自身的帮助文档
README
INSTALL
ChangeLog
(5) 程序官方文档
官方站点:Documentation
(6) 发行版的官方文档
(7) Google
hexdump #以16进制查看文件
-C #显示地址位
练习
1、显示当前时间,格式:2016-06-18 10:20:30
date +"%F %T"
2、显示前天是星期几**
date -d "-2 day" +%A
3、设置当前日期为2019-08-07 06:05:10
data -s "2019-08-07 06:05:10 "
帮助
内部命令
help command #查看命令帮助
man command #查看命令详细帮助文档
外部命令
command --help
man帮助
章节
man 1 man
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:linux内核API
man帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{} 分组
... 同一内容可出现多次
DESCRIOTION 详细说明
OPTIONS 选项说明
EXAMPILES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其他帮助参考
/etc/issue #登陆信息
/etc/motd #登陆后信息
echo $LANG #查看当前语言
localectl set-locale LANG=zh_CN.UTF-8 #修改语言为中文
man-pages-zh-CN #帮助中文包
man [章节] keyword
man -a keyword #列出所有帮助
man -k keyword #列出所有匹配的页面
或者使用whatis数据库
man -f keyword #相当于whatis
man -w [章节] keyword #打印man帮助文件的路径
info command #列出帮助
方向键,PgUp,PgDn导航
tab键移动到下一个连接
d 显示主题目录
Home 显示主题首部
Enter进入 选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字 文本搜索
q 退出
/usr/share/doc #man帮助文件路径
xxd #16进制工具
时区设置
timedatectl set-timezone Asia/Shanghai #centos7
/usr/share/zoneinfo/ #时区目录
cal #日历
-y #整年
cal 9 1752 #典故(少了3-13号)
练习
1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间
vim /etc/issue
\S
Kernel \r on an \m
Hostname: \n
Time: \t
tty: \l
2、今天18:30自动关机,并提示用户
shutdown -h 18:30