如何编写命令行
• Linux命令
– 用来实现某一类功能的指令或程序
Linux执行命令时,需要找到相应的程序文件
– 命令的执行依赖于解释器(Linux默认的解释器:/bin/bash)
用户------>解释器------>内核----->硬件
绿色:可以执行的程序
命令行的一般格式
• 基本用法
– 命令字 [选项]… [参数1] [参数2]…
[root@feifan ~]# cat --help #查看命令帮助信息
[root@feifan ~]# cat -n /etc/default/useradd
[root@feifan ~]# cat -n /etc/passwd
[root@feifan ~]# cat -n /etc/fstab
[root@feifan ~]# cat -n /etc/hosts
快速编辑技巧
• Tab键自动补全
– 可补齐命令字、选项、参数、文件路径、软件名、服务名
• 快捷键
– Ctrl + l:清空整个屏幕
– Ctrl + c:废弃当前编辑的命令行(结束正在运行的命令)
– Esc + . 或 Alt + .:粘贴上一个命令的参数
[root@feifan ~]# ls /etc/sysconfig/network-scripts/ifcfg-eth0
[root@feifan ~]# cat Alt + .
[root@feifan ~]# cat -n Alt + .
[root@feifan ~]# head -2 Alt + .
[root@feifan ~]# tail -2 Alt + .
– Ctrl + u:从光标处清空至行首
– Ctrl + w:往回删除一个单词(以空格界定
mount挂载操作
可以让目录成为设备的访问点
从光盘中获取软件包
让Linux显示光盘内容
对比
Windows: 光盘文件------>光驱设备------>CD驱动器(图标)访问点
Linux: 光盘文件------>光驱设备------>访问点(目录)
1.图形将光盘文件放入虚拟光驱设备
2.查看光驱设备
青色:快捷方式
[root@feifan ~]# ls /dev/sr0
/dev/sr0
[root@feifan ~]# ls /dev/cdrom
/dev/cdrom
[root@feifan ~]# ls -l /dev/cdrom #显示参数的详细属性
lrwxrwxrwx. 1 root root 3 6月 3 10:00 /dev/cdrom -> sr0
3.挂载设备
[root@feifan ~]# mkdir /dvd
[root@feifan ~]# ls /dvd
• 使用mount命令
– 格式:mount 设备路径 挂载点目录
[root@feifan ~]# mount /dev/cdrom /dvd
[root@feifan ~]# ls /dvd/
[root@feifan ~]# ls /dvd/P(tab)
4.卸载
[root@feifan ~]# umount /dvd
[root@feifan ~]# ls /dvd
[root@feifan ~]# mount /dev/cdrom /opt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@feifan ~]# ls /opt/
[root@feifan ~]# umount /opt/
[root@feifan ~]# ls /opt/
注意事项:
1.卸载,当前不要挂载点目录下
[root@feifan dvd]# umount /dvd/
umount: /dvd:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
2.一个设备可以有多个挂载点
3.不允许一个挂载点有多个设备
4.建议挂载点目录的选择,最好自己创建
查看及切换目录
• cd — Change Directory
– 用途:切换工作目录
– 格式:cd [目标文件夹位置]
~:表示用户家目录
~user表示用户user的家目录
/root:为管理员的家目录
/home:存放所有普通用户家目录
[root@feifan ~]# cd ~root
[root@feifan ~]# pwd
/root
[root@feifan ~]# useradd tom #创建tom用户
[root@feifan ~]# cd ~tom #切换普通用户tom家目录
[root@feifan tom]# pwd
[root@feifan tom]# useradd harry #创建harry用户
[root@feifan tom]# cd ~harry #切换普通用户harry家目录
[root@feifan harry]# pwd
. 表示当前目录
… 表示父目录
ls列出文档及属性
• ls — List
– 格式:ls [选项]… [目录或文件名]
• 常用命令选项
– -l:以长格式显示,显示详细属性
– -h:提供易读的容量单位(K、M等)
– -A:包括名称以 . 开头的隐藏文档
– -d:显示目录本身(而不是内容)的属性
[root@feifan ~]# ls /root
[root@feifan ~]# ls -l /root
[root@feifan ~]# ls -ld /root
[root@feifan ~]# ls -l /etc/passwd
[root@feifan ~]# ls -lh /etc/passwd
[root@feifan ~]# ls -lh /etc/fstab
[root@feifan ~]# ls -lh /var/log/message
[root@feifan ~]# ls /root
[root@feifan ~]# ls -A /root/
[root@feifan ~]# ls /boot
[root@feifan ~]# ls -A /boot
[root@feifan ~]# ls -lA /boot
[root@feifan ~]# touch /mnt/.abc.txt
[root@feifan ~]# ls /mnt
[root@feifan ~]# ls -A /mnt
使用通配符
• 针对不确定的文档名称,以特殊字符表示
– *:任意多个任意字符
– ?:单个字符
[root@feifan ~]# ls /boot/v* #匹配以v开头
[root@feifan ~]# ls /root/a* #匹配以a开头
[root@feifan ~]# ls /dev/tty* #匹配以tty开头
[root@feifan ~]# ls /etc/*tab #匹配以tab结尾
[root@feifan ~]# ls /etc/*.conf #匹配以.conf结尾
[root@feifan ~]# ls /etc/??tab
[root@feifan ~]# ls /dev/tty?
[root@feifan ~]# ls /dev/tty??
[root@feifan ~]# ls /dev/tty???
• 针对不确定的文档名称,以特殊字符表示
– [a-z]:多个字符或连续范围中的一个,若无则忽略
– {a,min,xy}:多组不同的字符串,全匹配
[root@feifan ~]# ls /dev/tty[3-8]
[root@feifan ~]# ls /dev/tty[0-7]
[root@feifan ~]# ls /dev/tty[1-9]
[root@feifan ~]# ls /dev/tty{1,3,5,7,9,27}
[root@feifan ~]# ls /dev/tty{1,3,5,7,9,27,S0}
[root@feifan ~]# ls /dev/tty{haha,xixi}
例如:显示/dev/tty20至/dev/tty30范围所有设备文件?
[root@feifan ~]# ls /dev/tty2[0-9]
[root@feifan ~]# ls /dev/tty2?
[root@feifan ~]# ls /dev/tty2[0-9] /dev/tty30
[root@feifan ~]# ls /dev/tty{2[0-9],30}
别名的定义:简化复杂的命令
[root@feifan ~]# hostname
feifan
[root@feifan ~]# hn
bash: hn: 未找到命令...
[root@feifan ~]# alias hn='hostname' #别名的定义
[root@feifan ~]# hn
feifan
[root@feifan ~]# alias #显示当前系统生效的别名
[root@feifan ~]# unalias hn #删除别名hn
[root@feifan ~]# hn
bash: hn: 未找到命令...
[root@feifan ~]#
[root@feifan ~]# alias qq='ls -lh /etc/passwd'
[root@feifan ~]# qq
新建文档
mkdir 创建目录
• mkdir — Make Directory
– 格式:mkdir [-p] [/路径/]目录名…
-p表示连父目录一起创建
[root@feifan ~]# mkdir -p /vod/movie/cartoon
[root@feifan ~]# ls /vod
[root@feifan ~]# ls /vod/movie
[root@feifan ~]# mkdir -p /opt/aa/bb/cc/dd
[root@feifan ~]# ls /opt/
[root@feifan ~]# ls /opt/aa
[root@feifan ~]# ls /opt/aa/bb/
[root@feifan ~]# ls /opt/aa/bb/cc
[root@feifan ~]# mkdir -p /opt/aaa/1905
[root@feifan ~]# ls /opt/
[root@feifan ~]# ls /opt/aaa
-R:递归显示
[root@feifan ~]# ls -R /opt/aa
/opt/aa:
bb
/opt/aa/bb:
cc
/opt/aa/bb/cc:
dd
/opt/aa/bb/cc/dd:
rm 删除
• rm — Remove
– 格式:rm [选项]… 文件或目录…
• 常用命令选项
– -r、-f:递归删除(含目录)、强制删除
[root@feifan ~]# mkdir /opt/aaa01
[root@feifan ~]# mkdir /opt/aaa02
[root@feifan ~]# touch /opt/1.txt
[root@feifan ~]# ls /opt/
[root@feifan ~]# rm -rf /opt/aaa*
[root@feifan ~]# ls /opt/
[root@feifan ~]# rm -rf /opt/1.txt
[root@feifan ~]# ls /opt/
** vim文本编辑器**
– 格式:vim [[/目录/]文件名]
– 若目标文件不存在,则新建空文件并编辑
– 若目标文件已存在,则打开此文件并编辑
[root@feifan ~]# vim /opt/xixi.txt
命----i键 或 o键----->插入模式(按Esc回到命令模式)
令
模
式----:键----->末行模式(按Esc回到命令模式)
末行模式 :wq 保存并退出
末行模式 :q! 强制不保存并退出
命令模式 u 可以进行撤销
查找文本内容
• 根据字符串模式提取文本行
– grep [选项] ‘匹配模式’ 文本文件…
• 常用命令选项
– -v,取反匹配,不包含
– -i,忽略大小写
[root@feifan ~]# grep root /etc/passwd
[root@feifan ~]# grep ROOT /etc/passwd
[root@feifan ~]# grep -i ROOT /etc/passwd
[root@feifan ~]# grep -v root /etc/passwd
– ^root 以字符串root开头
– root$ 以字符串root结尾
[root@feifan ~]# grep ^root /etc/passwd
[root@feifan ~]# grep root$ /etc/passwd
[root@feifan ~]# grep bash$ /etc/passwd
mv 移动/改名
• mv — Move
– 格式:mv 原文件… 目标路径
[root@feifan ~]# mkdir /opt/aaa
[root@feifan ~]# touch /opt/1.txt
[root@feifan ~]# ls /opt/
[root@feifan ~]# mv /opt/1.txt /opt/aaa
[root@feifan ~]# ls /opt/
[root@feifan ~]# ls /opt/aaa/
重命名:路径不变的移动
[root@feifan ~]# ls /opt/
[root@feifan ~]# mv /opt/aaa /opt/student
[root@feifan ~]# ls /opt/
[root@feifan ~]# mv /opt/student/ /opt/abc
[root@feifan ~]# ls /opt/
cp 复制
• cp — Copy
– 格式:cp [选项]… 原文件… 目标路径
• 常用命令选项
– -r:递归,复制目录时必须有此选项
[root@feifan ~]# rm -rf /opt/*
[root@feifan ~]# ls /opt/
[root@feifan ~]# cp /etc/passwd /opt/
[root@feifan ~]# ls /opt/
[root@feifan ~]# cp /etc/fstab /opt/
[root@feifan ~]# ls /opt/
[root@feifan ~]# cp -r /home/ /opt/
[root@feifan ~]# ls /opt/
[root@feifan ~]# cp -r /boot /opt/
[root@feifan ~]# ls /opt/
复制出现同名强制覆盖
在本次操作临时取消别名
[root@feifan ~]# cp -r /boot/ /opt/
[root@feifan ~]# cp -r /boot/ /opt/
[root@feifan ~]# \cp -r /boot/ /opt/
复制可以支持两个以上的参数:
永远把最后一个参数作为目标,其他的所有参数都作为源
[root@feifan ~]# rm -rf /opt/*
[root@feifan ~]# ls /opt/
[root@feifan ~]# cp -r /etc/passwd /etc/fstab /etc/hosts /home/ /boot/ /opt/
[root@feifan ~]# ls /opt/
复制与 . 进行连用
[root@feifan ~]# cd /opt/
[root@feifan opt]# pwd
[root@feifan opt]# cp /etc/login.defs . #复制到当前路径下
[root@feifan opt]# ls
[root@feifan opt]# cd /etc/sysconfig/network-scripts/
[root@feifan network-scripts]# pwd
[root@feifan network-scripts]# cp /etc/passwd .
[root@feifan network-scripts]# ls
复制时可以重新命名,目标路径下名称
[root@feifan /]# cp /etc/shadow /opt/abc.txt
[root@feifan /]# ls /opt/
[root@feifan /]# cp /etc/redhat-release /opt/rr
[root@feifan /]# ls /opt/
[root@feifan /]# cp /etc/passwd /opt/p.txt
[root@feifan /]# ls /opt/
[root@feifan /]# cp -r /home /opt/test
[root@feifan /]# ls /opt/
重定向输出:将命令的输出,作为文本文件内容写入一个文件中
-------- >:覆盖重定向
-------- >>:追加重定向
[root@feifan /]# ls --help > /opt/ls.txt
[root@feifan /]# ls /opt/
[root@feifan /]# less /opt/ls.txt
[root@feifan /]# hostname
[root@feifan /]# hostname > /opt/ls.txt
[root@feifan /]# cat /opt/ls.txt
[root@feifan /]# hostname >> /opt/ls.txt
[root@feifan /]# cat /opt/ls.txt