一个特殊的管理账号
也被称为超级用户
root拥有完整的系统控制权限
对系统损害几乎有无限的能力
权限有限
造成损害的能力比较有限
tty 查看当前所在终端
[root@CentOS8 ~]$tty
/dev/pts/1
echo ${SHELL}
[root@CentOS8 ~]$echo ${SHELL}
/bin/bash
cat /etc/shells
[root@CentOS8 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/bin/tmux
/bin/tmux
临时生效
hostname 主机名称
Ubuntu 18.04.4和CentOS 8,CentOS7都有效
hostnamectl set-hostname 主机名
主机名配置文件位置vim /etc/sysconfig/network
注意:
默认提示符
# 管理员
$ 普通用户
显示提示符格式
[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[37;1m\][\[\e[31;1m\]\u\[\e[34;1m\]@\[\e[32;1m\]\h \[\e[31;1m\]\w \[\e[33;1m\]\t\[\e[37;1m\]]\[\e[32;1m\]\\$\[\e[m\]"
提示符格式说明:
\e 控制符\033
\u 当前用户
\h 主机名简称
\H 主机名
\w 当前工作目录
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式
! 命令历史数
# 开机后命令历史数
重定向到 > /etc/profile.d/env.sh
echo 'PS1="\[\e[37;1m\][\[\e[31;1m\]\u\[\e[34;1m\]@\[\e[32;1m\]\h \[\e[31;1m\]\w \[\e[33;1m\]\t\[\e[37;1m\]]\[\e[32;1m\]\\$\[\e[m\]"' > /etc/profile.d/env.sh
然后退出exit重登生效
查看系统进程命令:ps -ef | head 查看init的配置文件:more /etc/inittab 查看系统当前运行的级别:runlevel
什么是运行级? 运行级就是操作系统当前正在运行的功能级别。这个级别从0到6,具有不同的功能。可以在/etc/inittab中查看它的英文介绍。
0 关机
1 单用户模式
2 多用户, 没有, NFS(和级别3相似,会停止部分服务)
3 切换到多用户-命令模式
4 没用
5 切换到图形化界面
6 重启
输入命令后回车后,shell程序找到输入命令所对应的可执行程序,或代码,并由其分析后提供给内核分配资源运行起来。
区别指定的命令是内部命令或外部命令
type 查看文件类型
type 命令
查看是否存在对应内部和外部命令
[root@C8 ~ 19:52:27]$type -a echo -a 搜索外部命令和他同名的内部命令
echo is a shell builtin 内部
echo is /usr/bin/echo 外部
由于内部命令优先,所以外部不会生效
help 内部命令列表
enable 管理内部命令
搜索外部命令
显示外部命令的搜索路径
which 要搜索的命令
显示外部路径的文件路径,还能显示出外部命令帮助文档的路径
whereis
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell 解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存可以大大提高命令的调用速度
hash 命令常见用法
对于经常执行的较长的命令,可以将其定义成较短的别名,方便执行
显示当前shell 进程所有可用的命令别名
alias
定义别名NAME,其相当于执行命令VALUE
alias 别名名称 ="命令"
unalias
unalias -a 取消所有别名
生效在别名后面加个.
. .bashrc 点后面跟上定义的别名文件
注意:在命令行中定义别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
vim bashrc
重新读取配置文件
source /path/to/config_file
. /path/to/config_file
如果别名同原命令同名,如果要执行原命令.可使用
\ALIASNAME \表示屏蔽或取消了,别名功能。当成普通命令
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令
COMMAND [选项...] [参数...]
选项:用于启用或关闭命令的某个或某些功能
参数:命令的作用对象,比如:文件名,用户名等
注意:
[root@C8 ~ 14:48:53]$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 50G 0 part /data
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 4G 0 part [SWAP]
sr0 11:0 1 7G 0 rom
[root@centos8 ~]#uname -r
4.18.0-147.el8.x86_64
[root@centos7 ~]#uname -r
3.10.0-1062.el7.x86_64
[root@centos6 ~]# uname -r
2.6.32-754.el6.x86_64
[root@ubuntu1804 ~]#uname -r
4.15.0-29-generic
Cents8
红帽系列的可以用这个来看
cat /etc/redhat-release
Ubuntu 查看发行版本
cat /etc/os-release
Linux 的两种时钟
date 显示和设置系统时间
date +%s
date -d @1509536033
clock , hwclock :显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时区存放位置
/etc/localtime
列出现有时区列表
timedatectl list-timezones
timedatectl set-timezone Asia/Shanghai
要修改的时区
cal -y
显示指定时间段、
cal 9 2020
9月 2020年
echo 命令可以将后面根的字符进行输出
功能:显示字符,echo 会将输入的字符串送往标准输出, 输出的字符串间以空白字符隔开,并在最后加上换行号
语法
echo [-neE][字符串]
选项:
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能
显示变量
echo "$VAR_NAME” #变量会替换,弱引用
echo '$VAR_NAME’ #变量不会替换,强引用
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
保存你输入的命令历史。可以用它来重复执行命令
登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
命令:history
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg
命令历史相关环境变量
whoami
” 显示时间和用户以上变量可以 export 变量名=“值” 形式存放在 /etc/profile 或 ~/.bash_profile
范例:
[root@centos8 ~]#cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export HISTCONTROL=ignoreboth
export HISTTIMEFORMAT="%F %T "
[root@centos8 ~]#history
1 2019-12-13 08:39:05 ls /data
2 2019-12-13 08:39:05 date
3 2019-12-13 08:39:05 vie0
4 2019-12-13 08:39:05 nano .bash_profile
5 2019-12-13 08:39:05 exit
#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-1 并回车执行
按 Ctrl+p 并回车执行
!:0 执行前一条命令(去除参数)
!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 开头的命令,并获取它的所有参数
关机:
重启:
reboot
-f 强制,不调用shutdown
-p:切断电源
shutdown [OPTION]... [TIME] [MESSAGE]
shotdown +10 十分钟后关机
shotdown 02:20 2点20分钟后关机
shutdown -c 取消
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0 如果时0就立刻开机
+#: 相对时间表示法,几分钟之后;例如 +3 加号后跟个时间表示多少分钟后关机
hh:mm: 绝对时间表示,指明具体时间 指定几点几分要关机
whoami :显示当前登录有效用户
who : 系统当前所有的登录会话
w :系统当前所有的登陆·会话及所做的操作
screen命令就是,当打开一个screen会话框其中启动的进程是连在一起的,打开窗口,会话开始,关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完 。一个经典的例子就是,SSH登录远程计算机,打开一个远程窗口执行命令,这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令,因为上一次SSH会话已经终止了,里面的进程也随之消失了,为了解决这个问题,会话与窗口可以"解绑" :窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口
终端复用器软件就是会话与窗口的"解绑"工具 , 将他们彻底分离。
利用screen 可以实现会话管理如:新建会话,共享会话等
注意 : CentOS 7 来自于base源, CentOS8 来自于epel源
范例:安装 screen
Centos7 安装screen
CentOS 8 安装screen
dnf -y epel-release
dnf -y install screen
创建新screen会话
screen -S 用户名
加入screen会话
screen -x 用户名
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen-ls
恢复某screen会话
screen -r 用户名
$(CMD) 或 'CMD'
{} 可以实现打印重复字符串的简化形式
echo file{1,3,5} 结果为:file1 file3 file5
rm -f file{1,3,5}
echo {1..10}
cho {a..z}
echo {000..20..2}
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 + #提示输入指定字符后,重复显示该字符#次
注意:Alt组合快捷键经常和其它软件冲突