tty # 查看当前所在的终端
who # 当前主机上有哪些人在哪些终端上登录
who am i # 类似tty
控制台终端:/dev/console
串行终端:/dev/ttyS#
虚拟终端:tty:teletypewriters,/dev/tty#
,tty可有n个,Ctrl+AIt+F#
图形终端:startx,xwindows
伪终端:pty:pseudo-tty,/dev/pts/#
如:SSH远程连接
tty有两类:
dev/ttyN
/dev/pts/N
pts
是伪文件系统,所以称为伪终端2、使用有远程登录时:
free #查看当前系统消耗的内存数
init +N
运行级别 | 作用 |
---|---|
0 | 关机 |
1、S、emergency | 都是单用户模式,只允许root登录,作为维护使用(相当于Windows的安全模式) |
2 | 多用户,不支持网络功能(没NFS) |
3 | 多用户,带网络(有NFS),默认进入文本模式(shell) |
4 | 系统保留,但是默认和级别3相同 |
5 | 多用户带网络,默认进入图形界面 |
6 | 重启 |
/etc/issue
文件用来显示Linux系统的基本信息,例如发行版本、内核版本、安装日期等。当用户登录到Linux系统时,该文件将被用来显示欢迎信息。cat /etc/issue
/etc/issue
文件的一些常见选项说明:\n:换行符,用于在欢迎信息中添加新行。
\l:显示本地终端设备名称。
\m:显示计算机的硬件架构。
\s:显示操作系统的名称。
\r:显示内核的版本号。
\t:显示当前时间。
\u:显示当前用户名。
\v:显示操作系统的发行版本号。
\\:显示反斜杠字符。
其他自定义文本:可以在文件中添加其他自定义文本或标记。
\s
和\v
选项来显示操作系统的名称和发行版本号,\l
选项来显示本地终端设备名称,以及\t
选项来显示当前时间等。/etc/motd
文件用来显示Linux系统的欢迎信息。当用户第一次登录到Linux系统时,该文件将被用来显示欢迎信息。vim /etc/motd
shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter)
shell是一种高级程序设计语言
各种shell:
怎么确认当前使用的shell
echo $SHELL
cat /etc/shells
ps aux
:给出当前系统中正在运行的进程的详细信息,用于查看当前系统中运行的进程,以及它们所占用的资源和状态信息。可以通过对输出进行筛选和排序,进一步了解进程的性能和行为,以及对系统资源的使用情况进行监控和分析。USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# USER: 显示每个进程所属的用户。
# PID: 进程的唯一标识符(Process ID)。
# %CPU: 进程当前使用的 CPU 百分比。
# %MEM: 进程当前使用的内存百分比。
# VSZ: 进程的虚拟内存大小(以 KB 或 MB 为单位)。
# RSS: 进程使用的物理内存大小(以 KB 或 MB 为单位)。
# TTY: 进程关联的终端设备。
# STAT: 进程的状态,包括运行状态(R,表示运行)、睡眠状态(S,表示睡眠)、僵尸状态(Z,表示僵尸进程)等。
# START: 进程启动的时间。
# TIME: 进程占用的 CPU 时间。
# COMMAND: 进程所对应的命令。
ps aux
输出的是所有用户的进程信息,其中 a
表示显示所有用户的进程,u
表示显示进程的详细信息,x
表示显示没有控制终端的进程。ps aux
命令的输出结果可能会因为操作系统的不同而有所差异。在某些系统上,可能需要使用 ps -ef
或其他类似的命令来达到相同的效果。建议在使用时参考相关系统的文档和命令手册,以确保正确使用和解读输出结果。hostname NAME # 临时性的更改,不是永久性的更改
/etc/hostname
vim /etc/hostname
who
后面可以跟很多参数:
-q
列出当前用户个数–H
在每列前面加上列名称-b
列出系统上一次启动的时间–r
列出系统当前运行级别–l
列出系统登录进程who am i
没有内容输出,说明是当前用户没有登录或者登录信息已经过期。sudo -i # 切换成管理员
提示符也可以更改:PS1
在/etc/.bashrc
中找 PS1
变量的定义,如果没有,可以手动加上。
export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$"
#下面简单说说上文环境下默认的特殊符号所代表的意义:
\d :代表日期,格式为weekday month date,例如:“Mon Aug1”
\H:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
\!:表示历史命令计数。
\[\e[F;Bm\]
F
为字体颜色,编号30~37
;B
为背景色,编号40~47
。\e[0m
关闭颜色输出;特别的,当B
为1
时,将显示加亮加粗的文字,详细请看下面的颜色表与代码表。前景 | 背景 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黃色 |
34 | 44 | 蓝色 |
35 | 45 | 紫紅色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
代码 | 意义 |
---|---|
0 | OFF |
1 | 高亮显示 |
4 | underline |
5 | 闪烁 |
7 | 反白显示 |
8 | 不可见 |
执行命令过程:输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
shell中可执行的两类命令:
区别指定的命令是内部或外部命令:type COMMAND
当用户输入一个指令后,系统先判断该命令是否是集成在shell中的内部命令,如果是的话就运行,不是的话就是外部命令,按下图进行依次搜索该外部命令,如果找到的话就加载进内存进行运行,如果找不到就报提示错误:Command 'xxx' not found
如果每一次执行外部命令的时候都按照路径一点点去查找,效率偏低。因此为了加速访问,Linux会把上次执行该外部命令时查找到的路径记录到内存里面(这个动作就被称为hash
)。
hash # 查看曾经执行过的外部命令 hits(命中)代表执行了几次该命令
hash
显示hash缓存hash -I
显示hash缓存,可作为输入使用hash -p path name
将命令全路径path起别名为namehash -t name
打印缓存中name的路径hash -d name
清除name缓存hash -r
清除缓存help # 显示所有内部命令
enable # 显示所有内部命令
enable
管理内部命令
enable cmd
启动内部命令enable -n cmd
禁用内部命令(临时禁用)enable -n
查看所有禁用的内部命令.
”点命令是shell的一个内部命令,它从指定的shell 文件中读入所有命令语句并在当前进程中执行(将配置文件生效)source
等价alias # 显示当前shel进程所有可用的命令别名
alias NAME='VALUE' # 定义别名NAME,其相当于执行命令VALUE,临时失效
echo "alias free='free -h'" >> .bashrc # 永久生效
. .bashrc # 重新运行配置文件
unalias
unalias [-a] name [name...]
unalias -a # 取消所有别名,临时取消
\
,在命令前加\
,如 \enable
'enable'
,如下详细:\ALIASNAME
"ALIASNAME"
'ALIASNAME'
command ALIASNAME
/path/command # 加上路径,只适合外部命令
命令格式:COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能
参数:命令的作用对象,比如:文件名,用户名等
注意:
Ctrl+c
,Ctrl+d
;
"符号分开\
分成多行bc
计算器free
cat /proc/meminfo
lsblk
cat /proc/partitions
uname -r
cat /etc/os-release
date # 显示和设置系统时间
date 月日小时分年.秒 # 临时设置时间
clock,hwclock:显示硬件时钟
-s,--hctosys 以硬件时钟为准,校正系统时钟
-w,--systohc 以系统时钟为准,校正硬件时钟
/etc/localtime # 时区
ll /etc/localtime # 查看时区 或者cat /etc/localtime
timedatectl list-timezones # 列出现有的时区列表
timedatectl set-timezone Asia/Shanghai # 修改时区
cal -y # 显示整年的日历
cal # 显示当前月份的日历
cal 月 年 # 指定年月的日历
关机:
halt
poweroff
重启:
reboot
-f
:强制,不调用shutdown
-p
:切断电源关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r
:reboot-h
:halt-c
:cancel+1
(CentOS7)
now
:立刻,相当于+0
+#
:相对时间表示法,几分钟之后;例如+3
hh:mm
:绝对时间表示,指明具体时间whoami
:显示当前登录有效用户who
:系统当前所有的登录会话w
:系统当前所有的登录会话及所做的操作利用screen可以实现会话管理,如:新建会话,共享会话等
需要连接到同一个账户和同一台电脑上
screen -S [SESSION]
screen -x [SESSION]
exit
Ctrl+a,d
按Ctrl a和dscreen -Is
screen -r [SESSION]
screen -S test # 用户A 创建一个会话,名字叫 test
screen -ls # 用户B 查看会话
screen -x test # 用户B 加入一个名字叫 test 的会话
tmux # 启动
exit # 退出
ctrI+b
,快捷键才会生效。帮助命令的快捷键是ctrI+b?
然后,按下q
键,就可以退出帮助tmux new -s <session-name>
tmux ls
或Ctrl+b,s
,可以查看当前所有的Tmux会话tmux ls
tmux list-session
Ctrl+b d
或者输入tmux detach
命令,就会将当前会话与窗口分离。tmux detach
tmux attach
命令用于重新接入某个已存在的会话。tmux attach -t <session-name>
tmux kill-session
命令用于杀死某个会话tmux kill-session -t <session-name>
tmux switch
命令用于切换会话tmux switch -t <session-name>
tmux split-window
ctrl+b,"
tmux split-window-h
ctrl+b,%
tmux select-window
命令用来切换窗口tmux select-window -t
tmux select-window -t
CtrI+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
CtrT+b p:切换到上一个窗口(按照状态栏上的顺序)。
ctr1+b n:切换到下一个窗口。
ctrI+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号
ctrI+b w:从列表中选择窗口
Ctrl+b ,:窗口重命名
tmux list-keys
tmux list-commands
echo [-neE][字符串]
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)echo $LANG --> en_US.UTF-8 # en_US 提示是英文
$(CMD) 或 `CMD`
`CMD`:变量和命令都识别,将里面的内容当成命令执行
`CMD`:不支持嵌套
$(CMD):支持嵌套
command 2Tab
所有子命令或文件补全string 2Tab
以string开头命令/2Tab
显示所有根目录下一级目录,包括隐藏目录./2Tab
当前目录下子目录,包括隐藏目录*2Tb
当前目录下子目录,不包括隐藏目录~2Tab
所有用户列表$2Tab
所有变量@2Tab /etc/hosts
记录(centos7不支持)=2Tab
相当于ls -A
(centos?7不支持)~/.bash_history
~/.bash_history
history
-c
清空命令历史-d offset
删除历史中指定的第offset个命令n
显示最近的n条历史-a
追加本次会话新执行的命令历史列表至历史文件-r
读历史文件附加到历史列表-w
保存历史列表到指定的历史文件-n
读历史文件中未读过的行到历史列表-p
展开历史参数成多行,但不存在历史列表中-s
展开历史参数成一行,附加在历史列表后(加入历史,并不执行)history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
HISTSIZE
命令历史记录的条数HISTFILE
指定历史文件,默认为~/.bash_history
HISTFILES1ZE
命令历史文件记录历史的条数HISTIGNORE="str1:str2*:..."
忽略str1命令,str2开头的历史HISTCONTROL
控制命令历史的记录方式
ignoredups
是默认值,可忽略重复的命令,连续且相同为“重复”ignorespace
忽略所有以空白开头的命令ignoreboth
相当于ignoredups
,ignorespace
的组合erasedups
删除重复命令HISTTIMEFORMAT="%F %T `whoami` " # 显示时间和用户
echo $HISTSIZE # 可以记录多少条历史,可以在 /etc/profile 文件里面修改
export 变量名="值"
形式存放在/etc/profile
或~/.bash_profile
Ctrl+R
搜索历史命令:Ctrl+R
可以在历史命令记录中搜索命令。只需按下Ctrl+R
,然后输入要搜索的命令的一部分,就可以找到最近包含该字符串的命令。!
执行历史命令:!
可以用来执行历史命令。例如,!ls
可以执行最近执行的以ls
开头的命令。!!
执行上一条命令:!!
可以用来执行上一条命令。例如,如果上一条命令是ls -l
,则!!
将执行ls -l
命令。!$
引用上一条命令的最后一个参数:!$
可以用来引用上一条命令的最后一个参数。例如,如果上一条命令是ls -l /var/log
,则!$
将引用/var/log
。history | grep
:搜索历史命令history | grep
可以在历史命令记录中搜索命令。例如,history | grep ls
可以找到所有包含ls的历史命令。HISTSIZE
环境变量设置历史命令记录的长度:HISTSIZE
环境变量可以用来设置历史命令记录的长度。例如,HISTSIZE=1000
可以将历史命令记录的长度设置为1000。history -w && history -c
清空历史命令记录:history -w && history -c
可以用来清空历史命令记录。该命令将当前会话的历史命令记录写入历史命令文件,并清空当前会话的历史命令记录。fc
编辑历史命令:fc命令可以用来编辑历史命令。例如,fc -e vim
可以用vim
编辑器打开最近执行的命令。#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-1 并回车执行
按 Ctr1+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 # 在命令历史中搜索命令
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开头的命令,并获取它的所有参数
Ctrl + a :移到命令行首
Ctrl + e :移到命令行尾
Ctrl + f :按字符前移(右向)
Ctrl + b :按字符后移(左向)
Alt + f :按单词前移(右向)
Alt + b :按单词后移(左向)
Ctrl + xx:在命令行首和光标之间移动
Ctrl + u :从光标处删除至命令行首
Ctrl + k :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首
Alt + d :从光标处删除至字尾
Ctrl + d :删除光标处的字符
Ctrl + h :删除光标前的字符
Ctrl + y :粘贴至光标后
Alt + c :从光标处更改为首字母大写的单词
Alt + u :从光标处更改为全部大写的单词
Alt + l :从光标处更改为全部小写的单词
Ctrl + t :交换光标处和之前的字符
Alt + t :交换光标处和之前的单词
Alt + Backspace:与 Ctrl + w 类似,分隔符有些差别
Ctrl + r:逆向搜索命令历史
Ctrl + g:从历史搜索模式退出
Ctrl + p:历史中的上一条命令
Ctrl + n:历史中的下一条命令
Alt + .:使用上一条命令的最后一个参数
Ctrl + l:清屏
Ctrl + o:执行当前命令,并选择上一条命令
Ctrl + s:阻止屏幕输出,锁定
Ctrl + q:允许屏幕输出,解锁
Ctrl + c:终止命令
Ctrl + z:挂起命令
whatis
使用数据库来显示命令的简短描述# Centos 7 版本以后
mandb
# Centos 6 版本之前
makewhatis
内部命令:
外部命令和软件:
COMMAND --heIp
或COMMAND -h
man COMMAND
info COMMAND
README
INSTALL
ChangeLog
Documentation
格式说明:
[]
表示可选项CAPS
或<>
表示变化的数据...
表示一个列表x|y|z
的意思是“x或y或z”-abc
的意思是 -a -b -c{}
表示分组man提供命令帮助的文件,手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
中文man需安装包
man-pages
man-pages-zh-CN
man页面分组为不同的“章节”,统称为Linux手册,man 1(章节号) man
man命令的配置文件:
# Centos 6 之前版man的配置文件
/etc/man.config
# Centos 7 之后版 man的配置文件
/etc/man_db.conf
# ubuntu man 的配置文件
/etc/manpath.config
MANPATH /PATH/TO/SOMEWHERE # 指明man文件搜索位置
man -M /PATH/TO/SOMEWHERE COMMAND
man [章节] keyword
man帮助段落说明
NAME
名称及简要说明SYNOPSIS
用法格式说明[]
可选内容<>
必选内容a | b
二选一{}
分组...
同一内容可出现多次DESCRIPTION
详细说明OPTIONS
选项说明EXAMPLES
示例FLES
相关文件AUTHOR
作者COPYRIGHT
版本信息REPORTING BUGS
bug信息SEE ALSO
其它帮助参考列出所有帮助
man -a keyword
# 列出所有匹配的页面,使用 whatis 数据库
man -k keyword
man -f keyword
man -w [章节] keyword
man
命令的操作方法:使用less
命令实现
space,^v,^f,^F
向文件尾翻屏b,^b
向文件首部翻屏y or ^Y or ^P or k or ^K
向文件首部翻一行q
退出#
跳转至第#行G
回到文件首部/KEYWORD
KEYWORD
指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写
n
下一个N
上一个?KEYWORD
n
跟搜索命令同方向,下一个N
跟搜索命令反方向,上一个*
info[命令]
方向键
PgUp,PgDn导航Tab键
移动到下一个链接d
显示主题目录Home
显示主题首部Enter
进入选定链接n/p/u/l
进入下前/上一层/最后一个链接s 文字
文本搜索q
退出info/usr/share/doc
目录README
INSTALL
CHANGES
HTML/PDF/PS
格式的文档