技术流ken

运维拯救世界

1905课堂记录:高级命令

day1复习

 

1,ls

列出当前目录下的文件

选项:

-l

-h

-d

-a

 

2,man

man CMD

 

3. pwd

显示当前的工作目录

 

4. cd

切换工作目录

~

cd

..

 

5. touch

创建文件

 

6.mkdir

创建目录

-p

 

7. rm

删除文件

 

-r

-f

 

8. rmdir

删除空目录

 

9.echo

-e 解释特殊字符

 

10.cat

-n

 

11. more

12. less

13 tail

-f

 

14.head

head -3

 

15 clear

ctrl+l

ctrl+c

 

16.reboot

17.poweroff

18.cp

-a

-r

-p

19.mv

 

1.alias

设置和查看别名

 

例子1:查看别名

[root@ken3 ~]# 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’

 

例子2:设置别名

[root@ken3 ~]# alias ken=”ls -l”‘

[root@ken3 ~]# ken
total 10852
-rw——-. 1 root root 1246 Apr 4 06:53 anaconda-ks.cfg
-rw-r–r– 1 root root 11101732 Jan 25 14:51 apache-tomcat-9.0.14.zip
-rw-r–r– 1 root root 78 Jul 8 11:37 hello_w.sh
drwxr-x— 2 root root 24 Jul 8 11:10 logs
-rw-r–r– 1 root root 0 Jun 18 19:18 test

 

 

2. unalias

[root@ken3 ~]# unalias rm

 

注意:以后在接手一台服务器的时候要看一下已经设置了哪些别名!

 

3,uname

 

查看主机信息

-a 显示所有的信息

-r  显示内核版本号

例子1:查看主机信息

[root@ken3 ~]# uname -a
Linux ken3 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

 

例子2:查看内核版本号

[root@ken3 ~]# uname -r
3.10.0-862.el7.x86_64

 

 

4. hostname

 

查看和设置主机名

例子1:查看主机名

[root@ken3 ~]# hostname
ken3

 

例子2:设置主机名

[root@ken3 ~]# hostname ken

 

注意:hostname修改的主机名是立即生效但是重启系统就失效了

 

如果不想开机失效的话可以写入到配置文件/etc/hostname

[root@ken ~]# echo “ken” > /etc/hostname
[root@ken ~]# cat /etc/hostname
ken

 

5.hostnamectl

设置主机名

设置的主机名立即生效而且重启系统依然有效

 

 

例子1:设置主机名立即且永久有效

[root@ken ~]# hostnamectl set-hostname ken1

 

6. history

显示执行过的命令

[root@ken1 ~]# history

 

 

特殊用法:

[root@ken1 ~]# !c

 

 

7.which

显示命令的完整路径

命令都是一个可以执行的文件

[root@ken1 ~]# which ls
/usr/bin/ls
[root@ken1 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117672 Apr 11 2018 /usr/bin/l

 

可以查看命令依赖于那个程序!

 

 

8.wc

统计文本信息

 

-l 统计行数

-w 单词数

-c 统计字符

 

例子1:统计当前系统中有多少用户

[root@ken1 ~]# wc -l /etc/passwd
20 /etc/passwd

 

例子2:统计单词数

[root@ken1 ~]# echo “this is ken” | wc -w
3

 

例子3:统计字符

[root@ken1 ~]# echo “this is ken” | wc -c
12
[root@ken1 ~]# printf “this is ken” | wc -c
11

 

9. w

显示当前登录的用户

[root@ken1 ~]# w
23:08:37 up 9 min, 3 users, load average: 0.00, 0.01, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.163.1 22:59 5.00s 0.36s 0.01s w
root pts/1 192.168.163.1 23:08 6.00s 0.01s 0.01s -bash
root pts/2 192.168.163.1 23:08 1.00s 0.00s 0.00s -bash

 

主要关注:

登录用户

登录IP

 

10. who

[root@ken1 ~]# who
root tty1 2019-07-09 23:11
root pts/0 2019-07-09 23:12 (192.168.163.1)
root pts/1 2019-07-09 23:08 (192.168.163.1)
root pts/2 2019-07-09 23:08 (192.168.163.1)

 

11.whoami

显示当前登录的用户

例子1:

[root@ken1 ~]# whoami
root

 

 

12. ping

测试主机是否在线

-c 发送包的数量

-i  发送包的间隔数

-w 超时等待时间

 

例子1:测试本机是否可以通外网

[root@ken245 ~]# ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=52 time=33.1 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=52 time=33.1 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=3 ttl=52 time=33.1 ms

 

例子2:发送两个包

[root@ken245 ~]# ping -c 2 baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=52 time=33.1 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=52 time=33.1 ms

— baidu.com ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 33.145/33.148/33.151/0.003 ms

 

例子3:指定发送包的间隔时间为3秒钟

[root@ken245 ~]# ping -c 3 -i 5 baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=52 time=33.1 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=52 time=33.1 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=3 ttl=52 time=33.1 ms

— baidu.com ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 10010ms
rtt min/avg/max/mdev = 33.127/33.134/33.145/0.007 ms

 

 

例子4:指定超时等待时间

[root@ken245 ~]# ping -w 1 google.com
PING google.com (172.217.24.14) 56(84) bytes of data.

— google.com ping statistics —
2 packets transmitted, 0 received, 100% packet loss, time 999ms

 

13.kill

 

终止进程

-9 强制终止进程

格式:

kill -9 pid

默认是-15 不是立即退出。完成自己的工作后退出!

 

例子1:关掉进程

kill -9 1818

 

14;du

查看文件和目录的大小

-h 人类易读的方式显示文件大小

-s 目录的总大小

 

du查看的是文件占用的block块大小

ls -lh才是文件的实际大小

 

例子1:

[root@ken1 ~]# du -h anaconda-ks.cfg
4.0K anaconda-ks.cfg

[root@ken1 ~]# ls -lh anaconda-ks.cfg
-rw——-. 1 root root 1.3K Apr 4 06:53 anaconda-ks.cfg

 

例子2:查看目录总大小

[root@ken1 ~]# du -sh /etc
31M /etc

 

 

15.df

显示查看磁盘的大小及挂载点

 

-h 人类易读的方式显示文件大小

例子1:

[root@ken1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.3G 16G 8% /
devtmpfs 224M 0 224M 0% /dev
tmpfs 236M 0 236M 0% /dev/shm
tmpfs 236M 5.6M 230M 3% /run
tmpfs 236M 0 236M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
tmpfs 48M 0 48M 0% /run/user/0

 

16.free

显示内存信息

-h 人类易读的方式

-m  以M单位显示

 

例子1:

 

[root@ken1 ~]# free -h
total used free shared buff/cache available
Mem: 470M 83M 255M 5.5M 131M 341M
Swap: 2.0G 0B 2.0G

 

17.date

显示和设置系统时间

 

例子1:查看时间

[root@ken1 ~]# date
Tue Jul 9 23:54:29 CST 2019

 

例子2设置时间

[root@ken1 ~]# date -s “2019-7-9 15:54:00”
Tue Jul 9 15:54:00 CST 2019
[root@ken1 ~]# date
Tue Jul 9 15:54:01 CST 2019

例子3:格式化输出时间

%Y 年

%m 月

%d 天

%H 小时

%M 分钟

%S 秒

[root@ken1 ~]# date “+%Y/%m/%d %H:%M:%S”
2019/07/09 15:55:55

 

例子4:

%F 年月日

%T 时分秒

[root@ken1 ~]# date “+%F %T”
2019-07-09 15:57:23

 

绝对路径vs相对路径

 

在Linux系统中另外还有一个重要的概念—路径。

路径指的是如何定位到某个文件,分为绝对路径与相对路径。

绝对路径指的是从根目录(/)开始写起的文件或目录名称

相对路径则指的是相对于当前路径的写法。

 

输出重定向

>:覆盖输出,会覆盖掉原先的文件内容

>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

2>:错误输出,会覆盖掉原先的文件内容

2>>:错误追加输出,会覆盖掉原始文件内容,会在原始内容末尾继续添加

&>:将标准输出与错误输出共同写入到文件中。覆盖原有内容

&>>:将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

 

例子1:覆盖输出

[root@ken1 ~]# echo “222” > test
[root@ken1 ~]# cat test
222

 

例子2:追加输出

[root@ken1 ~]# echo “222” >> test
[root@ken1 ~]# echo “222” >> test
[root@ken1 ~]# echo “222” >> test
[root@ken1 ~]# echo “222” >> test
[root@ken1 ~]# cat test
222
222
222
222

 

例子3:错误覆盖

[root@ken1 ~]# ken 2> test
[root@ken1 ~]# ken 2> test
[root@ken1 ~]# ken 2> test
[root@ken1 ~]# ken 2> test
[root@ken1 ~]# ken 2> test
[root@ken1 ~]# cat test
-bash: ken: command not found

 

例子4:错误追加

[root@ken1 ~]# ken 2>> test
[root@ken1 ~]# ken 2>> test
[root@ken1 ~]# ken 2>> test
[root@ken1 ~]# ken 2>> test
[root@ken1 ~]# ken 2>> test
[root@ken1 ~]# cat test
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found
-bash: ken: command not found

 

 

总结:只要是一个>都是覆盖,

只要是两个>>都是追加,无论是正确还是错误输出

 

 

例子5:无论是错误的还是正确的都输出倒文件中

[root@ken1 ~]# ls &>> test
[root@ken1 ~]# cat test
2
anaconda-ks.cfg
test
test2
-bash: ken: command not found
2
anaconda-ks.cfg
test
test2

 

输入重定向

 

<

 

[root@ken1 ~]# wc -l < /etc/passwd
23

 

 

管道符

 

管道命令符(|)的作用是把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。

一条命令中管道符可以使用多个,只要前面的命令有输出结果,管道符后面的命令即可再执行!

 

例子1:

[root@ken1 ~]# cat /etc/passwd | wc -l
23

 

例子2:

[root@ken245 ~]# cat /var/log/nginx/access.log | awk ‘{print $1}’ | sort | uniq -c | sort -rn | head -3

501 61.148.243.143
118 114.242.248.85
110 122.71.224.158

 

通配符

 

* 表示匹配的任意内容,可以是0个也可以是很多个字符

? 表示匹配单个字符,必须存在

[] 表示匹配括号里面的任意一个字符

 

例子1:找到所有以/dev/sda开头的文件

[root@ken1 ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdaken

 

例子2:找到以/dev/sda开头并且后面跟一个字符的文件

[root@ken1 ~]# ls /dev/sda?
/dev/sda1 /dev/sda2

 

例子3:找到以/dev/sda开头并且后面跟一个数字的文件

[root@ken1 ~]# ls /dev/sda[0-9]
/dev/sda1 /dev/sda2

 

例子4:找到以/dev/sda开头并且后面跟一个字母的文件
[root@ken1 ~]# ls /dev/sda[a-z]
/dev/sdan

 

例子5.

[root@ken1 ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdaken /dev/sdan
[root@ken1 ~]# ls /dev/sda[ken]
/dev/sdan

 

注意:不要把中括号里面的字符当做一个整体,二是匹配中括号里面的单个字符

 

例子6:删除当前目录中所有以test开头的文件

[root@ken1 ~]# ls
2 anaconda-ks.cfg test test1 test2
[root@ken1 ~]# rm -rf test*
[root@ken1 ~]# ls
2 anaconda-ks.cfg

 

 

发表评论

电子邮件地址不会被公开。