ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

零基础也能看懂!Linux 命令行从入门到上手,这一篇就够了

零基础也能看懂!Linux 命令行从入门到上手,这一篇就够了 覆盖 Shell 基础、9 大常用命令、Tab 补全、history、script 录制与全套快捷键文首附命令速查表建议收藏。目录[TOC](目录)命令速查表一、Linux 命令行基础1.1 控制台Console1.2 shell 介绍1.3 命令提示符1.4 shell 解析字符串的语法1.5 命令行语法示例二、bash 执行命令2.1 passwd —— 管理用户密码2.2 file —— 判定文件类型2.3 cat —— 读取文件内容2.4 head —— 查看文件头部2.5 tail —— 查看文件尾部2.6 less —— 翻页查看文件2.7 wc —— 统计文件信息三、bash 操作技巧3.1 Tab 键补全3.2 history 命令3.3 script 命令3.4 bash 快捷键写在最后命令速查表命令作用常用选项 / 说明ls列出目录内容-l长格式、-a显示隐藏文件--all等价、-1单列显示date显示/设置日期时间-uUTC 时间、-d指定日期、格式自定义输出passwd管理用户密码-d删除密码、-l锁定、-u解锁file判定文件类型-b只显示类型、-iMIME 类型、-f批量判定cat一次性读取文件内容-A显示行尾与制表符 有个类似的tachead查看文件头部-n N只看前 N 行、-n -N去掉末尾 N 行tail查看文件尾部-n N只看后 N 行、-n N从第 N 行起查看less交互式翻页查看-N显示行号/搜索、q退出wc统计行/词/字节数-l行数、-w单词数、-c字节数更详细的用法与示例见下文对应章节ls、date见「一、Linux 命令行基础」其余 7 个见「二、bash 执行命令」。一、Linux 命令行基础本章是整篇笔记的地基搞懂「控制台 / shell / 命令提示符 / 命令语法」四件事后面的命令就都能看懂了。1.1 控制台ConsoleConsole也就是控制台也称为终端提供命令行输入数据和展示命令行输出数据。物理控制台用于与系统交互的硬件接口。虚拟控制台名称为tty1~tty6通过Ctrl Alt F1...F6切换。其中tty1是图形化程序所在的终端。Ctrl Alt F3进入 3 号虚拟控制台登录后执行tty命令效果如下输入密码的时候屏幕是不显示任何字符的。1.2 shell 介绍shell用于解析终端中输入的字符串交由 kernel 执行并将执行结果显示到终端中。Linux 命令行由 shell 程序提供。在 Linux 发展过程中产生了多种 shell 程序。Bash 是类 UNIX 系统中最成功的 shell也是用户的默认 shell。1.3 命令提示符作用提示计算机正在等待用户的输入。提示符含义结尾符号[zhbzhb-m1 ~]$普通用户$[rootzhb-m1 ~]#管理员## 代表普通用户提示符提示符最后是有一个空格。[zhbzhb-m1 ~]$date# 代表管理员提示符[rootzhb-m1 ~]#1.4 shell 解析字符串的语法shell 命令行通过空格分隔包含三个部分组成位置说明命令第一部分必须代表要执行的程序其后可跟选项或参数选项命令之后调整命令的行为通常以-或--开头如-a、--all参数选项之后命令的目标一条命令可接多个参数Enter 键shell 开始解析命令行中的字符串并交由 kernel 执行。下面以ls命令为例说明三要素ls作用列出目录中的文件与子目录。常用选项-l长格式显示、-a显示隐藏文件--all与-a等价、-1单列显示每行一个文件名。示例[zhbzhb-m1 ~]$ls-l/home# ls是命令# -l是选项# /home是参数# 只用命令情况[zhbzhb-m1 ~]$ls公共 模板 视频 图片 文档 下载 音乐 桌面# -1 选项单列显示每行一个文件名[zhbzhb-m1 ~]$ls-1公共 模板 视频 图片 文档 下载 音乐 桌面# 使用不同格式选项-a 和 --all 都是用于显示所有文件包含 . 开头的隐藏文件[zhbzhb-m1 ~]$ls-a..bashrc .esd_auth .mozilla 模板 下载...cache .gnupg .ssh 视频 音乐 .bash_logout .config .ICEauthority .Xauthority 图片 桌面 .bash_profile .dbus .local 公共 文档[zhbzhb-m1 ~]$ls--all..bashrc .esd_auth .mozilla 模板 下载...cache .gnupg .ssh 视频 音乐 .bash_logout .config .ICEauthority .Xauthority 图片 桌面 .bash_profile .dbus .local 公共 文档# 使用参数指定目标查看目录 /etc/yum 文件清单[zhbzhb-m1 ~]$ls/etc/yum fssnap.d pluginconf.d protected.d vars version-groups.conf1.5 命令行语法示例查看帮助任何命令都可加--help查看简要用法如date --help或用man 命令如man date查看完整手册。下文示例中出现的--help即为此用途。下面以date命令为例date作用显示或设置系统日期与时间。常用选项-u显示 UTC 时间、-d指定日期如-d -1 day为昨天、格式自定义输出格式如%Y-%m-%d。[zhbzhb-m1 ~]$date--help用法date[选项]...[格式]或date[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]Display the currenttimeinthe given FORMAT, orsetthe system date. Mandatory arguments to long options are mandatoryforshort options too. -d,--dateSTRING displaytimedescribed by STRING, notnow-f,--fileDATEFILE like--dateonceforeach line of DATEFILE......[zhbzhb-m1 ~]$date2022年11月 03日 星期四13:38:59 CST[zhbzhb-m1 ~]$date-u2022年11月 03日 星期四 05:39:09 UTC[zhbzhb-m1 ~]$date--utc2022年11月 03日 星期四 05:40:06 UTC[zhbzhb-m1 ~]$date--universal2022年11月 03日 星期四 05:40:31 UTC[zhbzhb-m1 ~]$date-d-1 day2022年11月 02日 星期三13:42:03 CST[zhbzhb-m1 ~]$date--date-1 day2022年11月 02日 星期三13:42:29 CST[zhbzhb-m1 ~]$date--date-1 day2022年11月 02日 星期三13:43:04 CST[zhbzhb-m1 ~]$date--date100 day2023年 02月11日 星期六13:44:00 CST# 特殊案例[zhbzhb-m1 ~]$date-d-1 year 3 month 10 days2022年 02月13日 星期日14:20:59 CST[zhbzhb-m1 ~]$date%Y%m%d20221103[zhbzhb-m1 ~]$date%Y-%m-%d2022-11-03[zhbzhb-m1 ~]$date%Y/%m/%d2022/11/03一行要执行多个命令使用分号;分隔[zhbzhb-m1 ~]$ls公共 模板 视频 图片 文档 下载 音乐 桌面[zhbzhb-m1 ~]$date2022年11月 03日 星期四13:52:05 CST[zhbzhb-m1 ~]$ls;date公共 模板 视频 图片 文档 下载 音乐 桌面2022年11月 03日 星期四13:52:08 CST# 错误的示例[zhbzhb-m1 ~]$lsdatels: 无法访问date: 没有那个文件或目录二、bash 执行命令本章逐个拆解 7 个高频命令每个命令按「作用 → 常用选项 → 示例」展开可直接照着练习。2.1 passwd —— 管理用户密码作用管理用户密码。常用选项选项说明-d删除密码实现免密登录-l锁定密码用户将无法登录-u解锁密码恢复用户正常登录无普通用户改自己的密码用户名root 用户管理指定账户的密码示例[zhbzhb-m1 ~]$passwd--help用法:passwd[选项...]帐号名称# 普通用户修改密码,这里的密码显示只是提示实际情况是没有这些回显的[zhbzhb-m1 ~]$passwd更改用户 zhb 的密码 。 为 zhb 更改 STRESS 密码。 当前UNIX 密码redhat新的 密码123无效的密码 密码少于8个字符 新的 密码12345678无效的密码 密码未通过字典检查 - 过于简单化/系统化 新的 密码55TurnK3y重新输入新的 密码55TurnK3ypasswd所有的身份验证令牌已经成功更新。# root 用户管理账户密码[rootzhb-m1 ~]# passwd zhb更改用户 zhb 的密码 。 新的 密码redhat无效的密码 密码少于8个字符 重新输入新的 密码redhatpasswd所有的身份验证令牌已经成功更新。# 删除用户密码实现用户登录不需要密码[rootzhb-m1 ~]# passwd -d zhb清除用户的密码 zhb。 passwd: 操作成功# 锁定用户密码用户将无法登录[rootzhb-m1 ~]# passwd -l zhb锁定用户 zhb 的密码 。 passwd: 操作成功# 解锁用户密码用户可以正常登录[rootzhb-m1 ~]# passwd -u zhb解锁用户 zhb 的密码。 passwd: 操作成功2.2 file —— 判定文件类型作用判定文件类型目录、文本、可执行文件等。常用选项选项说明-b只显示类型结果不显示文件名-i以 MIME 类型格式显示如text/plain-f从指定文件读取文件名列表逐个判定示例[zhbzhb-m1 ~]$file--helpUsage:file[OPTION...][FILE...]Determinetypeof FILEs.[zhbzhb-m1 ~]$file/etc/yum /etc/yum: directory[zhbzhb-m1 ~]$file/etc/fstab /etc/fstab: ASCII text# /bin/file 是二进制程序[zhbzhb-m1 ~]$file/bin/file /bin/file: ELF64-bit LSB executable, x86-64, version1(SYSV), dynamically linked(uses shared libs),forGNU/Linux2.6.32, BuildID[sha1]58f6c8b82ee70887d7136a7181ffc8fa18030cde, stripped2.3 cat —— 读取文件内容作用一次性读取打印文件全部内容。常用选项选项说明-A-vET行尾加$用^I显示制表符tab 键多个文件依次输出多个文件的内容示例[zhbzhb-m1 ~]$cat--help用法cat[选项]...[文件]... 将[文件]或标准输入组合输出到标准输出。[zhbzhb-m1 ~]$cat/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.1.8.88 CentOS7.redhat.fun CentOS7# -A 选项等于 -vET用于显示行尾加个 $用 ^I 显示制表符tab 键[zhbzhb-m1 ~]$cat-A/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4$ ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6$10.1.8.88^ICentOS7.redhat.fun^ICentOS7$# 一次性查看多个文件[zhbzhb-m1 ~]$cat/etc/hosts /etc/fstab127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.1.8.88 CentOS7.redhat.fun CentOS7## /etc/fstab# Created by anaconda on Wed Nov 2 17:31:41 2022## Accessible filesystems, by reference, are maintained under /dev/disk# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/centos-root / xfs defaults00UUID047729d6-683f-4aec-b614-28d20ce0a90c /boot xfs defaults00/dev/mapper/centos-home /home xfs defaults00/dev/mapper/centos-swap swap swap defaults00还有一个tac命令和其类似不过是反向打印内容不能使用-A参数2.4 head —— 查看文件头部作用显示文件头部内容默认前 10 行。常用选项选项说明-n N只看前 N 行-n -N查看除最后 N 行外的全部示例[zhbzhb-m1 ~]$head--help用法head[选项]...[文件]... Print the first10lines of each FILE to standard output. Withmorethan one FILE, precede each with a header giving thefilename. With no FILE, or when FILE is -,readstandard input.[zhbzhb-m1 ~]$head/etc/profile# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases go in /etc/bashrc# Its NOT a good idea to change this file unless you know what you# are doing. Its much better to create a custom.sh shell script in# /etc/profile.d/ to make custom changes to your environment, as this# will prevent the need for merging in future updates.# 只看前 4 行内容[zhbzhb-m1 ~]$head-n4/etc/profile# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases go in /etc/bashrc# 查看文件所有内容除了最后 3 行[zhbzhb-m1 ~]$head-n-3/etc/profile2.5 tail —— 查看文件尾部作用显示文件尾部内容默认后 10 行。常用选项选项说明-n N只看后 N 行-n N从第 N 行开始看到文件末尾示例[zhbzhb-m1 ~]$tail--help用法tail[选项]...[文件]... Print the last10lines of each FILE to standard output. Withmorethan one FILE, precede each with a header giving thefilename. With no FILE, or when FILE is -,readstandard input.[zhbzhb-m1 ~]$tail/etc/profileif[${-#*i}!$-];then.$ielse.$i/dev/nullfifidoneunsetiunset-fpathmunge[zhbzhb-m1 ~]$tail-n4/etc/profiledoneunsetiunset-fpathmunge# 从第四行到最后所有行内容[zhbzhb-m1 ~]$tail-n4 /etc/profile2.6 less —— 翻页查看文件作用交互式、翻页查看文件内容。常用按键按键说明/关键词向下搜索n/N下一个 / 上一个上下方向键逐行查看PageUp / PageDown上下翻页q退出查看示例# 使用 less 查看多页文档可以翻页、搜索等[zhbzhb-m1 ~]$less-N/etc/profile# 在 less 查看文件过程中常见指令# / 搜索nnext搜索下一个N 搜索上一个。# 上下方向键 逐行查看左右键左右翻页# pageup 和 pagedown 上下翻页# q退出文档查看2.7 wc —— 统计文件信息作用统计文件的行数、单词数、字节数。常用选项选项说明-l行数-w单词数-c字节数无三者都统计示例[zhbzhb-m1 ~]$wc--help用法wc[选项]...[文件]... 或wc[选项]... --files0-fromF Print newline, word, and byte countsforeach FILE, and a total lineifmorethan one FILE is specified. With no FILE, or when FILE is -,readstandard input. A word is a non-zero-length sequence of characters delimited by white space. The options below may be used toselectwhichcounts are printed, alwaysinthe following order: newline, word, character, byte, maximum line length. -c,--bytesprint the byte counts -m,--charsprint the character counts -l,--linesprint the newline counts --files0-from文件 从指定文件读取以 NUL 终止的名称如果该文件被 指定为-则从标准输入读文件名 -L, --max-line-length 显示最长行的长度 -w,--words显示单词计数--help显示此帮助信息并退出--version显示版本信息并退出[zhbzhb-m1 ~]$cat/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.1.8.88 CentOS7.redhat.fun CentOS7[zhbzhb-m1 ~]$wc/etc/hosts313197/etc/hosts# 统计文件 line 数量[zhbzhb-m1 ~]$wc-l/etc/hosts3/etc/hosts# 统计文件 word 数量[zhbzhb-m1 ~]$wc-w/etc/hosts13/etc/hosts# 统计文件 bytes 数量[zhbzhb-m1 ~]$wc-c/etc/hosts197/etc/hosts# 统计多个文件数据[zhbzhb-m1 ~]$wc/etc/hosts /etc/fstab313197/etc/hosts1260541/etc/fstab1573738总用量三、bash 操作技巧本章是「提效」篇掌握 Tab 补全、历史命令、录制回放和快捷键敲命令快一倍。3.1 Tab 键补全作用补全命令、补全选项、补全参数减少手动输入。技巧按一次 Tab 就出结果说明匹配唯一按两次才补全说明匹配结果不唯一。示例# tab 一次就出结果说明匹配结果唯一# tab 两次才补全出结果说明匹配结果不唯一# 补全命令[zhbzhb-m1 ~]$ pastabtabpasswdpastepasuspender[zhbzhb-m1 ~]$ passtab# 自动显示为[zhbzhb-m1 ~]$passwd# 补全选项[zhbzhb-m1 ~]$passwd--dtab# 自动显示为[zhbzhb-m1 ~]$passwd--delete# 补全参数[zhbzhb-m1 ~]$file/etab# 自动显示为[zhbzhb-m1 ~]$file/etc/3.2 history 命令作用显示或操作命令历史列表。注意查看帮助要用help history不能用history --help会报无效选项。常用选项选项 / 用法说明-c清空历史列表-w将历史写入文件~/.bash_history!N执行历史中第 N 条命令!关键词执行最近一条以该关键词开头的命令示例# history 命令查看帮助不能使用 history --help[zhbzhb-m1 ~]$history--help-bash: history: --: 无效选项 history: 用法:history[-c][-d 偏移量][n]或history-anrw[文件名]或history-ps参数[参数...][zhbzhb-m1 ~]$helphistoryhistory:history[-c][-d 偏移量][n]或history-anrw[文件名]或history-ps参数[参数...]显示或操纵历史列表。 带行号显示历史列表将每个被修改的条目加上前缀 *。 参数 N 会仅列出最后的 N 个条目。 选项 -c 删除所有条目从而清空历史列表。 -d 偏移量 从指定位置删除历史列表。 -a 将当前绘画的历史行追加到历史文件中 -n 从历史文件中读取所有未被读取的行 -r 读取历史文件并将内容追加到历史列表中 -w 将当前历史写入到历史文件中并追加到历史列表中 -p 对每一个 ARG 参数展开历史并显示结果而不存储到历史列表中 -s 以单条记录追加 ARG 到历史列表中 如果给定了 FILENAME 文件名则它将被作为历史文件。否则 如果 $HISTFILE 变量有值的话使用之不然使用 ~/.bash_history 文件。 如果 $HISTTIMEFORMAT 变量被设定并且不为空它的值会被用于 strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的时 间戳否则不打印时间戳。 退出状态 返回成功除非使用了无效的选项或者发生错误。 [zhbzhb-m1 ~]$ history 1 date 2 date -u 3 date --utc 4 date --universal 5 date -d -1day......# 清空历史操作记录[zhbzhb-m1 ~]$history-c# 使用上下键查找历史命令的时候只能查找现有的历史命令中命令[zhbzhb-m1 ~]$history1history2echohello world3ls4hostname5history# 调用历史第 2 条命令显示第 2 条命令后然后执行该命令[zhbzhb-m1 ~]$!2echohello world hello world# 从下往上匹配最后一个以 ho 开头的命令显示并执行该命令[zhbzhb-m1 ~]$!hohostnameCentOS7.wanho.net# 使用 -w 选项将历史命令写入到文件 ~/.bash_history[zhbzhb-m1 ~]$history-w[zhbzhb-m1 ~]$cat~/.bash_historyhistoryechohello worldlshostnamehistoryechohello worldhostnamehistoryhistory-w3.3 script 命令作用录制终端中的所有操作并保存到文件可回放常用于记录演示或排错过程。常用选项选项说明-t/--timing文件记录操作时间到文件用于回放-a/--append追加输出默认覆盖配套命令scriptreplay -t time.log record.log可动态回放录制内容。示例[zhbzhb-m1 ~]$ script--help用法 script[选项][文件]选项 -a,--append追加输出 -c,--command命令运行命令而不是交互式 shell -e,--return返回子进程的退出代码 -f,--flush每次 write(写)后运行 flush(冲刷)--force即使输出文件是链接也依然使用 -q,--quiet安静模式 -t, --timing[文件]将时间数据输出到标准错误(或文件)-V,--version输出版本信息并退出 -h,--help显示此帮助并退出# 记录终端中历史操作并保存到指定文件还可以同时记录操作时间[zhbzhb-m1 ~]$ script--timingtime.log record.log# 或者,此处-t后直接接入文件[zhbzhb-m1 ~]$ script-ttime.logrecord.log# 也可以添加重定向2是因为-t参数加了空格会导致文件不被参数识别,会直接将将时间数据输出到标准错误重定向即可[zhbzhb-m1 ~]$ script-t2time.log record.log# 录制期间执行几条命令最后 exit 退出录制[zhbzhb-m1 ~]$echohello world[zhbzhb-m1 ~]$hostname[zhbzhb-m1 ~]$date[zhbzhb-m1 ~]$exitScript done,fileis record.log# 查看日志内容[zhbzhb-m1 ~]$catrecord.log 脚本启动于2022年12月13日 星期二17时10分02秒[zhbzhb-m1 ~]$echohello world hello world[zhbzhb-m1 ~]$hostnamecentos79.linux.com[zhbzhb-m1 ~]$date2022年12月13日 星期二17:10:13 CST[zhbzhb-m1 ~]$exitexitScriptdoneon2022年12月13日 星期二17时10分27秒# 动态回放日志[zhbzhb-m1 ~]$ scriptreplay-ttime.log record.log3.4 bash 快捷键作用用键盘快速编辑命令行大幅提升效率。快捷键作用Ctrla 或者 Home光标定位到命令行开头Ctrle 或者 End光标定位到命令行末尾Ctrlu删除光标位置到命令行开头Ctrlk删除光标位置到命令行末尾Ctrl←光标向左跳转一个单词Ctrl→光标向右跳转一个单词Ctrlr搜索历史命令Ctrlw向左删除一个参数Esc松开 .打印上一个命令的最后一个参数CtrllL 的小写清空屏幕Ctrld登出终端写在最后本文从「控制台 / shell / 命令提示符 / 命令语法」四个基础概念讲起再到 9 个常用命令ls、date、passwd、file、cat、head、tail、less、wc最后落到 Tab 补全、history、script 录制回放和全套 bash 快捷键覆盖了 Linux 命令行从入门到上手的完整链路。本文关键词Linux 命令行、shell、bash、passwd、cat、head、tail、less、wc、Tab 补全、history、script、快捷键如果这篇笔记对你有帮助欢迎点赞、在看、转发也欢迎收藏备用。有问题欢迎在评论区留言交流。
返回列表