常见命令
查看硬件信息
查看cpu
lscpu
cat /proc/cpuinfo
范例:
[root@localhost ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 4
NUMA node(s): 1[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 141
model name : 11th Gen Intel(R) Core(TM) i5-11260H @ 2.60GHz
stepping : 1
microcode : 0x4e
cpu MHz : 2611.204
cache size : 12288 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
查看内存大小
free
cat /proc/meminfo //proc(内存)
示例:
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1863028 694812 647516 18344 520700 997964
Swap: 2097148 0 2097148
[root@localhost ~]# cat /proc/meminfo
MemTotal: 1863028 kB
MemFree: 647640 kB
MemAvailable: 998108 kB
Buffers: 1052 kB
Cached: 478024 kB
SwapCached: 0 kB
Active: 564068 kB
Inactive: 374680 kB
Active(anon): 460552 kB
Inactive(anon): 17464 kB
查看磁盘分区情况
lsblk
cat /proc/partitions
示例
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17.7G 0 part /
sr0 11:0 1 1024M 0 rom
sr1 11:1 1 1024M 0 rom
[root@localhost ~]# cat /proc/partitions
major minor #blocks name8 0 20971520 sda
8 1 307200 sda1
8 2 2097152 sda2
8 3 18566144 sda3
11 0 1048575 sr0
11 1 1048575 sr1
查看系统版本信息
查看内核版本
uname -r
范例
[root@localhost ~]# uname -r
3.10.0-1160.el7.x86_64
查看操作系统发型版本
cat /etc/os-release
示例:
[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
日期和时间
date //系统时间
clock //硬件时间
clock -s 以硬件时间校正系统时间
clock -w 以系统时间校正硬件时间
范例:
[root@localhost ~]# date
Sat Aug 31 18:23:13 PDT 2024
[root@localhost ~]# clock
Sat 31 Aug 2024 06:29:44 PM PDT -0.662451 seconds
显示日历
cal
cal -y
范例:
[root@localhost ~]# cal
August 2024
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@localhost ~]# cal -y
2024January 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 3 4 5 6 1 2 3 1 2
7 8 9 10 11 12 13 4 5 6 7 8 9 10 3 4 5 6 7 8 9
14 15 16 17 18 19 20 11 12 13 14 15 16 17 10 11 12 13 14 15 16
21 22 23 24 25 26 27 18 19 20 21 22 23 24 17 18 19 20 21 22 23
28 29 30 31 25 26 27 28 29 24 25 26 27 28 29 30
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 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
关机和重启
关机:
half
poweroff
重启:
reboot
-f : 强制 ,不调用shutdown
-p: 切断电源
关机或重启:shutdown
shutdown [ OPTION ] ... [ TIME ] [ MESSAGE ]
-r : reboot
-h : half
-c : cancel
[ TIME ] : 指定时间
用户登录信息查询命令
w // 查看所有用户登录信息及其在做什么
who // 查看所有的登录会话
whoami // 查看当前登录有效用户
输出信息echo
echo -n 输出不换行
当使用 echo -e 时,你可以包含各种转义字符来控制输出。下面是一些常见的转义字符,包括 \a,它用于发出警报声(如果终端支持的话):
\a:发出警报声(通常是蜂鸣声)。
\b:退格(删除前一个字符,但不移动光标位置)。
\c:不输出行尾的换行符。这与 -n 选项相似,但 -n 是作为一个单独的选项来使用的。
\e:转义字符(ESC,ASCII 码 27)。
\f:换页(将光标移动到下一页的开始处,但通常不会这样做)。
\n:新行。
\r:回车(将光标移动到行首,但不换行)。
\t:水平制表符(通常等同于按下 Tab 键)。
\\:反斜杠字符本身。
\":双引号字符。
\0NNN:八进制值表示的 ASCII 字符(NNN 是三位八进制数)。
\xHH:十六进制值表示的 ASCII 字符(HH 是两位十六进制数)
示例:
[root@localhost ~]# echo i love you
i love you
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin[root@localhost data]# echo -e "\0127" // 0(8进制)
W[root@localhost data]# echo -e "\x127" // x(16进制)
7
hexdump
hexdump [options] FILE[...]
-b:单字节八进制显示。
-c:单字节字符显示。对于非打印字符,会用点(.)或特定的转义序列表示。
-C:规范化“十六进制+ASCII”显示。每行显示16个字节的十六进制值,并在其后显示对应的ASCII字符(对于非打印字符,则用点.表示)。
-d:双字节十进制显示。
-o:双字节八进制显示。
-x:双字节十六进制显示。
-n length:只格式化输入文件的前length个字节。
-s skip:跳过开头指定长度skip个字节后再开始显示。
-v:显示所有输入数据,包括重复的行。默认情况下,如果连续几行的输出内容相同,hexdump 会用星号(*)来代表这些重复的行。
-e format_string:以指定的格式字符串显示数据。格式字符串可以非常灵活地定义输出格式,包括字节的迭代计数、字节计数以及格式。
示例:
[root@localhost data]# hexdump -C rmb.jpg
00000000 80 20 21 00 83 5e 38 26 00 08 00 00 00 60 09 00 |. !..^8&.....`..|
00000010 00 5e 39 26 82 74 49 2b 00 68 09 00 00 00 40 00 |.^9&.tI+.h....@.|
00000020 00 74 4a 2b 83 fe ff ff 00 68 49 00 00 98 36 02 |.tJ+.....hI...6.|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040
命令行扩展和被括起来的集合
命令行扩展:`` 和$()
把一个命令输出打印给另一个命令的参数
$(CMD) AND `CMD`
示例:
[root@localhost data]# echo ls
ls
[root@localhost data]# echo `ls`
for_9*9.sh for_rename.sh for_scan_host.sh for_sum2,sh for_sum.sh passwd rmb.jpg rmb.sh shift_addusr,sh
[root@localhost data]# echo $(ls)
for_9*9.sh for_rename.sh for_scan_host.sh for_sum2,sh for_sum.sh passwd rmb.jpg rmb.sh shift_addusr,sh[root@localhost ~]# touch `date +%F`.log
[root@localhost ~]# ls
2024-08-31.log
比较 `` '' "" 三者的区别
[root@localhost data]# echo `hostname`
localhost.localdomain
[root@localhost data]# echo "$HOSTNAME"
localhost.localdomain
[root@localhost data]# echo '$HOSTNAME'
$HOSTNAME
括号扩展:{ }
{ }可以实现重复字符的打印
示例:
[root@localhost ~]# echo wtj{1,3,5}
wtj1 wtj3 wtj5
[root@localhost ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# echo {20..10}
20 19 18 17 16 15 14 13 12 11 10
[root@localhost ~]# echo {20..10..2}
20 18 16 14 12 10
[root@localhost ~]# echo {a..z..2}
a c e g i k m o q s u w y
[root@localhost ~]# echo {a..z}
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
[root@localhost ~]# echo {A..z}
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 [ ] ^ _ ` 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
[root@localhost ~]# echo {000..20..2}
000 002 004 006 008 010 012 014 016 018 020
tap键补全命令
[root@localhost ~]# cat love.s
love.s love.s.bak
命令历史
history
history命令在Linux中提供了多个选项,这些选项允许用户以不同的方式查看和管理命令历史记录。以下是一些常用的history命令选项:
-c:清空当前shell会话中的命令历史记录。这不会影响保存在历史文件(如~/.bash_history)中的命令。
-a:将当前会话中执行的命令追加到历史命令文件中。这通常用于确保所有会话中的命令都被保存到历史记录中。
-r:从历史命令文件中读取命令记录,并将其添加到当前会话的命令历史记录中。这可以用于恢复之前会话中的命令历史。
-w:将当前会话的命令历史记录写入历史命令文件(默认为~/.bash_history)。这通常在你想要保存当前会话的命令历史时使用。
-n:显示最近的N条历史命令。这个选项后面通常跟一个数字,表示要显示的命令数量。
-p:显示以指定字符串开头的历史命令。这允许你根据命令的开头部分来搜索历史记录。
-s:将指定的字符串作为一条命令添加到命令历史记录中。这可以用于手动添加命令到历史记录中。
除了上述选项外,history命令还有一些用法和技巧,可以帮助用户更有效地使用它:
你可以通过!n来重新执行历史记录中编号为n的命令。
使用!!可以重新执行上一条命令。
使用!字符串可以重新执行最近一条以该字符串开头的命令。
按下Ctrl + R并输入搜索字符串,可以反向搜索历史记录中包含该字符串的命令。
此外,命令历史的存储和显示行为可以通过环境变量来配置,如HISTSIZE(控制当前会话中可以访问的命令历史项的数量)、HISTFILESIZE(控制保存在历史文件中的命令历史项的总数)和HISTFILE(指定保存命令历史的文件的路径)。
示例:
[root@localhost ~]# history
1 poweroff
2 pwd
3 poweroff
4 setenforce 0
5 systemctl stop firewalld.service
6 wget http://repo.mysql.com/mysql80-community-release-el7.rpm
7 ls
8 yum -y install mysql80-community-release-el7.rpm
9 ls[root@localhost ~]# cat .bash_history
poweroff
pwd
poweroff
setenforce 0
systemctl stop firewalld.service
wget http://repo.mysql.com/mysql80-community-release-el7.rpm
ls
yum -y install mysql80-community-release-el7.rpm
ls[root@localhost ~]# !2
pwd
/root
[root@localhost ~]# echo $HISTSIZE
1000[root@localhost ~]# history -s rm -rf /
[root@localhost ~]# history
1 rm -rf /
2 history
[root@localhost ~]# HISTTIMEFORMAT="%F %T `whoami`"
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# history
1 2024-08-31 22:27:47 rootrm -rf /
2 2024-08-31 22:27:52 roothistory
3 2024-08-31 22:30:13 rootexoport HISTTIMEFORMAT="%F %T `whoami`"
4 2024-08-31 22:30:52 rootHISTTIMEFORMAT="%F %T `whoami`"
5 2024-08-31 22:30:55 roothistory[root@localhost ~]# 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 HISTTIMEFORMT="%F-%T `whoami` "
bash的快捷键
Bash(Bourne Again SHell)的快捷键是提高命令行操作效率的重要工具。以下是一些常用的Bash快捷键及其功能说明:
1. 光标移动
Ctrl + a:将光标移动到命令行的开头。
Ctrl + e:将光标移动到命令行的末尾。
Ctrl + f:光标向右移动一个字符(相当于方向键右)。
Ctrl + b:光标向左移动一个字符(相当于方向键左)。
Alt + f:光标向右移动一个单词。
Alt + b:光标向左移动一个单词。
Ctrl + xx:在命令行首和光标之间移动。
2. 文本编辑
Ctrl + u:从光标处删除至命令行首。
Ctrl + k:从光标处删除至命令行尾。
Ctrl + w:从光标处删除至字首(即删除光标前的整个单词)。
Alt + d:从光标处删除至字尾(即删除光标后的整个单词)。
Ctrl + d:删除光标后的一个字符(相当于Delete键)。
Ctrl + h:删除光标前的一个字符(相当于Backspace键)。
Ctrl + y:粘贴至光标后(粘贴之前用Ctrl+u、Ctrl+k、Ctrl+w等命令删除的内容)。
Alt + c:从光标处开始,将右边一个单词更改为首字母大写。
Alt + u:从光标处开始,将右边一个单词更改为全部大写。
Alt + l:从光标处开始,将右边一个单词更改为全部小写。
Ctrl + t:交换光标处和之前的字符位置。
Alt + t:交换光标处和之前的单词位置。
3. 命令执行与搜索
Ctrl + r:逆向搜索命令历史(输入部分命令后,按此键搜索之前执行过的命令)。
Ctrl + g:从历史搜索模式退出。
Ctrl + p:历史中的上一条命令(相当于方向键上)。
Ctrl + n:历史中的下一条命令(相当于方向键下)。
Alt + .:使用上一条命令的最后一个参数。
!!:执行上一条命令。
!blah:执行最近的以blah开头的命令。
!$:上一条命令的最后一个参数。
!:打印输出!的内容。
4. 控制命令
Ctrl + l:清屏(相当于clear命令)。
Ctrl + o:执行当前命令,并选择上一条命令(在某些shell版本中可能不起作用)。
Ctrl + s:阻止屏幕输出(在某些终端中可能不起作用,或需要配置)。
Ctrl + q:允许屏幕输出(与Ctrl+s相对)。
Ctrl + c:终止当前命令的执行。
Ctrl + z:挂起(暂停)当前命令的执行,可以使用fg命令恢复执行。
5. 其他
Ctrl + d:在命令行首时,相当于exit命令,退出当前shell。
Ctrl + Shift + n、Ctrl + Shift + t、Ctrl + Shift + w等:这些快捷键通常与特定的终端模拟器(如gnome-terminal)相关,用于创建新窗口、标签页或关闭标签页等,而非Bash本身的快捷键。