1、目录相关命令的使用
pwd(printing working directory) 显示当前工作目录
pwd命令相关的环境变量:
PWD 保存了当前工作目录路径
OLDPWD 保存了上一次工作目录路径
每次执行pwd命令就是去读取PWD的值
cd(change directory) 改变工作目录
语法格式 cd [/PATH/TO/SOMEDIR]
cd或cd~ 切换回当前用户的家目录
cd ~USERNAME 切换至指定用户的家目录(管理员能执行)
cd - 在上一次所在目录与当前目录之间来回切换
cd .. 返回上一级目录
ls(list) 显示指定路径下的文件列表
语法格式:ls [OPTION]... [FILE]...
选项:
-a 显示所有文件,包括隐藏文件
-A 显示除 . 和 .. 之外的所有文件
-l 长格式列表,即显示文件的详细属性信息
--color 显示颜色(不同类型文件显示为不同颜色)
-d 显示目录自身的属性,通常与-l同时使用
-i 显示文件的inode号(index node)
-h 文件大小以人类易读格式显示
-r reverse逆序显示;默认是以升序显示
-R recursive递归显示;如果一个目录里有子目录,则同时也显示其子目录中的文件
-Sl 文件由大到小排序
-Slr 文件由小到大排序 配合 l
-t 按修改时间排序,-Slt 等配合l,S,r等排序
2、文件查看类命令
cat:文件查看类工具
格式:cat [OPTION]... [FILE]...
选项:
-A 显示所有非正常的所有符号
-E 显示行结束符$
-T 显示制表符
-v 显示其他的非打印字符
-e 等于-vE
-n 对显示的行进行编号,与文件内容没有联系
-b 打印出行号(空白行不标行号)
-s 将多个连续的空白行合并显示一个空白行
tac 逆序显示文件内容(逆序行)
rev 逆序显示每行字符(逆序列)
file 查看文件内容类型格式
演示:
cat、tac、rev命令的区别
[root@centos7 ~]# echo "123456789" > /testdir/f1
[root@centos7 ~]# ll /testdir/f1
-rw-r--r-- 1 root root 10 2月 11 16:29 /testdir/f1
[root@centos7 ~]# cat /testdir/f1
123456789
[root@centos7 ~]# tac /testdir/f1
123456789
[root@centos7 ~]# rev /testdir/f1
987654321
[root@centos7 ~]# ls > /testdir/f2
[root@centos7 ~]# cat /testdir/f2
anaconda-ks.cfg
Desktop
Discuz
Documents
Downloads
lnamp
MHA
Music
nginx
Pictures
Public
Templates
Videos
zabbix-agent
zabbix-proxy
[root@centos7 ~]# tac /testdir/f2
zabbix-proxy
zabbix-agent
Videos
Templates
Public
Pictures
nginx
Music
MHA
lnamp
Downloads
Documents
Discuz
Desktop
anaconda-ks.cfg
[root@centos7 ~]# rev /testdir/f2
gfc.sk-adnocana
potkseD
zucsiD
stnemucoD
sdaolnwoD
pmanl
AHM
cisuM
xnign
serutciP
cilbuP
setalpmeT
soediV
tnega-xibbaz
yxorp-xibbaz
file命令
[root@centos7 ~]# file /etc/fstab
/etc/fstab: ASCII text
[root@centos7 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
3、echo回显命令
功能:显示字符
语法:echo [-neE] [字符串]
说明:echo会将输入的字符串输出到标准输出,并在最后加上换行号
-n 不为显示内容自动换行,默认都会自动换行显示
-e 参数来使转义字符生效(字符串一定要加引号)
\\ 输出\本身
\a 输出警告音
\b 退格键,也就是向左删除键
\c 取消输出行末的换行符,和“-n”选项一致
\e ESC(换码符)
\f 换页符
\n 换行符
\r 回车键
\t 制表符,也是Tab
\v 垂直制表符,换行但光标仍旧停留在原来的位置
\0nnn 按八进制ASCII码表输出字符。其中0为数字零,nnn为三位八进制数
\xhh 按十六进制ASCII码表输出字符,其中hh为十六进制数
改变输出内容颜色和格式:\e也可以用\033替代因为都是表示的换码符
echo -e "\e[1;5;31;47m abc \e[0m"
输出abc的颜色\e[表示颜色输出开始;后跟多个格式参数用分号隔开(1表示输出为粗体,5表示文字闪烁,31表示前景色为红色,47表示背景色为白色);abc表示要输出的信息;\e[表示颜色输出结束;0m表示恢复为默认输出格式(如果后面不加0m,命令行所有显示会一直以定义的格式显示)
输出颜色格式定义:3开头表示前景颜色,4开头表示背景颜色:
30m=黑色 31m=红色 32m=绿色 33m=黄色 34m=蓝色 35m=洋色 36m=青色 37m=白色
40m=黑色 41m=红色 42m=绿色 43m=黄色 44m=蓝色 45m=洋色 46m=青色 47m=白色
4、关机或重启命令
管理类命令
关机:halt、poweroff、shutdown、init 0
重启:reboot、shutdown、init 6
用户登录信息:who、whoami、w
halt和poweroff:两者都是关机命令
halt 关机但不断电
poweroff 关机后并断电
-f 强制关机,相当于切断电源(不会调用shutdown进行安全关机操作)
reboot:一般情况下是调用shutdown进行关机重启
-f 强制(不会调用shutdown进行安全关机操作)
-p 切断电源
shutdown:关机或重启
格式:shutdown [OPTION...] [TIME] [WALL...]
-r reboot 重启
-h halt 关机
-c cancle 取消关机
-k 发行警告但是不执行关机操作
时间格式:
now 立刻
+# 相对时间表示法,#分钟后执行操作,例如:+3分钟
hh:mm 绝对时间表示,到具体时间后关机
wall:在所有终端显示其输入的内容,例如:wall "shutdown now"
演示:
# 在5分钟后重启,会通知给所有人
[root@centos7 ~]# shutdown -r +5
Shutdown scheduled for 三 2017-02-08 09:35:05 CST, use 'shutdown -c' to cancel.
[root@centos7 ~]#
Broadcast message from root@centos7 (Wed 2017-02-08 09:30:05 CST):
The system is going down for reboot at Wed 2017-02-08 09:35:05 CST!
#取消关机,也会通知给所有人
[root@centos7 ~]# shutdown -c
[root@centos7 ~]#
Broadcast message from root@centos7 (Wed 2017-02-08 09:30:45 CST):
The system shutdown has been cancelled at Wed 2017-02-08 09:31:45 CST!
# 加wall可显示自定义的语句
[root@centos7 ~]# shutdown -r +5 "hello everyone"
Shutdown scheduled for 三 2017-02-08 09:41:27 CST, use 'shutdown -c' to cancel.
[root@centos7 ~]#
Broadcast message from root@centos7 (Wed 2017-02-08 09:36:27 CST):
hello everyone
The system is going down for reboot at Wed 2017-02-08 09:41:27 CST!
5、与登录相关的命令
whoami 显示当前登录用户的用户名
w 系统当前所有的登录会话及所做的操作
tty 显示当前终端对应终端设备文件
who 显示当前系统所有登录用户名、终端类型、登录时间;如果是远程登录会显示登录IP地址
-b 系统此次启动的时间
-r 显示运行级别
演示:
[root@centos7 ~]# whoami
root
[root@centos7 ~]# who
root tty1 2017-02-08 09:26
root pts/0 2017-02-08 08:57 (192.168.1.104)
root pts/1 2017-02-08 09:30 (192.168.1.104)
root pts/2 2017-02-08 10:15 (192.168.1.104)
root pts/3 2017-02-08 10:18 (192.168.43.174)
root pts/4 2018-07-07 10:10 (192.168.1.104)
[root@centos7 ~]# who -b
系统引导 2017-02-08 15:48
[root@centos7 ~]# who -r
运行级别 3 2017-02-08 08:29
[root@centos7 ~]# w
11:02:39 up 2:32, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN @ IDLE JCPU PCPU WHAT
root tty1 09:26 1:02m 0.08s 0.08s -bash
root pts/0 192.168.1.104 08:57 1:25m 0.17s 0.17s -bash
root pts/1 192.168.1.104 09:30 1:32m 0.04s 0.04s -bash
root pts/2 192.168.1.104 10:15 47:11 0.05s 0.05s -bash
root pts/3 192.168.43.174 10:18 ? 0.26s 0.26s -bash
root pts/4 192.168.1.104 10:10 ? 0.10s 0.01s w
6、与日期相关的命令
date 显示时间和日期
格式:date[OPTION]...[+FORMAT]
按指定格式显示时间
date[+FORMAT]
%D 直接显示日期 mm/dd/yy ("Y"长格式年,"y"短格式年)
%F 直接显示日期(YY-mm-dd)
%T 直接显示时间(hh:mm:ss24小时制)
%Y 完整年份(0000-9999)
%m 显示月份
%d 日
%A 星期几(Sunday-Saturday)
%a 星期几(Sun-Sat)
%w 一周中的第几天
%H 显示小时
%M 显示分钟
%S 显示秒
%s 现在距离1970年1月1号0点0分(unix元年)的秒数,timestamp(时间戳)
设置时间
格式:date MMDDhhmm[CC]YY[.ss]
MM 月份
DD 日
hh 小时
mm 分钟
CC 两位年份
CCYY 四位年份
ss 秒
-s 通过指定字符串设置时间
显示当前时间的时间戳
date +%s
将指定时间转换为时间戳的格式
date --date "Thu Nov 18 08:07:21 IST 2010" +%s
获取指定时间是星期几
date --date "Jan 20 2001" +%A
Linux的两个时钟
系统时钟:由Linux内核通过cpu的工作频率进行计时
硬件时钟:就是主板bios提供的时钟,由主板电池供电来维持运行
date 显示的是系统时间;
hwclock或clock 显示的是硬件时钟
-s --hctosys以硬件时钟为准,将硬件时钟写入到系统时钟(校正系统时钟)
-w --systohc以系统时钟为准,将软件时钟写入到硬件时钟(校正硬件时钟)
演示:
常用格式的日期显示
[root@centos7 ~]# date +%D
02/08/17
[root@centos7 ~]# date +%F
2017-02-08
[root@centos7 ~]# date +%T
10:20:00
[root@centos7 ~]# date +%Y
2017
[root@centos7 ~]# date +%m
02
[root@centos7 ~]# date +%d
08
[root@centos7 ~]# date +%A
星期三
[root@centos7 ~]# date +%a
三
[root@centos7 ~]# date +%w
3
[root@centos7 ~]# date +%H
10
[root@centos7 ~]# date +%M
21
[root@centos7 ~]# date +%S
24
[root@centos7 ~]# date +%s
1486520492
完整格式的日期显示:
[root@centos7 ~]# date "+现在的时间是:%Y-%m-%d %H:%M:%S"
现在的时间是:2017-02-08 10:23:29
[root@centos7 ~]# date "+现在的时间是:%F %H:%M:%S"
现在的时间是:2017-02-08 10:24:33
[root@centos7 ~]# date "+现在的时间是:%F %H:%M:%S %A"
现在的时间是:2017-02-08 10:24:51 星期三
如果要显示的时间不是当前时间,而是经过运算的时间,则可以使用-d选项,如下:
# 显示3年前的时间
[root@centos7 ~]# date "+%F %H:%M:%S" -d "-3 year"
2014-02-08 10:26:08
# 显示3个月后的时间
[root@centos7 ~]# date "+%F %H:%M:%S" -d "+3 month"
2017-05-08 10:26:24
# 显示10天后的时间
[root@centos7 ~]# date "+%F %H:%M:%S" -d "+10 day"
2017-02-18 10:26:42
有时候需要获取当前时间距离1970年0时0分0秒经历的秒数,保存在变量中,如下:
[root@centos7 ~]# time=`date "+%s"`
[root@centos7 ~]# echo $time
1486520847
设置时间
[root@centos7 ~]# date -s "20180707 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST
[root@centos7 ~]# date -s "2018-07-07 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST
[root@centos7 ~]# date -s "2018/07/07 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST
系统时钟和硬件时钟
# 系统时钟
[root@centos7 ~]# date
2018年 07月 07日 星期六 10:26:42 CST
#硬件时钟
[root@centos7 ~]# clock
2017年02月08日 星期三 10时47分46秒 -0.292560 秒
[root@centos7 ~]# hwclock
2017年02月08日 星期三 10时47分53秒 -0.479196 秒
# 硬件时钟校正系统时钟
[root@centos7 ~]# clock -s
[root@centos7 ~]# date
2017年 02月 08日 星期三 10:48:24 CST
cal 显示当前日历,默认显示当前月份的日历
cal [YY] 显示指定年份的日历如:cal 09 2017
演示:
[root@centos7 ~]# cal
二月 2017
日 一 二 三 四 五 六
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
7、type、alias、which和whereis命令
type
格式:type COMMAND
如果是内部命令显示为"builtin"
如果是外部命令显示命令文件的路径
注意:命令可以有别名,别名可以与原名相同,此时原名被隐藏,此时如果要运行原命令,则使用 \COMMAND
alias 命令别名
alias 显示所有定义的别名
alias NAME='COMMAND' 定义别名(仅对当前shell有效)
unalias NAME 撤销别名
which 显示应用程序文件位置
格式:which COMMAND
注意:有时候一个命令还有其他的别名,但我们先看命令本身,而非别名,此时可以使用:
which --skip-alias 禁止使用别名,直接使用原始命令
whereis
作用:whereis - locate the binary, source, and manual page files for a command
格式:whereis [options] name...
选项:
-b 仅搜索二进制程序路径
-m 仅搜索使用手册文件路径
演示:
type
[root@centos7 ~]# type cd
cd 是 shell 内嵌
[root@centos7 ~]# type date
date 已被哈希 (/usr/bin/date)
[root@centos7 ~]# type tree
tree 是 /usr/bin/tree
[root@centos7 ~]# type ls
ls 是 `ls --color=auto' 的别名
wKioL1iazijg7shYAAAse_IY3-U276.png
which
[root@centos7 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@centos7 ~]# which --skip-alias ls
/usr/bin/ls
whereis
[root@centos7 ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
alias
[root@centos7 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
8、screen命令远程控制
一个终端下打开多个屏幕,并剥离屏幕与终端的关系,终端关闭也不会影响屏幕下的进程
使用方法:
screen -S [session 会话] 打开screen
screen -x [session 会话] 加入screen
exit 退出并关闭screen
Ctrl+a,d 剥离当前screen
screen -ls 显示所有已经打开的screen
screen -r SCREEN_ID 连接指定screen