Linux常用命令及使用格式
1.命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能
- 短选项:UNIX 风格选项,-c 例如:-l, -h
- 长选项:GNU风格选项,--word 例如:--all, --human
- BSD风格选项: 一个字母,例如:a,使用相对较少
参数:命令的作用对象,比如:文件名,用户名等
[root@centos8 ~]# id -u test
1000
[root@centos8 ~]# ls -a
[root@centos8 ~]# ls --all
anaconda-ks.cfg .cshrc hosts.log .tcshrc
[root@centos8 ~]# free -h
total used free shared buff/cache available
Mem: 957Mi 291Mi 256Mi 6.0Mi 409Mi 500Mi
Swap: 2.0Gi 2.0Mi 2.0Gi
[root@centos8 ~]# free --human
total used free shared buff/cache available
Mem: 957Mi 291Mi 256Mi 6.0Mi 409Mi 500Mi
Swap: 2.0Gi 2.0Mi 2.0Gi
[root@centos8 ~]# ps a
PID TTY STAT TIME COMMAND
5966 tty1 Ss+ 0:00 -bash
20988 pts/2 Ss 0:00 -bash
21479 pts/2 R+ 0:00 ps a
注意:
多个选项以及多参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
Ctrl+C强行取消,容易丢失数据
Crtl+D正常取消,没有命令的时候退出登录
多个命令可以用 ";" 符号分开
一个命令可以用\分成多行
2.日期和时间
Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:主板
相关命令
-
date 显示和设置系统时间
例[root@centos8 ~]# date -d @`date +%s` Thu Apr 22 12:37:26 CST 2021 [root@centos8 ~]# date -d @1619066213 Thu Apr 22 12:36:53 CST 2021 [root@centos8 ~]# date -d @1619066213 +%F_%T 2021-04-22_12:36:53 -
clock,hwclock: 显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时区
/etc/localtime
例
[root@centos8 ~]# date
Fri Mar 12 10:51:28 CST 2021
[root@centos8 ~]# clock
2021-03-12 18:51:29.301536+08:00
[root@centos8 ~]# clock -w
[root@centos8 ~]# date
Fri Mar 12 10:52:06 CST 2021
[root@centos8 ~]# clock
2021-03-12 10:52:07.865424+08:00
[root@centos8 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Jun 7 2020 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@centos8 ~]# timedatectl set-timezone Asia/Shanghai # 仅支持centos6以上版本不包含6
----------------------------------
rsqfx@ubuntu1804:~$ cat /etc/timezone
Asia/Harbin
rsqfx@ubuntu1804:~$ sudo -i
[sudo] password for rsqfx:
root@ubuntu1804:~# timedatectl set-timezone Asia/Shanghai
root@ubuntu1804:~# cat /etc/timezone
Asia/Shanghai
显示日历:
[root@centos8 ~]# cal
March 2021
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
[root@centos8 ~]# cal 13 9 1998 # 显示19980913
September 1998
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
[root@centos8 ~]# cal -y # 显示当年日历
2021
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 1 2 3 4 5 6
3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13
10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20
17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27
24 25 26 27 28 29 30 28 28 29 30 31
31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 1 2 3 4 5
4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12
11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19
18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26
25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30
30 31
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 2 3 4 5 6 7 1 2 3 4
4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11
11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18
18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25
25 26 27 28 29 30 31 29 30 31 26 27 28 29 30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 1 2 3 4
3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11
10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18
17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25
24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31
31
[root@centos8 ~]# cal 9 1752 # 特殊的一个月 可以搜下故事
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
3.会话管理
3.1 screen
利用screen 可以实现会话管理,如:新建会话,共享会话等
注意:CentOS7 来自于base源,CentOS8 来自于epel源
# cnetos7安装srceen
[root@centos7 ~]# yum install screen -y # 安装screen
# centos8安装srceen
[root@centos8 ~]# dnf install epel-release -y
[root@centos8 ~]# dnf install screen -y
screen命令常见用法:
- 创建新screen会话
screen –S [SESSION] - 加入screen会话
screen –x [SESSION] - 退出并关闭screen会话
exit - 剥离当前screen会话
Ctrl+a,d - 显示所有已经打开的screen会话
screen -ls - 恢复某screen会话
screen -r [SESSION]
用screen必须在同一账号下面才可以
3.2 tmux

Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离,功能如下
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
- 它可以让新窗口"接入"已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分
安装:
# yum install tmux -y
启动与退出
[root@centos8 ~]# tmux
[root@centos8 ~]# exit
logout
mux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b ,即先按下
Ctrl+b ,快捷键才会生效。帮助命令的快捷键是Ctrl+b ? 然后,按下q 键,就可以退出帮助
新建会话
第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。下面命令新建一个指定名称的会话。
tmux new -s <session-name>
tmux ls或Ctrl+b,s 可以查看当前所有的 Tmux 会话
tmux ls
tmux list-session
分离会话
在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。
tmux detach
接入会话
tmux attach 命令用于重新接入某个已存在的会话。
tmux attach -t <session-name>
范例:
tmux attach -t 0
杀死会话
tmux kill-session命令用于杀死某个会话。
tmux kill-session -t <session-name>
切换会话
tmux switch命令用于切换会话
tmux switch -t <session-name>
可以将窗口分成多个窗格(pane),每个窗格运行不同的命令
上下分窗格
tmux split-window
ctrl+b,"
左右分窗格
tmux split-window -h
ctrl+b,%
窗格快捷键
Ctrl+b %:划分左右两个窗格
Ctrl+b ":划分上下两个窗格
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓
Ctrl+b ;:光标切换到上一个窗格
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格左移
Ctrl+b }:当前窗格右移
Ctrl+b Ctrl+o:当前窗格上移
Ctrl+b Alt+o:当前窗格下移
Ctrl+b x:关闭当前窗格
Ctrl+b !:将当前窗格拆分为一个独立窗口
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小
Ctrl+b q:显示窗格编号
窗口管理
除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口
新建窗口
tmux new-window命令用来创建新窗口
tmux new-window
新建一个指定名称的窗口
tmux new-window -n <window-name>
切换窗口
tmux select-window命令用来切换窗口
切换到指定编号的窗口
tmux select-window -t <window-number>
切换到指定名称的窗口
tmux select-window -t <window-name>
窗口快捷键
Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
Ctrl+b n:切换到下一个窗口。
Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号
Ctrl+b w:从列表中选择窗口
Ctrl+b ,:窗口重命名
列出所有快捷键,及其对应的 Tmux 命令
tmux list-keys
列出所有 Tmux 命令及其参数
tmux list-commands
4.输出信息echo
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)
[root@centos8 ~]# echo -e "\a" # 发出警告声
查看字符集
[root@centos8 ~]# echo $LANG
en_US.UTF-8
用16进制查看文件
[root@centos8 ~]# cat test.txt
abc
[root@centos8 ~]# hexdump -C test.txt
00000000 61 62 63 0a |abc.|
00000004
查看 ascii 表
[root@centos8 ~]# dnf -y install man-pages
[root@centos8 ~]# man ascii
编码转换和查询:
http://www.chi2ko.com/tool/CJK.htm
https://javawind.net/tools/native2ascii.jsp?action=transform
http://tool.oschina.net/encode
修改LANG变量实现中文语言提示
[root@centos7 ~]#xxx
bash: xxx: command not found...
[root@centos7 ~]#echo $LANG
en_US.UTF-8
[root@centos7 ~]#LANG=zh_CN.UTF-8
[root@centos7 ~]#echo $LANG
zh_CN.UTF-8
[root@centos7 ~]#xxx
bash: xxx: 未找到命令...
echo输出A-Z,并用tr转换为竖列
[root@centos8 ~]# echo {A..Z} | tr " " "\n"
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
显示变量
echo "$VAR_NAME” #用变量值替换,弱引用
echo '$VAR_NAME’ #变量不会替换,强引用
\为转义符
[root@centos8 ~]# echo \ # \表示换行
>
[root@centos8 ~]# echo \\ # 第一个\表示转义符第二个为符号\
\
[root@centos8 ~]# echo \\\ # 第一个\表示转义符第二个为符号\第三个为换行
>
[root@centos8 ~]# echo \\\\ # 第一个和第三个为转义符,第二个和第四个为符号\
\\
符号双引号""单引号''反向单引号``的区别
[root@centos8 ~]# echo "echo $HOSTNAME"
echo centos8
[root@centos8 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos8 ~]# echo `echo $HOSTNAME`
centos8
总结:
双引号:不能识别命令,可以识别变量;
单引号:命令和变量都不识别,全部当成字符串;
反向单引号:变量和命令都识别,并将反向单引号里面的命令执行完成后的结果当作命令执行。
反向单引号\\等同于$(),并且反向单引号\\和$()里面只能是命令,但\\无法嵌套而$()可以嵌套也可以两者结合使用
示例:
[root@centos8 ~]# echo "I am `whoami`"
I am root
[root@centos8 ~]# echo "I am $(whoami)"
I am root
4.命令行历史
当执行命令后,系统默认会在内存记录执行过的命令
当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是~/.bash_history
登录shell时,会读取命令历史文件中记录下的命令加载到内存中
登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中
利用命令历史。可以用它来重复执行命令,提高输入效率
命令:history
- -c: 清空命令历史
- -d offset: 删除历史中指定的第offset个命令
- n: 显示最近的n条历史
- -a: 追加本次会话新执行的命令历史列表至历史文件
- -r: 读历史文件附加到历史列表
- -w: 保存历史列表到指定的历史文件
- -n: 读历史文件中未读过的行到历史列表
- -p: 展开历史参数成多行,但不存在历史列表中
- -s: 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
- HISTSIZE:命令历史记录的条数
- HISTFILE:指定历史文件,默认为~/.bash_history
- HISTFILESIZE:命令历史文件记录历史的条数
- HISTTIMEFORMAT="%F %T \
whoami\" 显示时间和用户 - HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
- HISTCONTROL:控制命令历史的记录方式
ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令
持久保存变量
以上变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile
[root@centos8 ~]# cat /etc/profile
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export HISTTIMEFORMAT="%F %T "
[root@centos8 ~]# . /etc/profile
配置环境变量,实现执行history的时候可以看到执行命令的时间
[root@centos8 ~]# vim .bash_profile
export HISTCONTORL
export HISTTIMEFORMAT="%F %T "
[root@centos8 ~]# source .bash_profile
[root@centos8 ~]# history|tail
992 2021-04-22 13:57:05 date -d @1619066213
993 2021-04-22 13:57:05 date -d @1619066213 +%F_%T
994 2021-04-22 13:57:05 dnf -y epel-release
995 2021-04-22 13:57:05 dnf install epel-release -y
996 2021-04-22 13:57:05 yum install tmux -y
997 2021-04-22 13:57:05 tmux
998 2021-04-22 13:57:05 ls
999 2021-04-22 13:57:05 exit
1000 2021-04-22 13:57:07 history
1001 2021-04-22 13:57:23 history|tail
5.调用命令行历史
#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-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 !^ 利用上一个命令的第一个参数做command的参数
command !$ 利用上一个命令的最后一个参数做command的参数
command !* 利用上一个命令的全部参数做command的参数
command !:n 利用上一个命令的第n个参数做command的参数
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 开头的命令,并获取它的所有参数
6.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 + # 提示输入指定字符后,重复显示该字符#次







Comments | 1 条评论
贼详细!很棒!