Linux常用命令精讲
1、Linux命令的通用格式
命令字 [选项] [参数]
命令字:命令字是唯一的,严格区分大小写;
选项:用于调节命令的具体功能,可以有一个或者多个选项,选项分为短格式和长格式,“-”表示短格式,例如“ls -a”;“--”表示长格式,例如“ls --help”;
- 参数:参数是命令处理的对象,例如文件、目录名等;
2、Linux命令作用
用于实现某一类功能的指令或程序,命令的执行依赖于解释器程序(例如:/bin/bash)。
3、Linux命令的分类
1)内部命令
集成在bash中,安装Linux系统自带,不需要对应文件,执行速度快,属于shell解释器的一部分。
2)外部命令
独立于shell解释器之外的程序,安装程序或者服务生成命令,需要对应到系统文件中,执行速度慢。
4、编辑Linux命令行的辅助操作
1)Tab键
自动补全命令
[ ~]# whi <!--输入前三个字符按Tab键自动补全--> which while whiptail
2)反斜杠“\”
强制换行
[ ~]# user> add bob <!--强制换行创建bob用户--> [ ~]# tail -2 /etc/passwd <!--验证是否创建成功--> test:x:1000:1000:test:/home/test:/bin/bash bob:x:1001:1001::/home/bob:/bin/bash
3)快捷键Ctrl+U
清空至行首
[ ~]# useradd [ ~]# eradd <!--将光标移至e字符执行Ctrl+u清空至行首-->
4)快捷键Ctrl+K
清空至行尾
[ ~]# useradd [ ~]# use <!--将光标移至e字符执行Ctrl+k清空至行尾-->
5)快捷键Ctrl+L
清空屏幕内容
6)快捷键Ctrl+C
取消本次命令编辑
[ ~]# tail -2 /etc/passwd^C [ ~]#
5、获取命令帮助
1)内部命令help
查看Bash内部命令的帮助信息
[ ~]# help pwd pwd: pwd [-LP] 打印当前工作目录的名字。 选项: -L 打印 $PWD 变量的值,如果它命名了当前的 工作目录 -P 打印当前的物理路径,不带有任何的符号链接 默认情况下,`pwd‘ 的行为和带 `-L‘ 选项一致 退出状态: 除非使用了无效选项或者当前目录不可读,否则 返回状态为0
2)命令的“--help”选项
适用于大多数外部命令。
[ ~]# vim --help VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 2 2017 00:45:39) 用法: vim [参数] [文件 ..] 编辑指定的文件 或: vim [参数] - 从标准输入(stdin)读取文本 或: vim [参数] -t tag 编辑 tag 定义处的文件 或: vim [参数] -q [errorfile] 编辑第一个出错处的文件 参数: -- 在这以后只有文件名 -v Vi 模式 (同 "vi") -e Ex 模式 (同 "ex") -E Improved Ex mode -s 安静(批处理)模式 (只能与 "ex" 一起使用) -d Diff 模式 (同 "vimdiff") -y 容易模式 (同 "evim",无模式) -R 只读模式 (同 "view") -Z 限制模式 (同 "rvim") -m 不可修改(写入文件) -M 文本不可修改 -b 二进制模式 -l Lisp 模式 -C 兼容传统的 Vi: ‘compatible‘ -N 不完全兼容传统的 Vi: ‘nocompatible‘ -V[N][fname] Be verbose [level N] [log messages to fname] -D 调试模式 -n 不使用交换文件,只使用内存 -r 列出交换文件并退出 -r (跟文件名) 恢复崩溃的会话 -L 同 -r -A 以 Arabic 模式启动 -H 以 Hebrew 模式启动 -F 以 Farsi 模式启动 -T <terminal> 设定终端类型为 <terminal> -u <vimrc> 使用 <vimrc> 替代任何 .vimrc --noplugin 不加载 plugin 脚本 -P[N] 打开 N 个标签页 (默认值: 每个文件一个) -o[N] 打开 N 个窗口 (默认值: 每个文件一个) -O[N] 同 -o 但垂直分割 + 启动后跳到文件末尾 +<lnum> 启动后跳到第 <lnum> 行 --cmd <command> 加载任何 vimrc 文件前执行 <command> -c <command> 加载第一个文件后执行 <command> -S <session> 加载第一个文件后执行文件 <session> -s <scriptin> 从文件 <scriptin> 读入正常模式的命令 -w <scriptout> 将所有输入的命令追加到文件 <scriptout> -W <scriptout> 将所有输入的命令写入到文件 <scriptout> -x 编辑加密的文件 --startuptime <file> Write startup timing messages to <file> -i <viminfo> 使用 <viminfo> 取代 .viminfo -h 或 --help 打印帮助(本信息)并退出 --version 打印版本信息并退出
3)使用man命令阅读手册页
使用“?”、“?”方向键滚动文本,使用page Up和page Down键翻页,按Q或q键退出阅读环境、按“/”键查找内容。
[ ~]# man pwd PWD(1) FSF PWD(1) NAME pwd - 显示出当前/活动目录的名称 总览 (SYNOPSIS) pwd [OPTION] 描述 (DESCRIPTION) 显示出 完整的 当前 活动目录 名称. --help 显示 帮助 信息, 然后 退出 --version 显示 版本 信息, 然后 退出 报告 BUGS 发现的 bug 寄往 <>. 另见 (SEE ALSO) Pwd 的 完整文档 以 Texinfo 手册 的 形式 维护. 如果 正确 安装了 info 和 pwd 文件, 用 命令 info pwd 可以 访问 完整 的 手册. 版权 (COPYRIGHT) Copyright ? 1999 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FIT‐ NESS FOR A PARTICULAR PURPOSE. [中文版维护人] 徐明 <> [中文版最新更新] 2003/05/13 《中国Linux论坛man手册页翻译计划》 http://cmpp.linuxforum.net
6、ls(list)命令详解
ls命令选项
-l:以长格式显示文件和目录的列表;
-a:显示所有子目录和文件的信息;
-A:与-a选项的作用基本类似,但有两个特殊隐藏目录不会显示,“.”和“..”;
-d:显示目录本身的属性,而不是显示目录中的内容;
-h:以更人性化的方式显示出目录或文件的大小,此选项需要结合-l选项一起使用;
-R:以递归的方式显示指定目录及其子目录中的所有内容;
- --color:显示颜色;
应用举例:
[ ~]# ls -l / 总用量 102428 -rw-r--r-- 1 root root 104857600 1月 9 21:42 1.iso drwxr-xr-x 3 root root 18 1月 9 21:22 benet lrwxrwxrwx. 1 root root 7 10月 23 22:29 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 10月 23 22:37 boot drwxr-xr-x 18 root root 3140 1月 9 21:00 dev [ ~]# ls -ld / <!--长格式查看根的属性--> dr-xr-xr-x. 19 root root 269 1月 9 21:31 / [ ~]# ls -ld /test/yun/benet/1.txt <!--长格式查看文件属性--> -rw-r--r-- 1 root root 0 1月 9 21:40 /test/yun/benet/1.txt [ benet]# dd if=/dev/zero of=./1.iso bs=10M count=10 <!--创建测试数据--> 记录了10+0 的读入 记录了10+0 的写出 104857600字节(105 MB)已复制,1.13446 秒,92.4 MB/秒 [ benet]# ls -lh ./1.iso <!--长格式显示文件属性;以KB或者M显示文件大小--> -rw-r--r-- 1 root root 100M 1月 9 21:43 ./1.iso [ ~]# ls -lhR /test/ <!--递归显示目录中包含的子文件大小--> /test/: 总用量 0 drwxr-xr-x 3 root root 19 1月 9 21:31 yun /test/yun: 总用量 0 drwxr-xr-x 2 root root 84 1月 9 21:43 benet /test/yun/benet: 总用量 100M -rw-r--r-- 1 root root 100M 1月 9 21:43 1.iso -rw-r--r-- 1 root root 0 1月 9 21:40 1.txt -rw-r--r-- 1 root root 0 1月 9 21:40 2.txt -rw-r--r-- 1 root root 0 1月 9 21:40 3.txt -rw-r--r-- 1 root root 0 1月 9 21:40 4.txt -rw-r--r-- 1 root root 0 1月 9 21:40 5.txt
7、du(disk usage)命令详解
用于统计指定目录(或)文件所占磁盘空间的大小,du命令常用的几个选项如下:
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录;
-h:以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果;
- -s:只统计所占用空间总的(Summary)大小,而不是统计每个子目录,文件的大小;
应用举例:
[ ~]# df -Th <!--统计磁盘大小--> 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda3 xfs 76G 3.8G 72G 5% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.0M 482M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 xfs 197M 136M 61M 70% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 [ ~]# du -sh /var/log/ <!--统计所有文件总共占用的空间大小--> 4.9M /var/log/ [ ~]# du -sh /test/ <!--统计目录大小--> 100M /test/ [ ~]# du -ah /test/yun/benet/1.iso<!--统计文件大小--> 100M /test/yun/benet/1.iso
二、目录和文件的基本操作
1、touch命令
touch命令用于创建空文件,用于测试,当目标文件已存在时,将更新该文件的时间标记。
应用举例:
[ ~]# touch /test/1.iso <!--创建单个文件--> [ ~]# cd /test/ [ test]# ls <!--验证--> 1.iso [ ~]# touch /test/{1..10}.txt <!--连续创建多个文件--> [ ~]# [ ~]# cd /test/ [ test]# ls <!--验证创建的文件--> 10.txt 1.iso 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
2、常用命令——mkdir(make directory)
mkdir命令用于创建新目录,语法格式如下:
mkdir [选项] 目录位置及名称...
- -p:-p选项表示一次性创建嵌套的多层目录;
应用举例:
[ ~]# mkdir www <!--创建目录--> [ ~]# ls anaconda-ks.cfg initial-setup-ks.cfg www [ ~]# mkdir -p /test/yun/benet <!--循环创建目录--> [ ~]# cd /test/yun/benet/ [ benet]# pwd /test/yun/benet
3、常用命令——cp(copy)
复制文件或目录,需要复制多个文件或目录时,目标位置必须是目录,而且目标目录必须以及存在。语法格式如下:
cp [选项]... 源文件或目录... 目标文件或目录...
cp常用的选项如下:
-f:覆盖目录同名文件或目录时不进行提醒,直接强制复制;
-i:覆盖目录同名文件或目录时提醒用户确认;
-p:复制时保持源文件的权限,属主及时间标记等属性不变;
- -r:复制目录时必须使用此选项,表示递归复制所有文件及子目录;
应用举例:
[ ~]# cp -r benet/ www/ <!--复制目录到benet目录中--> [ ~]# cp -rpf /test/ ./yun/ <!--循环复制/test目录中的数据到当前目录yun中, test目录中的数据保持权限不变-->
4、常用命令——rm(remove)
rm命令用于删除指定的文件或目录,语法格式如下:
rm [选项] 要删除的文件或目录...
rm命令常用的选项如下:
-f:不提醒,直接强制删除;
-i:提醒用户确认;
- -r:递归删除整个目录树;
应用举例:
[ test]# ls 10.txt 1.iso 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt yun [ test]# rm -rf yun <!--不提醒递归删除yun目录--> [ test]# rm -rf ./*.iso <!--不提醒递归删除所有以*.iso结尾的文件--> [ test]# ls 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt [ test]# rm -ri ./* <!--提醒用户确认删除当前目录所有文件和目录--> rm:是否删除普通空文件 "./10.txt"?y <!--输入y确认即可--> rm:是否删除普通空文件 "./1.txt"?y ............ <!--此处省略部分内容-->
rm -rf命令极度危险,慎重操作!!!
5、常用命令——mv(move)
mv命令用于将指定的文件或目录转移位置,如果目标位置与源位置相同,则相当于执行重命名操作。mv命令语法格式如下:
mv [选项]... 源文件或目录... 目标文件或目录
应用举例:
[ ~]# mv 1.mp3 /benet/bdqn/accp/xsh/ <!--将当前目录的1.mp3数据剪切到/benet/bdqn/accp/xsh/目录--> [ xsh]# ls 1.mp3 [ xsh]# mv 1.mp3 2.mp3 <!--将1.mp3重命名为2.mp3--> [ xsh]# ls 2.mp3
6、常用命令——which
which命令用来查找Linux命令程序所在的位置,注意:默认当找到第一个目标后不再继续查找;若在所有搜素路径中查找,加“-a”选项;无法查找内部命令所对应的程序文件,例如:which cd。语法格式如下:
which 命令|程序名
应用举例:
[ ~]# which passwd <!--查看passwd命令的位置--> /usr/bin/passwd [ ~]# which -a groupadd <!--查看groupadd命令的位置--> /usr/sbin/groupadd
7、常用命令——find
find命令用来精细查找文件或目录。基本语法格式如下:
find [查找范围] [查找条件表达式]
find常用的查找条件如下:
-name:按名称查找;根据目标文件的名称进行查找,允许使用“*”及“?”通配符;
-size:按文件大小查找;一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件。常用的容量单位包括kB(注意k是小写)、MB、GB;
-user:按文件属主查找;
- -type:按文件类型查找;类型指的是普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等。
同时使用多个查找条件时,各表达式之间可以使用逻辑运算符“-a”、“-o”,分别表示而且(and)、或者(or)。
应用举例:
[ ~]# find /test/yun/benet/ -name *.txt <!--查看/test/yun/benet/目录下所有*.txt的文件--> /test/yun/benet/1.txt /test/yun/benet/2.txt /test/yun/benet/3.txt /test/yun/benet/4.txt /test/yun/benet/5.txt [ ~]# find /test/yun/benet/ -type d <!--查看/test/yun/benet/目录中所有目录--> /test/yun/benet/ [ ~]# find /test/yun/benet/ -type f <!--查看/test/yun/benet/目录中所有文件--> /test/yun/benet/1.txt /test/yun/benet/2.txt /test/yun/benet/3.txt /test/yun/benet/4.txt /test/yun/benet/5.txt /test/yun/benet/1.iso [ ~]# find /test/yun/benet/ -size +100M <!--查看/test/yun/benet/目录中大于100M的文件--> /test/yun/benet/2.iso [ ~]# find /test/yun/benet/ -size -100M <!--查看/test/yun/benet/目录中小于100M的文件--> /test/yun/benet/ /test/yun/benet/1.txt /test/yun/benet/2.txt /test/yun/benet/3.txt /test/yun/benet/4.txt /test/yun/benet/5.txt [ ~]# find /test/yun/benet/ -size +100M -a -name *.iso <!--查看/test/yun/benet/目录中大于100M和名字为*.iso的显示出来--> /test/yun/benet/2.iso [ ~]# find /test/yun/benet/ -size +100M -o -name *.iso <!--查看/test/yun/benet/目录中大于100M或者名字为*.iso的显示出来--> /test/yun/benet/1.iso /test/yun/benet/2.iso
8、日期和日历的查看方式
显示日期的命令:
[ ~]# date 2020年 01月 10日 星期五 22:05:54 CST [ ~]# date +%F 2020-01-10 [ ~]# date +%Y/%m/%d 2020/01/10 [ ~]# date +%H:%M 22:07
显示日历的命令:
[ ~]# cal 一月 2020 日 一 二 三 四 五 六 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 29 30 31 [ ~]# cal 22 11 1999 十一月 1999 日 一 二 三 四 五 六 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 29 30
———————— 本文至此结束,感谢阅读 ————————