linux cpu占用率如何看
302
2022-11-07
linux 基础命令和帮助文档的查看
终端类型
控制台终端: /dev/console 串行终端:/dev/ttyS# 虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F# 图形终端:startx, xwindows CentOS 6: Ctrl + Alt + F7 CentOS 7: 在哪个终端启动,即位于哪个虚拟终端 伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接
/etc
相当于windows的注册表
/etc/motd 登录后的提示
[root06:16 AMcentos8 ~]#vim /etc/motd ^[[43;31;1;5mhello^[[0m welcome here
/etc/issue 登录前的提示,登录前的提示
在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间 CentOS release 6.9 (Final) Kernel \r on an \m Tty: \l Hostname: \n Time: \t
wang@ubuntu:~$ cat /etc/issueUbuntu 18.04.5 LTS \n \l
wang@ubuntu:~$
Shell
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并
把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter)
shell是一种高级程序设计语言
显示当前的SHEll
1. echo ${SHELL} 或者 echo $SHELL 2、显示当前系统中的所有shell cat /etc/shells 3.shell就是用户和内核交互的接口,不同的shell,就相当于不同的语言,功能是一样的 各种shell,主流的shell是bash 苹果电脑用的是 4.bash shell GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与 sh兼容 显示当前使用的shel Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并 把它送入内核去执行 shell也被称为LINUX的命令解释器(command interpreter) shell是一种高级程序设计语言 sh:Steve Bourne bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用 csh:c shell , C 语言风格 tcsh ksh :Korn Shell, AIX 默认 shell zsh: MacOS默认she
命令提示符
[root@centos8 ~]#echo $PS1 \[\e[1;35m\][\u@\h \W]\$\[\e[0m\] [root@centos7 ~]# echo $PS1 [\u@\h \W]\$ PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]" PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$" 提示符格式说明: \e 控制符\033 \u 当前用户 \h 主机名简称 \H 主机名 \w 当前工作目录 \W 当前工作目录基名 \t 24小时时间格式 \T 12小时时间格式 ! 命令历史数 # 开机后命令历史数 范例:持久保存提示符格式相关变量 PS1 (不适合ubuntu) [root@centos8 ~]# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh #修改.bashrc 适合于centos和 .bashrc #Ubuntu 修改 ubutun: 放在.bashrc目录中 PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$" 或者: PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]" #ubuntu 永久生效也放文件里面 /root 当前目录下的.bashrc文件里面最后一排 PS1="\[\e[1;33m\][\u\@\h \w]\\$\[\e[0m\]" [root@centos7 ~]# echo $PS1 [\u@\h \W]\$ #31-37是颜色 PS1='\[\e[1;5;41;33m\][\u\@\h \w]\\$\[\e[0m\]' 1 高亮 5 闪烁 41 背景颜色 33m 字体颜色 [root11:17 AMcentos7 ~]#PS1='\[\e[1;33m\][\u\@\h \w]\$\[\e[0m\]'
设置主机名
hostname NAME [root@centos8 ~]#hostname bj-yz-k8s-node1-100-10.magedu.com #临时生效 hostname NAME #持久生效 hostnamectl set-hostname NAME 或者修改/etc/hostname 文件以后重启机器,适合centos 7/8 或者ubuntu centos6修改主机名 centos6主机文件的存放的位置不一样, 1、在/etc/sysconfig/network 中,因此要修改配置文件 2、再使用一下hostname命令修改一下名字 centos6 修改配置文件: [root@centos6 sysconfig]# pwd /etc/sysconfig [root@centos6 sysconfig]# cat network NETWORKING=yes HOSTNAME=centos6 # 临时修改 hostname USERNAME centos7以上的 hostname USERNAE 临时生效 hostnamectl set-hostname USERNAME 永久生效 或者修改配置文件 [root@localhost ~]# cat /etc/hostname localhost.localdomain [root@localhost ~]# echo centos7 >/etc/hostname #例如: hostname bj-yz-k8s-node1-100-10.magedu.local
注意:主机名不要使用下划线
#主机名不要用下划线,带下划线的邮件服务器无法启动,邮件服务器对主机名有特殊的要求 [root@centos7 ~]# systemctl restart postfix 乱改主机名导致服务器无法启动起来 注意 * 主机名不支持下划线,支持横线,数字,字母 * 有些软件对主机名有特殊的要求 例如邮件服务器修改主机名字,导致服务器无法启动 比如说 postfix服务
w whoami
[root@centos8 ~]# w 16:25:22 up 4:26, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 15:18 1:06m 0.01s 0.01s -bash root pts/0 10.0.0.1 15:18 2.00s 0.01s 0.00s w root pts/1 10.0.0.1 15:58 27:14 0.00s 0.00s -bash [root@centos8 ~]# whoami root [root@centos8 ~]# who am i root pts/0 2021-06-01 15:18 (10.0.0.1) [root@centos8 ~]# whoami: 显示当前登录有效用户 who: 系统当前所有的登录会话 w: 系统当前所有的登录会话及所做的操作
Ubuntu切换用户
wang@ubuntu:~$ sudo -i [sudo] password for wang: root@ubuntu:~# root@ubuntu:~# su - wang wang@ubuntu:~$
执行命令
内部命令:由shell自带的,而且通过某命令形式提供
外部命令:在文件系统路径下有对应的可执行程序文件
区别指定的命令是内部或外部命令
type COMMAND
范例: 查看是否存在对应内部和外部命令
[root@centos8 ~]#type -a echo echo is a shell builtin echo is /usr/bin/echo
内部命令相关
help 内部命令列表 enable 管理内部命令 enable cmd 启用内部命令 enable –n cmd 禁用内部命令 enable –n 查看所有禁用的内部命令
不同的shell 的内部命令不一样
外部命令 内部命令 (help 查看所有的内部命令)type 来辨别是外部还是内部命令,外部命令后执行,因为他在磁盘上
#查看当前shell [13:39:30root@node1 profile.d]#echo $SHELL /bin/bash #查看当前文件的所有的shell [13:56:10root@node1 ~]#cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin #切换shell [14:04:20root@node1 ~]#/bin/sh sh-4.2# #type 查类型 [14:06:17root@node1 ~]#type type type is a shell builtin [14:08:21root@node1 ~]#type enable enable is a shell builtin # echo $PATH 懒惰模式,找到一个以后其他的就不再找了 hash缓存在内存中 [root@node3 ~]# useradd haha [root@node3 ~]# type useradd useradd is hashed (/usr/sbin/useradd) [root@node3 ~]# hash hits command 2 /usr/sbin/useradd [root@node3 ~]# userdel haha [root@node3 ~]# hash 每次用一次即加一次,缓存的好处:加快效率,放在内存的数据都是临时的。缓存 的害处:不同步,得到的东西可能是过时的 hits command 2 /usr/sbin/useradd 1 /usr/sbin/userdel hash -d ping 如果移动了ping文件,那么用此命令清除ping命令的缓存 -r 清空所有的缓存 echo 不仅是外部命令,也是外部命令,因为用的频繁 [root@node3 ~]# type echo echo is a shell builtin [root@node3 ~]# enable -n echo 关闭echo命令 [root@node3 ~]# type echo echo is /usr/bin/echo [root@node3 ~]# enable -a echo [root@node3 ~]# type -a echo 不仅是外部命令,也是外部命令,因为用的频繁 echo is a shell builtin echo is /usr/bin/echo 内部命令:由shell自带的,而且通过某命令形式提供 外部命令:在文件系统路径下有对应的可执行程序文件 内部命令行直接在bash里面找。直接从内存中调用执行,速度快 help 列出所有的内部命令 退出终端;exit 或者 logout 外部命令:不是放在bash中,是看得见的,都在/bin 里面 #判断命令的类型 #type [root 11:30 AMcentos7 ~]#type who who is hashed (/bin/who) [root 11:34 AMcentos7 ~]#type help help is a shell builtin [root 11:34 AMcentos7 ~]#type type type is a shell builtin 优先级:内部命令 缓存里面的hash表 磁盘上的外部命令命令, 一个一个存放外部命令的路径, [root 11:40 AMcentos7 ~]#echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 从左向右的懒惰模式 hash表记录的是文件的路径,下一次就直接找hash里的 hash -r 清空缓存 hash -l 显示hash缓存,可作为输入使用 hash -p path name 将命令全路径path起别名为name hash -t name 打印缓存中name的路径 hash -d name 清除name缓存 #缓存的缺陷: 1.放在内存里面,临时性的,占用内存 2.不能及时生效,不同步
which和whereis命令
[root@node3 ~]# which ping /usr/bin/ping [root@node3 ~]# which help /usr/bin/which: no help in (/usr/local/tomcat/bin:/usr/java/latest/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/usr/local/apache2/bin) [root@node3 ~]# whereis which which: /usr/bin/which /usr/share/man/man1/which.1.gz #还可以查看帮助文档
命令别名
[root@centos8 ~]# alias 查看别名 [root@centos8 ~]# alias echo=hostname [root@centos8 ~]# echo centos8 [root@centos8 ~]# unalias echo 撤销别名 [root@centos8 ~]# type echo echo is a shell builtin [root@centos8 ~]# type echo echo is aliased to `hostname' # 别名优先级>内部命令>hash缓存>PATH变量的文件夹路径 #特殊:直接写路径更优先 #不用别名命令: \ 别名的配置文件: /etc/bashrc (针对所有的用户) 或者每个人的家目录 .bashrc (针对单个用户) [root 11:40 AMcentos7 ~]#alias alias mv='mv -i' 优先别名 alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' alias scan="echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host2/scan;echo - - - > /sys/class/scsi_host/host2/scan" #永久保存; 定义别名 如果想永久有效,要定义在配置文件中 仅对当前用户:~/.bashrc 对所有用户有效:/etc/bashrc [root 12:16 PMcentos7 ~]# vim .bashrc (只对当前的用户有效) /etc/bashrc 写里面改就影响所有的人 [root@centos8 ~]#echo "alias free='free -h'" >> .bashrc 编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件 source /path/to/config_file . /path/to/config_file #别名的优先级优先于内部命令 [root 12:17 PMcentos7 ~]#alias echo=hostname [root 12:19 PMcentos7 ~]#type alias alias is a shell builtin [root 12:19 PMcentos7 ~]#echo centos7 #不用别名,就用原来的命令: 方法一:unalias 撤销别名,当前shell有效 撤消别名:unalias unalias [-a] name [name ...] unalias -a #取消所有别名 方法二 \ 方法三:绝对路径 方法四: 是修改 ~/.bashrc 文件
范例: 永久生效写配置文件里面
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
[root@centos8 ~]#echo "alias free='free -h'" >> .bashrc
命令格式
linux 风格 -c GUN 风格 --all --human BSD 风格 短选项 :unix风格 长选项: GUN 风格 (gun is not Unix) 无选项: BSD 风格 #选项也有顺序 [root@node3 ~]# iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination [root@node3 ~]# iptables -Lvn iptables: No chain/target/match by that name. #斜线切割 [root@centos8 ~]# hostname centos8 [root@centos8 ~]# hostnamectl \ > set-hostname \ > centos8.wanghua.com [root@centos8 ~]# hostname centos8.wanghua.com
命令太长手动换行
命令太长了,书写不好看 [root 12:54 PMcentos7 ~]#hostnamectl \ > set-hostname \ > centos7.com [root 12:54 PMcentos7 ~]#hostname centos7.com 单词也可以切开 [root 12:56 PMcentos7 ~]#host\ > name centos7.com
查看发行版本
centos 查看发行版本
[root@centos8 ~]# cat /etc/os-release [10:38:59root@wh-virtual-machine ~]#cat /etc/os-release [10:53:24root@wh-virtual-machine ~]#lsb_release -a #该命令要安装 [root09:21 PMlocalhost ~]#yum install redhat-lsb-core -y #修改版本号安全,让黑客看不到真正的版本号 [root@centos8 ~]# cat /etc/centos-release CentOS Linux release 8.2.2004 (Core) [root@centos8 ~]# vim /etc/centos-release #查看版本号:centos是红帽公司开发的 [root@centos8 ~]# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core)
ubuntu查看发行版本
[root@ubuntu1804 ~]#cat /etc/os-release [root@ubuntu1804 ~]#cat /etc/issue [root@ubuntu1804 ~]#lsb_release -a
查看内核版本
[root@centos8 ~]# uname -a Linux centos8.wanghua.com 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [root@centos8 ~]# uname -r 查看内核的版本 4.18.0-193.el8.x86_64 ubuntu的内核版本要高一点,centos追求的企业用户,要求稳定 [10:31:33root@wh-virtual-machine ~]#uname -r 5.4.0-42-generic
查看硬件情况
#看CPU [10:31:58root@wh-virtual-machine ~]#lscpu Thread(s) per core: 1 #每个core 有几个线程 Core(s) per socket: 4 #每个槽位有4个 core Socket(s): 2 #服务器面板上有2个cpu 槽位 NUMA node(s): 2 #nodes的数量 NUMA node0 CPU(s): 0,2,4,6 #对应的core [root@centos8 ~]# cat /proc/cpuinfo #看内存 [root@centos8 ~]#cat /proc/meminfo [10:34:13root@wh-virtual-machine ~]#free total used free shared buff/cache available Mem: 976288 663084 145368 11148 167836 154276 Swap: 2097148 558336 1538812 [10:35:29root@wh-virtual-machine ~]#free -h 人类可以读懂的 total used free shared buff/cache available Mem: 953M 647M 138M 10M 167M 150M Swap: 2.0G 545M 1.5G [10:36:39root@wh-virtual-machine ~]#cat /proc/partitions major minor #blocks name [10:37:54root@wh-virtual-machine ~]#cat /proc/cpuinfo [10:37:54root@wh-virtual-machine ~]#cat /proc/meminfo #看硬盘分区 [root@centos8 ~]#lsblk [root@centos8 ~]#cat /proc/partitions
时间
系统时钟:由Linux内核通过CPU的工作频率进行的 硬件时钟:主板 date 来自于内核的时间 clock 来自于硬件的时间 clock -s 参考硬件时间 clock -w 参考系统时间 clock,hwclock: 显示硬件时钟 [root@centos8 ~]# ll `which clock` #互为软链接 lrwxrwxrwx. 1 root root 7 Jul 21 2020 /usr/sbin/clock -> hwclock [root@centos8 ~]# clock 2021-04-01 10:57:01.541102+08:00 [root@centos8 ~]# date Wed Apr 1 10:57:17 CST 2020 -s, --hctosys 以硬件时钟为准,校正系统时钟 -w, --systohc 以系统时钟为准,校正硬件时钟 [root@centos8 ~]# clock -s 以硬件时间为主 #date命令 -s 修改时间 [root@node3 da]# date -s '-1 day' Wed Mar 31 18:46:00 CST 2021 [root@centos8 ~]# date -s '-1 year' ( CST东八区) -u [root@centos8 ~]# date -u 显示UTC时间 Thu Apr 1 03:00:23 UTC 2021 +%s [root@node3 ~]# date +%s 显示1970年到现在的时间多久 1617272817 +%F_%H:%M:%S 或者+%F_%T [root@node3 ~]# date +%F_%H:%M:%S 2021-04-01_18:28:48 [root11:43 AMcentos7 ~]#date +%T 11:43:59 [root11:43 AMcentos7 ~]#date +%F 2021-04-18 -d [root@node3 ~]# date -d '-2 day' 显示2天前的时间 Tue Mar 30 18:29:53 CST 2021 [root@node3 ~]# date -d '2 day' 显示2天后的时间 Sat Apr 3 18:30:03 CST 2021 [root09:26 PMcentos7 ~]#date -d '-1 day' Sun Apr 18 21:26:18 EDT 2021 [root09:26 PMcentos7 ~]#date -d '-1 day' +%F 2021-04-18 [root09:26 PMcentos7 ~]#date -d '-1 day' +%T 21:26:37 [root11:44 AMcentos7 ~]#date -d now Sun Apr 18 11:44:38 EDT 2021 [root11:44 AMcentos7 ~]#date -d yesterday Sat Apr 17 11:45:14 EDT 2021 [root09:28 PMcentos7 ~]#date -d yesterday +%F 2021-04-18 #时间生成文件 [root@node3 da]# touch `date -d '-1 day' +%T`.log #昨天那个时间段的时分秒时间文件 #也可以用$()代替反引号 [root@node3 da]# touch `date -d '-1 day' +%F`.log 昨天那个时间段的年月日时间文件 [root@node3 da]# ls 18:42:49.log 2021-03-31.log #生成一个日期是昨天的文件 [root11:48 AMcentos7 ~]#touch `date -d "-1 day" +%F `.log [root11:49 AMcentos7 ~]#ls 11:47:20 11:47:55 11:48:51 17 2021-04-17.log 2021.log anaconda-ks.cfg Apr EDT Sat #修改时间 [root@node3 da]# date --help Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] (月天时分年.秒) #时区修改 [root@centos8 ~]# timedatectl list-timezones 列出所有的时区 该命令是centos7及其以上的版本 [root@centos8 ~]# timedatectl status Local time: Thu 2021-04-01 11:06:55 CST Universal time: Thu 2021-04-01 03:06:55 UTC RTC time: Thu 2021-04-01 03:06:55 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: no NTP service: active RTC in local TZ: no # 修改时钟区域 [root@centos8 ~]# timedatectl set-timezone Africa/Ceuta [root@centos8 ~]# timedatectl status Local time: Thu 2021-04-01 05:10:52 CEST Universal time: Thu 2021-04-01 03:10:52 UTC RTC time: Thu 2021-04-01 0 Time zone: Africa/Ceuta (CEST, +0200) System clock synchronized: no NTP service: active RTC in local TZ: no [root@centos8 ~]# ll /etc/localtime lrwxrwxrwx. 1 root root 34 Apr 1 05:10 /etc/localtime -> ../usr/share/zoneinfo/Africa/Ceuta [root@centos8 ~]# timedatectl set-timezone Asia/Shanghai [root@centos8 ~]# ll /etc/localtime lrwxrwxrwx. 1 root root 35 Apr 1 11:13 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai #日历 [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 #时区差: [root11:53 AMcentos7 ~]#date --utc Sun Apr 18 15:53:56 UTC 2021 [root11:53 AMcentos7 ~]#date Sun Apr 18 11:54:05 EDT 2021 3
关机和重启
注销:logout exit #关机: halt poweroff #重启 reboot -f: 强制,不调用shutdown -p: 切断电源 #关机或重启:shutdown -r: reboot -h: halt -c:cancel TIME:无指定,默认相当于+1(CentOS7) now: 立刻,相当于+0 +#: 相对时间表示法,几分钟之后;例如 +3 hh:mm: 绝对时间表示,指明具体时间 shutdown -c 取消关机 shutdown 一分钟以后就关机 shutdown -h now 立刻关机 poweroff 关机 shotdown -h 17:01 某时间关机 shutdown -h +1 1min以后关机 shutdown -r 11:00 十一点重启 reboot shutdown -r now 立刻重启
screen
备份数据库的时候,防止终端端口突然被人删除了
[root@node3 ~]# yum install screen -y 开启一个screen 即使xshell崩溃了也没有影响 [root@node3 ~]# screen -ls There is a screen on: 3387.pts-0.node3 (Detached) 1 Socket in /var/run/screen/S-root. [root@node3 ~]# screen -r 查看命令的执行状态 [root01:25 PMcentos7 ~]#ll /usr/sbin/halt lrwxrwxrwx. 1 root root 16 Apr 15 08:42 /usr/sbin/halt -> ../bin/systemctl
screen 同步:
打开一个终端A,输入screen -S wang 打开一个终端B 输入 screen -x wang 那么终端B里面输入的内容,终端A就同步了 终端B按 ctrl + a 以后松手再按 d
总结:screen的两个功能 :桌面共享 、后端运行
tmux
[root@node3 ~]# yum install tmux -y tmux ctrl+b," 上下分 即:按下ctrl和b 以后松手按 双引号 ctrl+b,% 左右分 即:按下ctrl和b 以后松手按 百分号 ctrl+b,方向键 即:按下ctrl和b 以后松手按 方向键就可以移动光标 窗口快捷键:
echo
E (默认)不支持 \ 解释功能 -n 不自动换行 -e 启用 \ 字符的解释功能启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出 \a 发出警告声 \b 退格键 \c 最后不加上换行符号 \e escape,相当于\033 \n 换行且光标移至行首 \r 回车,即光标移至行首,但不换行 \t 插入tab \\ 插入\字符 \0nnn 插入nnn(八进制)所代表的ASCII字符 \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii) [root06:59 PMcentos7 ~]#echo -e "\a" #发声 [root07:02 PMcentos7 ~]#sleep 5;echo -e "\a" 休息5秒就发声音 [root@centos8 ~]# ping -c10 127.0.0.1;echo -e '\a' \a 执行完命名了就响一声 [root07:02 PMcentos7 ~]#echo -e 'a\x0Ab' ab a b ab [root@centos8 ~]#echo -e '\033[43;31;1;5mmagedu\e[0m' magedu [root@centos8 ~]#echo -e '\x57\x41\x4E\x47' WANG [root@node3 ~]# echo -n "hello\nworld" -n不换行 hello\nworld[root@node3 ~]# echo -e "hello\nworld" -e支持 \t \n 内部换行 hello world [root@node3 ~]# echo "hello\nworld" 没有配合-e hello\nworld 一起用 -e 配合后面的转义 \n \t -n 不输出行尾换行符,接着后面的命令 [root10:02 PMcentos8 ~]#echo -n -e "hello\nword\nbady" hello word bady[root12:34 AMcentos8 ~]#echo -e "hello\nword\nbady" hello word bady [root@centos8 ~]#echo \$PATH $PATH [root@centos8 ~]#echo \\ \ [root@centos8 ~]#echo \\\ > [root@centos8 ~]#echo \\\\ \\ \t 水平制表位,八个字节 [root@localhost ~]# echo -e "*********\n*\t*\n*\t*\n*********" ********* * * * * ********* echo -e \t \t 插入一个水平制表符 #逃逸 \e escape [root11:11 PMcentos7 ~]#echo -e 'a\vb\vc\vd' a b c d -E 默认,不去理解转义功能 -n 默认换行,加了就不换行 [root@centos8 ~]# echo -n wanghua wanghua[root@centos8 ~]# -e 支持转义功能,配合: \n 换行 [root@centos8 ~]# echo -e wanghua\nhello wanghuanhello [root@centos8 ~]# echo -e 'wanghua\nhello' wanghua hello \t [root@centos8 ~]# echo -e 'wanghua\t\thello' wanghua hello [root@centos8 ~]# echo -e 'wanghua\thello' wanghua hello #生成序列 生成序列信息 (生成一行序列) 生成连续序列 echo {1..10} echo {01..100} [root09:32 PMcentos7 ~]#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 echo {A..Z} 生成不连续序列 echo {1..10..2} 奇数序列 [root09:34 PMcentos7 ~]# echo {1..10..2} 1 3 5 7 9 [root09:33 PMcentos7 ~]#seq 1 3 9 #步长写在中间 1 4 7 echo {2..10..2} 偶数序列 echo {www,bbs,blog} 生成组合序列 [root@oldboyedu tmp]# echo {A,B}{01,02} A01 A02 B01 B02 [root@oldboyedu tmp]# echo A{01,02} A01 A02 [root@oldboyedu tmp]# echo A{,02} A A02 echo 打印颜色 \E 等价于\033 [root@centos8 ~]# echo -e '\E[31m hello \E[0m' hello [root@centos8 ~]# echo -e '\E[31mhello\e[0m' hello [root@centos8 ~]# echo -e '\e[31mhello\e[0m' hello [root@centos8 ~]# echo -e '\033[31mhello\e[0m' hello [root@centos8 ~]# echo -e '\033[31mhello\033[0m' hello [root@centos8 ~]# echo -e '\e[4m hello \e[0m' hello [root09:47 AMcentos7 ~]#echo -e '\E[34;1m hello \E[0m' hello '\e[ \e[0m' PS1='\[\e[1;5;41;33m\][\u\@\h \w]\\$\[\e[0m\]' \e[1;5;41;33m\][\u\@\h \w]\\$\[\e[0m [root09:17 PMcentos8 ~]#PS1='\[\e[1;33m\][\u\@\h \w]\$\[\e[0m\]' [root09:36 PMcentos8 ~]#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 由于A..z是按照ascii表来的 $_ 上一个命令的最后一个参数 [root@centos6 yum.repos.d]# echo $SHELL /bin/bash [root@centos6 yum.repos.d]# 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@centos6 yum.repos.d]# /bin/dash 切换到不同的shell # # echo {a..z} 就没有识别{}的功能了 {a..z} {}无作用的原因: 要么当前的shell不支持,要么开关被关闭 [root09:45 PMcentos8 ~]#set +B [root09:46 PMcentos8 ~]#echo {a..z} {a..z} [root09:47 PMcentos8 ~]#set -B [root09:47 PMcentos8 ~]#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
bc
[root07:08 PMcentos7 ~]#bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. obase=2 #输出为二进制 91 1011011 [root07:12 PMcentos7 ~]#bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. ibase=8 #八进制转化为十进制 33 27
修改提示格式
[root06:36 PMcentos7 ~]##man ascii [root07:15 PMcentos7 ~]#echo $LANG en_US.UTF-8 [root07:17 PMcentos7 ~]#LANG=zh_CN.UTF-8 [root07:17 下午centos7 ~]#echo $LANG zh_CN.UTF-8 [root07:18 下午centos7 ~]#jj -bash: jj: 未找到命令 [root07:18 下午centos7 ~]#LANG=en_US.UTF-8 [root07:18 PMcentos7 ~]#echo $LANG en_US.UTF-8 [root07:18 PMcentos7 ~]#jj -bash: jj: command not found [root07:18 PMcentos7 ~]#
hexdump
[root07:25 PMcentos8 ~]#cat txt a 一 [root07:25 PMcentos8 ~]#he head help hexdump [root07:25 PMcentos8 ~]#hexdump -C txt 00000000 61 20 0a e4 b8 80 0a |a .....| 00000007 一 : 占三个字节。所以一个汉字最少占三个字节 0a: 是换行
编码转换和查询:
[root07:37 PMcentos8 ~]#echo -e '\0127' W #因为\0表示八进制,八进制是127相当于十进制的87,所以打印W
[root@c7-77]#rpm -q man-pages man-pages-3.53-5.el7.noarch
[root07:55 PMcentos8 ~]#yum list man* Last metadata expiration check: 1:41:14 ago on Tue 01 Jun 2021 06:14:31 PM CST. Installed Packages man-db.x86_64 2.7.6.1-17.el8 @anaconda man-pages.x86_64 4.15-6.el8 @BaseOS man-pages-overrides.noarch 8.3.0.2-2.el8 @AppStream Available Packages man-db-cron.noarch 2.7.6.1-17.el8 BaseOS [root07:55 PMcentos8 ~]#yum install man-pages Last metadata expiration check: 1:41:37 ago on Tue 01 Jun 2021 06:14:31 PM CST. Package man-pages-4.15-6.el8.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! #查看ascii [root07:56 PMcentos8 ~]#man ascii \x 表示十六进制 [root07:57 PMcentos8 ~]#echo -e "\x57\x41\x4E\x47" WANG #打印WANG [root07:58 PMcentos8 ~]#echo -e 'a\x0Ab' #因为0A表示16进制的换行 a b [root@c7-77]#echo $LANG en_US.UTF-8
AsCII 和Unicode 的区别
ASCII码 计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字 符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for Information Interchange) 码 ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0 Unicode 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,即ASCII编码,但是要处理 中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了 GB2312编码,用来把中文编进去。 全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就 会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码 为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个 很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对 应的二进制代码,至于这个二进制代码如何存储则没有规定
命令行扩展和被括起来的集合
{}
[root@centos8 ~]#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@centos8 ~]#echo {a..z..2} a c e g i k m o q s u w y [root@centos8 ~]# echo $_ himBHs [root@centos8 ~]# set +B 取消{}功能 [root@centos8 ~]# echo {1..5} {1..5} [root@centos8 ~]# set -B [root@centos8 ~]# echo {1..5} 1 2 3 4 5 * * 注意:第一:查看shell的情况 第二:+/-B
tab 键补全
命令的子命令补全,需要安装 bash-completion #路径补全 把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名 如果惟一:则直接补全 否则:再次Tab给出列表
双击Tab键
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令 (#打两次tab)
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录 (centos7 不支持)
=2Tab 相当于ls –A (centos7不支持)
命令行历史
参数
-c: 清空命令内存中的历史 [root09:24 PMcentos8 ~]#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 删除重复命令 [root@c7-57]#!-2 #执行倒数第二条命令 echo $HISTSIZE 1000 #历史最多显示1000条 [root@c7-57]#echo $HISTSIZE 1000 [root09:21 PMcentos8 ~]#cat /etc/profile |grep 1000 HISTSIZE=1000 #清空记录不留痕迹: 第一步:[root09:35 PMcentos8 ~]#rm -rf .bash_history 第二步:[root09:35 PMcentos8 ~]#history -c 第三步:关闭终端
范例:xshell中启动 alt 键
bash快捷键
搜索:ctrl + r esc键取消 !# 执行第#条命令 !-# 执行第倒数第#命令 !?STR 执行包含STR的命令 !STR 执行以STR开头的命令 [root@node3 ~]# ls /etc/issue /etc/passwd /etc/issue /etc/passwd [root@node3 ~]# cat !$ 前一个命令最后一个参数 cat /etc/passwd root:x:0:0:root:/root:/bin/bash [root@node3 ~]# ll !* 前一个命令所有的参数 [root@node3 ~]# ll /etc/issue /etc/passwd /etc/shadow -rw-r--r--. 1 root root 23 Dec 9 2015 /etc/issue -rw-r--r-- 1 root root 2379 Apr 1 08:48 /etc/passwd ---------- 1 root root 1921 Apr 1 08:48 /etc/shadow [root@node3 ~]# ll !:3 指定的某一个参数 ll /etc/shadow ctrl Esc +. 上一次命令的最后一个参数
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 + # 提示输入指定字符后,重复显示该字符#次
获得帮助
获取帮助的能力决定了技术的能力!
多层次的帮助
whatis command --help man and info /usr/share/doc/ Red Hat documentation 、Ubuntu documentation 软件项目网站 其它网站 搜索
man命令的操作方法
man 帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
... 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
man命令的操作方法:使用less命令实现
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K:向文件首部翻一行
q: 退出
#:跳转至第#行
1G: 回到文件首部
G:翻至文件尾部
/KEYWORD
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写
n:下一个
N:上一个
?KEYWORD
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写
n:跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
man 提供命令帮助的文件,手册页存放在/usr/share/man 几乎每个命令都有man的“页面 中文man需安装包 man-pages man-pages-zh-CN man 页面分组为不同的“章节”,统称为Linux手册,man 1 man 1:用户命令 2:系统调用 3:C库调用 4:设备文件及特殊文件 5:配置文件格式 6:游戏 7:杂项 8:管理类的命令 9:Linux 内核API man命令的配置文件 #CentOS 6 之前版 man 的配置文件 /etc/man.config #CentOS 7 之后版 man 的配置文件 /etc/man_db.conf #ubuntu man 的配置文件 /etc/manpath.config 列出所有帮助 man -a keyword 搜索man手册 #列出所有匹配的页面,使用 whatis 数据库 man -k keyword man命令的操作方法:使用less命令实现 space, ^v, ^f, ^F: 向文件尾翻屏 b, ^b: 向文件首部翻屏 d, ^d: 向文件尾部翻半屏 u, ^u: 向文件首部翻半屏 RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行 y or ^Y or ^P or k or ^K:向文件首部翻一行 q: 退出 #:跳转至第#行 1G: 回到文件首部 G:翻至文件尾部 /KEYWORD 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写 n:下一个 N:上一个 ?KEYWORD 以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写 n:跟搜索命令同方向,下一个 N:跟搜索命令反方向,上一个
[root@localhost ~]# man -k tcp 所有含有tcp三个字符的 clnttcp_create (3) - library routines for remote procedure calls clock_getcpuclockid (3) - obtain ID of a process CPU-time clock clock_getcpuclockid (3p) - access a process CPU-time clock (ADVANCED REALTIME) getcpu (2) - determine CPU and NUMA node on which the calling thread is running ip-tcp_metrics (8) - management for TCP Metrics nc (1) - arbitrary TCP and UDP connections and listens netcat (1) - arbitrary TCP and UDP connections and listens netinet_tcp.h (0p) - definitions for the Internet Transmission Control Protocol (TCP) pthread_getcpuclockid (3) - retrieve ID of a thread's CPU time clock pthread_getcpuclockid (3p) - access a thread CPU-time clock (ADVANCED REALTIME THREADS) sched_getcpu (3) - determine CPU on which the calling thread is running svctcp_create (3) - library routines for remote procedure calls tcp (7) - TCP protocol tcp_table (5) - Postfix client/server table lookup protocol tcpdump (8) - dump traffic on a network tcpslice (8) - extract pieces of and/or merge together tcpdump files xfs_rtcp (8) - XFS realtime copy command [root@c7-57]#man -k ascii [root@c7-57]#man -w ls /usr/share/man/man1/ls.1.gz
date
1、显示当前时间,格式:2016-06-18 10:20:30
[root11:54 PMubuntu ~]#date +"%F %T" 2021-06-01 23:54:39 [root11:54 PMubuntu ~]#touch `date +%F_%T`.log [root11:56 PMubuntu ~]#ls 2021-06-01_23:56:06.log
2、显示前天是星期几
[root12:00 AMubuntu ~]#date -d tomorrow Thu Jun 3 00:00:44 CST 2021 [root12:00 AMubuntu ~]#date -d yesterday Tue Jun 1 00:00:47 CST 2021 [root12:00 AMubuntu ~]#date -d yesterday Tue Jun 1 00:01:01 CST 2021 [root12:01 AMubuntu ~]#date -d '-2 day' Mon May 31 00:01:14 CST 2021 [root12:01 AMubuntu ~]#date -d '-1 day' Tue Jun 1 00:01:20 CST 2021 [root12:02 AMubuntu ~]#date -d '-2 day' +%w 1 [root09:02 AMcentos8 ~]#date -d '-2 day' "+%F 星期%w" 2021-05-31 星期1 或者 [root08:39 AMcentos8 ~]#date -d "-2 day" +%A Monday
3、设置当前日期为2019-08-07 06:05:10
月日时分年.秒
[root09:01 AMcentos8 ~]#date 080706052019.01 Wed Aug 7 06:05:01 CST 2019 [root06:05 AMcentos8 ~]#date +"%F %T" 2019-08-07 06:05:05 或者: [root09:05 AMcentos8 ~]#date -s "2019-08-07 06:05:10" Wed Aug 7 06:05:10 CST 2019 [root06:05 AMcentos8 ~]#date +"%F %T" 2019-08-07 06:05:36
+%s
[root12:07 AMubuntu ~]#date +%s 1622563688 [root12:08 AMubuntu ~]#date -d @`date +%s` Wed Jun 2 00:08:55 CST 2021 [root12:08 AMubuntu ~]#date -d @1622563688 Wed Jun 2 00:08:08 CST 2021 [root12:09 AMubuntu ~]#date -d @1622563688 +%F_%T 2021-06-02_00:08:08 [root12:10 AMubuntu ~]#date -d @1622563688 +"%F %T" 2021-06-02 00:08:08
-s 修改时间
[root12:14 AMubuntu ~]#date -s '-1 day' Tue Jun 1 00:14:40 CST 2021 [root12:14 AMubuntu ~]#date -s '1 day' Wed Jun 2 00:14:46 CST 2021
今天18:30自动关机,并提示用户。
shutdown -h 18:30 “dao dian guan ji,18:30” 如果想取消此操作输入: shutdown -c 或者: [root06:05 AMcentos8 ~]#shutdown -P 18:30 Shutdown scheduled for Wed 2019-08-07 18:30:00 CST, use 'shutdown -c' to cancel.
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~