一、Linux命令行基础

• Linux命令

– 用来实现某一类功能的指令或程序

在Linux中执行大多数命令时,都要找到命令所对应的程序

]# hostname

]# which hostname #查询命令对应的程序

]# ls /usr/bin/hostname

]# /usr/bin/hostname

– 命令的执行依赖于解释器(默认解释器/bin/bash

用户--->解释器(shell)--->内核--->硬件

绿色:可以执行的程序

shell:壳,解释器

• 命令行完整格式:

– 命令字 [选项]… [参数1] [参数2]…

]# cat --help #查看命令帮助信息

]# cat -n /etc/shells #显示行号

]# cat -n /etc/passwd

]# cat -n /etc/redhat-release

]# cat -n /etc/fstab

]# ls -l /etc/passwd #长格式显示

]# ls -l /etc/fstab #显示详细属性

]# ls -l /etc/shells

]# ls -l /root/ #默认显示目录内容的详细属性

• Tab键自动补全

– 可补齐命令字、选项、参数、文件路径、软件名、服务名

]# if(tab) (tab) #列出以if开头的命令

]# ifco(tab)

]# cat /etc/re(tab) (tab)

]# cat /etc/red(tab)

]# ls /etc/sysconfig/network-scripts/

]# ls /et(tab)/sysco(tab)/netw(tab)- (tab)

• 快捷键

– Ctrl c:结束正在运行的命令

– Esc .或Alt .:粘贴上一个命令的参数

[root@localhost ~]# ls /etc/shells

[root@localhost ~]# ls -l Alt .

[root@localhost ~]# cat Alt .

[root@localhost ~]# cat -n Alt .

– Ctrl l:清空整个屏幕

– Ctrl u:从光标处清空至行首

– Ctrl w:往回删除一部分(以空格界定)

利用虚拟光驱设备进行读取光盘镜像文件

Linux的光驱设备(一切皆文件)

[root@nb ~]# ls /dev/cdrom

[root@nb ~]# ls -l /dev/cdrom

Windows显示光盘内容:

光盘---->光驱设备---->DVD驱动器(访问点)

Linux显示光盘内容:

光盘---->光驱设备---->访问点(目录)

/dev/cdrom

二、mount挂载操作:让目录成为设备的访问点

命令行显示光盘内容

Windows:

光盘--->光驱设备--->CD驱动器(图标)

Linux:

光盘--->光驱设备--->访问点(目录)

Linux:将光盘镜像文件放入虚拟光驱设备中

linux第二次使用教程(linux基础二)(1)

Windows:将光盘镜像文件放入虚拟光驱设备中

linux第二次使用教程(linux基础二)(2)

linux第二次使用教程(linux基础二)(3)

2.查看Linux光驱设备

[root@localhost ~]# ls -l /dev/cdrom

[root@localhost ~]# ls /dev/sr0

3.挂载操作

• 使用mount命令

– 格式:mount 设备路径 挂载点目录

[root@localhost ~]# mkdir /dvd

[root@localhost ~]# ls /dvd

[root@localhost ~]# mount /dev/cdrom /dvd

mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# ls /dvd/

[root@localhost ~]# ls /dvd/P(tab)

4.卸载操作

[root@localhost ~]# umount /dvd

[root@localhost ~]# ls /dvd/

[root@localhost ~]# mkdir /mydvd

[root@localhost ~]# mount /dev/cdrom /mydvd

mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# ls /mydvd

注意事项:

1.卸载:当前所在的路径是挂载点目录

[root@localhost mydvd]# umount /mydvd

umount: /mydvd:目标忙。

(有些情况下通过 lsof(8) 或 fuser(1) 可以

找到有关使用该设备的进程的有用信息)

2.挂载允许一个设备,挂载到不同的挂载点目录

3.挂载不允许一个挂载点目录,挂载多个设备

4.建议挂载点目录,最好自行创建

三、目录与文件管理

u cd的命令使用

. 当前目录

.. 父目录(上一层)

~:表示家目录

家目录:专门存放用户个性化信息的目录

~user:用户user的家目录

/root:是Linux管理员的家目录

/home:存放所有普通用户的家目录

]# cd ~root #去往root用户的家目录

]# pwd

]# cd ~lisi #去往lisi用户的家目录

]# pwd

]# useradd dc #创建用户dc

]# cd ~dc #去往dc用户的家目录

]# pwd

]# useradd tom #创建用户tom

]# cd ~tom #去往tom用户的家目录

]# pwd

• ls — List

– 格式:ls [选项]... [目录或文件名]

• 常用命令选项

– -l:以长格式显示,显示详细信息

– -h:提供易读的容量单位(K、M等)

– -d:显示目录本身(而不是内容)的属性

– -A:显示所有内容包含隐藏数据

[root@localhost /]# ls -ld /home

[root@localhost /]# ls -ld /root

[root@localhost /]# ls -ld /

[root@localhost /]# ls -l /etc/passwd

[root@localhost /]# ls -lh /etc/passwd

[root@localhost /]# ls -A /root

– -R:递归显示内容

[root@localhost /]# ls -A /root

[root@localhost /]# touch /opt/.nsd.txt

[root@localhost /]# ls /opt/

[root@localhost /]# ls -A /opt/

[root@localhost /]# ls -R /opt/

u 使用通配符

• 针对不确定的文档名称,以特殊字符表示

*:任意多个任意字符

?:单个字符

[root@localhost /]# ls /root/a*

[root@localhost /]# ls /boot/vm*

[root@localhost /]# ls /etc/*tab

[root@localhost /]# ls /etc/*.conf

[root@localhost /]# ls /etc/r*.conf

[root@localhost /]# ls /dev/tty*

[root@nb ~]# ls /etc/??tab

[root@nb ~]# ls /dev/tty?

[root@nb ~]# ls /dev/tty??

[root@nb ~]# ls /etc/r??

– [a-z]:多个字符或连续范围中的一个,若无则忽略

– {a,min,xy}:多组不同的字符串,全匹配

[root@localhost /]# ls /dev/tty[3-9]

[root@localhost /]# ls /dev/tty[1-7]

[root@localhost /]# ls /dev/tty{1,17,20}

[root@localhost /]# ls /dev/tty{10,18,22,33}

[root@localhost /]# ls /dev/tty{26,19,21,30,40}

补充内容:显示/dev/tty10到/dev/tty20

[root@nb ~]# ls /dev/tty{1[0-9],20}

u 别名的定义:简化复杂的命令

• 查看已设置的别名

– alias [别名名称]

• 定义新的别名

– alias 别名名称= '实际执行的命令行'

• 取消已设置的别名

– unalias [别名名称]

]# hostname

]# alias hn='hostname' #定义别名

]# hn

]# alias #查看系统中有哪些别名

]# unalias hn #删除hn别名

]# hn

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

]# alias myls='ls -ld'

]# myls /etc/

• mkdir — Make Directory

– 格式:mkdir [/路径/]目录名…

[-p]:连同父目录一并创建

[root@localhost /]# mkdir -p /opt/aa/bb/cc/dd

[root@localhost /]# ls -R /opt/aa

[root@localhost /]# mkdir -p /nsd04/test04

[root@localhost /]# ls -R /nsd04

u rm 删除

• rm — Remove

– 格式:rm [选项]... 文件或目录…

• 常用命令选项

– -r、-f:递归删除(含目录)、强制删除

[root@localhost /]# rm -rf /opt/1.txt

[root@localhost /]# rm -rf /opt/aa

u mv — Move移动:源数据会消失

– 格式:mv 原文件… 目标路径

[root@localhost /]# rm -rf /opt/*

[root@localhost /]# mkdir /opt/nsd01

[root@localhost /]# touch /opt/1.txt

[root@localhost /]# ls /opt/

[root@localhost/]# mv /opt/1.txt /opt/nsd01

[root@localhost /]# ls /opt/

[root@localhost /]# ls /opt/nsd01/

重命名:路径不变的移动

]# ls /opt/

]# mv /opt/nsd01 /opt/abc

]# ls /opt/

]# mv /opt/abc/ /opt/student

]# ls /opt/

]# mv /opt/student /mnt/stu01

]# ls /mnt/

u cp — Copy:源数据不会消失

– 格式:cp [选项]... 原文件… 目标路径

• 常用命令选项

– -r:递归,复制目录时必须有此选项

[root@localhost /]# cp /etc/passwd /opt/

[root@localhost /]# ls /opt/

[root@localhost /]# cp -r /boot/ /opt/

[root@localhost /]# ls /opt/

[root@localhost /]# cp -r /home/ /opt/

[root@localhost /]# ls /opt/

l 重名进行强制覆盖

]# \cp -r /boot/ /opt/ #本次操作临时取消别名

]# \cp -r /boot/ /opt/ #本次操作临时取消别名

l 复制可以支持重新命名,目标路径下数据的名称

]# cp -r /home/ /opt/myhome

]# ls /opt/

]# cp /etc/redhat-release /opt/r.txt

]# ls /opt/

]# cp -r /root/ /opt/myroot

]# ls /opt/

]# cp -r /root/ /opt/myroot

]# ls /opt/myroot/

l 复制可以支持两个以上的参数,永远把最后一个参数作为目标,其他的所有的参数都作为源数据

]# mkdir /nsd05

]# cp -r /home/ /etc/passwd /boot/ /etc/shells /nsd05

]# ls /nsd05

l 复制与一个点进行连用,将数据复制到当前路径下

]# cd /etc/sysconfig/network-scripts/

]# pwd

]# cp /etc/passwd .

]# ls

u 重定向操作(重新定向命令的输出)

作用:将前面命令输出,写入到后面文本文件中,作为文本文件的内容

覆盖重定向:>

追加重定向:>>

]# head -2 /etc/passwd

]# head -2 /etc/passwd > /opt/aa.txt

]# cat /opt/aa.txt

]# hostname

]# hostname > /opt/aa.txt

]# cat /opt/aa.txt

]# head -2 /etc/passwd >> /opt/aa.txt

]# cat /opt/aa.txt

]# > /opt/aa.txt #清空文件内容

]# cat /opt/aa.txt

]# echo 123456 > /opt/aa.txt

]# cat /opt/aa.txt

]# echo hahaxixi >> /opt/aa.txt

]# cat /opt/aa.txt

u 管道操作 |

作用:将前面命令的输出,传递给后面命令,作为后面命令的参数,继续处理

]# head -2 /etc/passwd

]# head -2 /etc/passwd | tail -1

显示文件的第二行

]# head -2 /etc/passwd | tail -1 | cat -n

显示文件的第三行

]# cat -n /etc/passwd | head -3 | tail -1

显示文件的8到12行内容

]# cat -n /etc/passwd | head -12 | tail -5

]# ifconfig | head -2

]# echo 1 1 | bc #计算1 1

]# echo 2 3 | bc

u 在文本文件中过滤,包含指定字符串的行

– grep [选项] '字符串' 文本文件...

• 常用命令选项

-v,取反匹配(不要包含指定字符串的行)

-i,忽略大小写

]# grep root /etc/passwd

]# grep -v root /etc/passwd

]# grep ROOT /etc/passwd

]# grep -i ROOT /etc/passwd

^word 以字符串word开头

word$ 以字符串word结尾

]# grep ^root /etc/passwd

]# grep ^bin /etc/passwd

]# grep root$ /etc/passwd

]# grep bash$ /etc/passwd

^$ 匹配空行

]# cat /etc/default/useradd

]# grep -v ^$ /etc/default/useradd

Linux中大多数配置文件内容,以#开头的行为注释行

]# cat /etc/login.defs

]# grep -v ^# /etc/login.defs

显示文件的有效信息(去掉以#开头的注释行并且去掉空行)

]# grep -v ^# /etc/login.defs | grep -v ^$

]# grep -v ^# /etc/login.defs | grep -v ^$ > /opt/bb.txt

]# cat /opt/bb.txt

,