linux基础之进阶命令二

本节内容

基础命令二:

1.      alias:查看和设置别名(alias:别名)

alias 'ren=ls -ld'

\ren 可不取消别名,执行ren原本的命令 

2.      unalias:取消别名

unalias ren

3.      uname:查看系统信息

              -r:查看内核release释放、发布--显示操作系统发行版本

              -a:查看所有信息

4.      hostname:查看和设置主机名(立即生效,但是重启失效)

              hostname ren

5.      hostnamectl set-hostname ren (立即生效,重启也生效)

6.      history:显示历史命令(1000

              grep -i "hist" /etc/profile  #在这个文件中可以进行设置

              HISTSIZE=1000

             !缩写(后面 + 某个字母(命令首字母),

          可执行最近第一个以该字母开头的命令(history中从下往上数))

7.      which:显示命令的路径

8.      wc:统计信息

              -l: 统计行数(line

              -c: 统计字符数(character

              -w: 统计单词(word

9.      w 显示当前登陆的用户信息

             USER  TTY  FROM   LOGIN@  IDLE   JCPU   PCPU WHAT

10.   who:显示正在登陆的用户

11.   whoami:显示当前登陆的用户(who am i

12.   ping:测试主机在线

              -c: count  指定发送包的次数

              -i: intervel  间隔时间

              -w: wait  超时等待时间

13.   kill: 终止进程

              kill -15/-9 PID (唯一标识一个进程)

14.   du:查看文本大小(实际大小)

              -s: 查看目录总大小summarize

              -h: 人类易读(human readable

15.   df:查看磁盘使用情况(查看挂载点)disk free

              -h: 人类易读

16.   free:查看内存使用情况

              -h

              -m M为单位显示

              -s 刷新显示([-s delay ]连续抽样显示)

17.   date:查看和设置系统时间

              -s:设置时间(+日期,只设置日期;+时间,只设置时间;

              +日期时间,设置日期时间;设置完成后可使用clock -w锁定)

              %Y 

              %m 

              %d 

              %H 

              %M 

              %S 

              %F:年月日

              %T:时分秒

             

高级命令进阶:

1.      输出重定向

              >: 正确覆盖输出

              >>: 正确追加输出

              2>: 错误覆盖输出

              2>>: 错误追加输出

              &>: 正确和错误覆盖输出

              &>>: 正确和错误追加输出

2.      输入重定向

              <

3.      管道符

                |

           前一个命令的输出作为下一个命令的输入

           前面命令输出的结果,交给后面的命令继续处理

4.      通配符

                 * 表示匹配0或者多个

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

                 [0-9]: 表示匹配0-9之间的一个数字

                 [123]: 表示匹配1或者2或者3

                 [a-z]: 表示匹配a-z之间的一个字母

                 [abc]: 表示匹配a或者b或者c

                 [A-Z]:表示匹配A-Z之间的一个字母

                 [0-9a-zA-Z]:表示匹配0-9a-zA-Z之间的一个字母

5.      /

              /root: root用户家目录

              /home: 普通用户家目录

              /media 挂载光盘

              /etc: 存放配置文件

              /tmp: 共享临时文件

              /var: 放置经常变动的文件如日志

              /bin/sbin: 放置二进制命令

              /dev: 磁盘设备



基础命令二

1.    alias

设置和查看别名(谨慎使用)

例子1:查看别名

[root@localhost ~]# 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@localhost ~]# alias ren="ls -l"

[root@localhost ~]# ren(命令相当于 ls -l

总用量 8

-rw-------. 1 root root 1770 6  18 16:49 anaconda-ks.cfg

-rw-r--r--. 1 root root 1818 6  18 16:52 initial-setup-ks.cfg

drwxr-xr-x. 2 root root    6 6  18 16:53 公共

drwxr-xr-x. 2 root root    6 6  18 16:53 模板

drwxr-xr-x. 2 root root    6 6  18 16:53 视频

drwxr-xr-x. 2 root root    6 6  18 16:53 图片

drwxr-xr-x. 2 root root    6 6  18 16:53 文档

drwxr-xr-x. 2 root root    6 6  18 16:53 下载

drwxr-xr-x. 2 root root    6 6  18 16:53 音乐

drwxr-xr-x. 2 root root   28 7   8 19:08 桌面

写入一下文件永久生效

~/.bashrc 只针对当前用户

/etc/bashrc  对所有用户生效

2.    unalias

取消别名

[root@localhost ~]# unalias ren

[root@localhost ~]# ren

bash: ren: 未找到命令...

注意:

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

3.    uname

查看主机信息

-a 显示所有的信息

-r 显示内核版本号(重点)

例子1:查看主机信息

[root@localhost ~]# uname

Linux

[root@localhost ~]# uname -a

Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

例子2:查看内核版本号

[root@localhost ~]# uname -r

3.10.0-957.el7.x86_64

4.    hostname 

查看和设置主机名

例子1:查看主机名

[root@localhost ~]# hostname

localhost.localdomain

例子2:设置主机名

[root@localhost ~]# hostname renyz

[root@localhost ~]# hostname

renyz

注意:

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

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

[root@localhost ~]# echo "renyz" > /etc/hostname

[root@localhost ~]# cat /etc/hostname

renyz

5.    hostnamectl

设置主机名

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

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

[root@localhost ~]# hostnamectl set-hostname renyz(重点)

6.     history

显示执行过的命令

[root@renyz ~]# history

特殊用法:

[root@renyz ~]#!c #执行从下到上数最后一个以c开头的命令(history中)

7.    which

显示命令的完整路径

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

[root@renyz ~]# which ls

alias ls='ls --color=auto'

       /usr/bin/ls

[root@renyz ~]# ls -l /usr/bin/ls

-rwxr-xr-x. 1 root root 117680 10 31 2018 /usr/bin/ls

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

8.    wc

统计文本信息

-l 统计行数

-w 统计单词数

-c 统计字符

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

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

44 /etc/passwdpasswd用户目录,每一行就是一个用户)

例子2:统计单词数

[root@renyz ~]# echo "this is renyz"|wc -w

3

例子3:统计字符

[root@renyz ~]# echo "this is renyz"|wc -c

14(“|”管道符)

[root@renyz ~]# printf "this is renyz"|wc -c

13(真实字符数量)

9.    w

显示当前登录的用户

[root@renyz ~]# w

 02:50:53 up 21 min,  2 users,  load average: 0.01, 0.07, 0.17

USER  TTY  FROM   LOGIN@  IDLE   JCPU   PCPU WHAT

root   :0       :0       02:30   ?xdm?  59.55s  0.30s /usr/libexec/gnome-ses

root   pts/0   :0       02:31   5.00s   0.19s   0.05s w

主要关注登录用户登录IP

10. who

显示正在登陆的用户

[root@renyz ~]# who

root     :0           2019-07-10 02:30 (:0)

root     pts/0       2019-07-10 02:31 (:0)

11. whoami

显示当前登录的用户

[root@renyz ~]# whoami

root

12. ping

测试主机是否在线

-c 发送包的数量

-i   发送包的间隔数

-w 超时等待时间

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

[root@renyz ~]# ping baidu.com(在Linux系统下不会自动停止)

PING baidu.com (220.181.38.148) 56(84) bytes of data.

64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=128 time=42.7 ms

64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=128 time=49.3 ms

64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=128

例子2:发送两个包

[root@renyz ~]# 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=128 time=42.9 ms

--- baidu.com ping statistics ---

2 packets transmitted, 1 received, 50% packet loss, time 1001ms

rtt min/avg/max/mdev = 42.961/42.961/42.961/0.000 ms

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

[root@renyz ~]# ping -c 3 -i 5 baidu.com

例子4:指定超时等待时间(到达等待时间自动停止退出)

[root@renyz ~]# ping -w 2 google.com

13. kill

终止进程

-9 强制终止进程

格式:

kill -9 PIDprocess ID

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

显示进程:

[root@renyz ~]# ps aux

oot@renyz ~]# ps -ef

例子1:关掉进程

kill -9 1818

14. du

查看文件和目录的大小

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

-s 目录的总大小(summary

注意:

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

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

例子1

[root@renyz ~]# du -h anaconda-ks.cfg

4.0K      anaconda-ks.cfg

[root@renyz ~]# ls -lh anaconda-ks.cfg

-rw-------. 1 root root 1.8K 6  18 16:49 anaconda-ks.cfg

例子2:查看目录总大小

[root@renyz ~]# du -sh /etc

38M       /etc

15. df

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

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

例子1

[root@renyz ~]# df -h

文件系统              容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root   17G  3.7G   14G  22%  /

devtmpfs              470M    0  470M   0%  /dev

tmpfs                487M     0  487M   0%  /dev/shm

tmpfs                487M  8.5M  478M   2%  /run

tmpfs                487M     0  487M   0%  /sys/fs/cgroup

/dev/sda1            1014M  166M  849M  17%  /boot

tmpfs                 98M   24K   98M   1%  /run/user/0

/dev/sr0               4.3G  4.3G     0  100%  /run/media/root/CentOS 7 x86_64

16. free

显示内存信息

-h 人类易读的方式

-m M单位显示

例子1

[root@renyz ~]# free -hm

        total      used     free      shared  buff/cache   available

Mem:   972M    635M    74M      51M    262M      88M

Swap:   2.0G     16M     2.0G

17. date

显示和设置系统时间

例子1:查看时间

[root@renyz ~]# date

2019 07 09 星期二 19:39:28 CST

例子2设置时间

[root@renyz ~]# date -s "2019-7-9 19:42:00"

2019 07 09 星期二 19:42:00 CST

例子3:格式化输出时间

%Y

%m

%d

%H 小时

%M 分钟

%S

[root@renyz ~]# date "+%Y/%m/%d %H:%M:%S"

2019/07/09 19:49:13

例子4

%F 年月日

%T 时分秒

[root@renyz ~]# date "+%F %T"

2019-07-09 19:50:01


高阶命令进阶

1.      输出重定向

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

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

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

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

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

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

例子1:覆盖输出

[root@renyz ~]# echo "123">test

[root@renyz ~]# cat test

123

例子2:追加输出

[root@renyz ~]# echo "2354">>test

[root@renyz ~]# echo "2354">>test

[root@renyz ~]# echo "2354">>test

[root@renyz ~]# cat test

123

2354

2354

2354

例子3:错误覆盖

[root@renyz ~]# ren 2>test

[root@renyz ~]# cat test

bash: ren: 未找到命令...

例子4:错误追加

[root@renyz ~]# ren 2>>test

[root@renyz ~]# ren 2>>test

[root@renyz ~]# cat test

bash: ren: 未找到命令...

bash: ren: 未找到命令...

总结:

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

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

[root@renyz ~]# ls &>>test

[root@renyz ~]# cat test

bash: ren: 未找到命令...

bash: ren: 未找到命令...

bash: ren: 未找到命令...

bash: ren: 未找到命令...

anaconda-ks.cfg

initial-setup-ks.cfg

test

2.      输入重定向 

< 

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

44

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

44 /etc/passwd

3.      管道符(|

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

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

例子1

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

44

例子2

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

501 61.148.243.143sor
118 114.242.248.85
110 122.71.224.158

4.      通配符

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

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

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

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

[root@renyz ~]# ls /dev/sda*

/dev/sda  /dev/sda1  /dev/sda2

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

[root@renyz ~]# ls /dev/sda?

/dev/sda1  /dev/sda2

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

[root@renyz ~]# ls /dev/sda[0-9]

/dev/sda1  /dev/sda2

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

/dev/sdae

例子5

[root@renyz ~]# ls /dev/sda*

/dev/sda  /dev/sda1  /dev/sda2  /dev/sdae  /dev/sdaewef  /dev/sdan  /dev/sdass

[root@renyz ~]# ls /dev/sda[and]

/dev/sdan

注意:

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

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

[root@renyz ~]# ls

abb   anaconda-ks.cfg  ande  efds               sdf   test1

adfe  and              ddd   initial-setup-ks.cfg  test  wqs  

[root@renyz ~]# rm -rf test*

[root@renyz ~]# ls

abb   anaconda-ks.cfg  ande  efds                 sdf 

adfe  and              ddd   initial-setup-ks.cfg  wqs 

5.      一切从“/”开始

Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,即Linux系统中一切都是文件。既然平时我们打交道的都是文件,那么又应该如何找到它们呢?在Windows操作系统中,想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是D盘),然后在进入该分区下的具体目录,最终找到这个文件。但是在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从根(/目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。另外,Linux系统中的文件和目录名称是严格区分大小写的。例如,rootrOOtRootrooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。Linux系统中的

文件存储结构如图所示:

前文提到的FHS是根据以往无数Linux系统用户和开发者的经验而总结出来的,是用户在Linux系统中存储文件时需要遵守的规则,用于指导我们应该把文件保存到什么位置,以及告诉用户应该在何处找到所需的文件。但是,FHS对于用户来讲只能算是一种道德上的约束,有些用户就是懒得遵守,依然会把文件到处乱放,有些甚至从来没有听说过它。这里并不是号召各位读者去谴责他们,而是建议大家要灵活运用所学的知识,千万不要认准这个FHS协定只讲死道理,不然吃亏的可就是自己了。在Linux系统中,最常见的目录以及所对应的存放内容如表所示。

                               Linux系统中常见的目录名称以及相应内容

目录名称

应放置文件的内容

/boot

开机所需文件内核、开机菜单以及所需配置文件等

/dev

以文件形式存放任何设备与接口

/etc

配置文件

/home

用户主目录

/bin

存放单用户模式下还可以操作的命令

/lib

开机时用到的函数库,以及/bin/sbin下面的命令要调用的函数

/sbin

开机过程中需要的命令

/media

用于挂载设备文件的目录

/opt

放置第三方的软件

/root

系统管理员的家目录

/srv

一些网络服务的数据文件目录

/tmp

任何人均可使用的共享临时目录

/proc

虚拟文件系统,例如系统内核、进程、外部设备及网络状态等

/usr/local

用户自行安装的软件

/usr/sbin

Linux系统开机时不会使用到的软件/命令/脚本

/usr/share

帮助与说明文件,也可放置共享文件

/var

主要存放经常变化的文件,如日志

/lost+found

当文件系统发生错误时,将一些丢失的文件片段存放在这里

绝对路径vs相对路径

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

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

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

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

posted @ 2019-07-09 21:07  Wolf_Coder  阅读(424)  评论(0编辑  收藏  举报