Linux 命令总结

echo

功能说明

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用

语法

echo [选项]... [参数]...  

选项

-n 不输出末尾的换行符
-E 禁用反斜线转义 (default)
-e 启用反斜线转义
如果使用-e选项,若出现以下字符,则特别加以处理,而不会将它当成一般文字输出

\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号
\n 换行且光标移动到行首
\t 插入tab
\\ 插入\字符

实例

# 简单输出字符串
echo 'Hello CentOS'
Hello CentOS

# 输出命令的执行结果
echo "$(date +"%F")"
2021-03-08

# 输出多行字符串
echo -e 'Hello Linux\nHello CentOS'
Hello Linux
Hello CentOS

# echo的另类用法一:输出带有色彩的字符串
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
# \e[1;31m:将颜色设置为红色
# \e[0m:将颜色重置
# 颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

# echo的另类用法二:输出带有背景色的字符串
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
# 颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

# echo的另类用法三:输出闪动字符
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
# 红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

PS:
关于输出字符带颜色的,我们可以用一张原理图来理解
-c

参考文献

echo命令
echo 在shell及脚本中显示色彩及闪烁警告效果
Bash输出效果带闪烁

screen

功能说明

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能
会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用–即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似
多窗口
Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护

语法

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

选项

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业

常用screen参数

screen -S yourname  # 新建一个叫yourname的session
screen -ls  # 列出当前所有的session
screen -r yourname  # 回到yourname这个session
screen -d yourname  # 远程detach某个session
screen -d -r yourname  # 结束当前session并回到yourname这个session
screen -x yourname # 加入yourname这个session,共享session
# 如果当前的session是被占用的话,则无法使用 -r 恢复到这个session中,但可以使用 -x 参数加入到这个session中

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始

C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window
C-a p -> Previous,切换到前一个 window
C-a 0..9 -> 切换到第 0…9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time,显示当前时间,和系统的 load
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样

C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上

实例

# 安装screen
yum install screen

# 创建一个以hooper命名的screen窗口,并运行着ping命令
$ screen -S hooper ping www.baidu.com
[hooper@magedu-demo ~]$
PING www.a.shifen.com (182.61.200.6) 56(84) bytes of data.
PING www.a.shifen.com (182.61.200.6) 56(84) bytes of data.
64 bytes from 182.61.200.6 (182.61.200.6): icmp_seq=1 ttl=53 time=3.56 ms
64 bytes from 182.61.200.6 (182.61.200.6): icmp_seq=2 ttl=53 time=3.33 ms
64 bytes from 182.61.200.6 (182.61.200.6): icmp_seq=3 ttl=53 time=3.36 ms
64 bytes from 182.61.200.6 (182.61.200.6): icmp_seq=4 ttl=53 time=3.30 ms

# 暂时离开当前session,键盘按“Ctrl+a ---> d”
[hooper@magedu-demo ~]$ screen -S hooper ping www.baidu.com
[detached from 4812.hooper]

# 显示当前所有screen的会话
[hooper@magedu-demo ~]$ screen -ls
There is a screen on:
	4794.hooper	(Detached)
1 Socket in /var/run/screen/S-hooper.

# 恢复当前会话
[hooper@magedu-demo ~]$ screen -r hooper
[screen is terminating]

参考文献

screen命令

date

功能说明

date命令显示和设置系统时间

语法

date [选项] (参数)

选项

-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u 显示GMT

参数

<+时间日期格式>:指定显示时使用的日期时间格式
常用的日期格式字符串列表
%H 小时,24小时制(00~23)
%I小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%F 显示长日期,相当于年月日格式
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)

实例

# 格式化输出
[hooper@magedu-demo ~]$ date +"%F"
2021-03-11

# 显示昨天的日期
[hooper@magedu-demo ~]$ date -d "1 day ago" +"%F"
2021-03-10

# 显示下个月的日期
[hooper@magedu-demo ~]$ date -d "+1 month" +"%F"
2021-04-11

# 设置时间,生产环境中,尽量不修改时间。会造成服务器时间错误,而损失惨重
# 设置当前时间,只有root权限才能设置,其他只能查看
[hooper@magedu-demo ~]$ date
2021年 03月 12日 星期五 10:11:51 CST
[hooper@magedu-demo ~]$ date -s 10:00
date: 无法设置日期: 不允许的操作
2021年 03月 12日 星期五 10:00:00 CST

# 修改系统具体时间,不会对日期做出修改
[root@magedu-demo ~]# date
Fri Mar 12 10:13:05 CST 2021
[root@magedu-demo ~]# date -s 10:00
Fri Mar 12 10:00:00 CST 2021
[root@magedu-demo ~]# date
Fri Mar 12 10:00:01 CST 2021

# 修改系统日期,具体时间则默认为00:00:00
[root@magedu-demo ~]# date
Fri Mar 12 10:16:22 CST 2021
[root@magedu-demo ~]# date -s 20200501
Fri May  1 00:00:00 CST 2020
[root@magedu-demo ~]# date
Fri May  1 00:00:01 CST 2020

# 修改系统的具体时间及指定日期
[root@magedu-demo ~]# date
Fri Mar 12 10:18:37 CST 2021
[root@magedu-demo ~]# date -s "18:00:00 2028-02-28"
Mon Feb 28 18:00:00 CST 2028
[root@magedu-demo ~]# date
Mon Feb 28 18:00:01 CST 2028

# 扩展:查看硬件时间
clock
Fri 12 Mar 2021 10:19:30 AM CST  -0.385782 seconds
# 将系统时间写入到硬件时间中
# system time ---> hardware clock
clock -w
# 将硬件时间写入到系统时间中
# hardware clock ---> system time
clock -s

参考文献

date命令

ifconfig

功能说明

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了

语法

ifconfig [选项] [参数]

选项

add<ip地址>:设置网络设备IPv6的ip地址;
del<ip地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
<hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;
io_addr<I/O地址>:设置网络设备的I/O地址;
irq<IRQ地址>:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称

实例

# 显示网络设备信息
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.168.66  netmask 255.255.255.0  broadcast 192.168.168.255
        ether 52:54:00:ed:e8:61  txqueuelen 1000  (Ethernet)
        RX packets 2125878  bytes 2609714626 (2.4 GiB)
        RX errors 0  dropped 55129  overruns 0  frame 0
        TX packets 188130  bytes 18963638 (18.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 166  bytes 17432 (17.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 166  bytes 17432 (17.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# 启动、关闭eth0网卡
ifconfig eth0 up
ifconfig eth0 down

# 修改ip地址
ifconfig eth0 192.168.168.68 netmask 255.255.255.0

export

功能说明

export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本

语法

export (选项) (参数)

选项

-f:代表[变量名称]中为函数名称
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中
-p:列出所有的shell赋予程序的环境变量

参数

变量:指定要输出或者删除的环境变量

实例

# 查看已经存在的环境变量
export
declare -x CLASSPATH=".:/usr/local/java/lib:/usr/local/java/jre/lib"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="999999999"
declare -x HISTTIMEFORMAT="%F %T root "
declare -x HOME="/root"
declare -x HOSTNAME="magedu-demo"
declare -x JAVA_HOME="/usr/local/java"
declare -x JRE_HOME="/usr/local/java/jre"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x TERM="xterm-256color"
declare -x USER="root"
declare -x XDG_SESSION_ID="232"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值