参考资料
- 命令行参考网站:https://www.linuxcool.com/
- 主要参考书:Linux命令行大全
- 辅助参考书:Linux命令行与Shell脚本编程大全
1 什么是Shell
- 如果提示符的最后一个字符是#,而非$,表明该终端会话有超级用户权限
- 使用Ctrl-C和Ctrl-V执行复制和粘贴是没用的,这些组合键对Shell而言有不同的含义,
- df 查看磁盘可用空间
- du 查看某特定目录的磁盘可用空间
- free 查看可用内存容量
- exit 或 Ctrl-D 关闭终端窗口
2 导航
- pwd 输出当前的工作目录名称
- cd 修改目录
- 绝对路径,如 cd /usr/bin
- 相对路径,如 cd ./bin (或直接 cd bin 即可)
- cd … 当前工作目录的父目录
- cd - 切换回前一个工作目录
- 文件名区分大小写
- 命令区分大小写
- 没有文件扩展名的概念
3 探索Linux系统
- 在类UNIX系统中(如Linux)存在一个普遍观念:万物皆文件(everything is a file)。
- ls 列出目录内容
- 列出多个目录的内容,如主目录和/usr目录内容: ls ~ /usr
- ls -l 显示细节
- ls -lt 显示细节并按修改时间排序
- file 确定文件类型
- less 查看文件内容
- 鼠标双击可以复制,单击中键粘贴
4 操作文件和目录
- 通配符——路径名扩展
- mkdir 创建目录
- mkdir dir1
- mkdir dir1 dir2 dir3
- touch 创建文件
- cp 复制文件和目录
- cp item1 item2
- cp item… directory 复制多个文件或目录
- cp -u 复制时跳过那些不必复制的文件
- mv 移动和重命名文件和目录
- mv item1 item2
- mv item… directory
- rm 删除文件和目录
- 小心rm,删除就找不回来了
- rm -ri 删除前会有提示
- ln 创建硬链接和符号链接
- ln file link 硬链接
- 硬链接不能引用其所在文件系统之外的文件,如果文件与链接不在同一个磁盘分区内的话,无法引用该文件
- 硬链接不能引用目录
- ln -s item link 符号链接
5 和命令打交道
- 可以使用分号作为分隔符,在命令行中一次性输入多个命令
- 如 cd /usr; ls; cd -
- 方括号表示这些项是可选的
- | 表示这些项之间是互斥关系
- type 显示命令类型
- which 显示可执行文件的位置
- 只适用于可执行文件
- help 获取Shell内建命令的帮助信息
- 如 help cd
- 如 mkdir --help
- man 显示命令的手册页
- apropos 显示适合的命令清单
- whatis 显示手册页的简述
- 如 whatis ls
- info 显示命令的info条目
- alias 创建自己的命令
- 创建之前,先用 type 检查别名是否已被占用
- 为自己的命令创建别名,如 alias foo=‘cd /usr; ls; cd -’
- unalias 删除自己创建的命令
6 重定向
- I/O重定向允许我们修改输出的去处和输入的来源。通常输出会显示在屏幕,输入则来自键盘,但有了I/O重定向,两者都可以改变
- 输出
- > 标准输出重定向
- 将命令输出结果保存在文件中,如 ls -l /usr/bin > output.txt
- >> 标准输出重定向,追加到文件尾部,不是从头覆盖
- 2> 标准错误重定向
- &> 标准输出和错误联合重定向
- /dev/null 丢弃无用的输出,重定向到此处
- > 标准输出重定向
- 管道特性通过管道操作符 | ,可以将一个命令的标准输出传给另一个命令的标准输入,如
- ls -l /usr/bin | less
- ls -l /usr/bin | sort | less
- 输入
- cat 拼接文件
- 读取一个或多个文件并将其复制到标准输出,如
- (未解决的疑问,和less有何区别?) cat dog.txt
- 在命令后输入想放入的文本,如
- cat > dog.txt
- put dog in this text
- 读取一个或多个文件并将其复制到标准输出,如
- cat 拼接文件
- sort 排序文本行
- uniq 报告或忽略重复的行
- wc 统计文件中换行符、单词以及字节数
- grep 输出与模式匹配的行
- 如 ls /bin /usr/bin | sort | uniq | grep zip
- head/tail 输出文件的开头/结尾部分
- 可以设置行数,如 head -n 5 output.txt
- tee 读取标准输入并将输出结果写入标准输出和文件
- 如 ls /usr/bin | tee ls.txt | grep.zip
7 Shell 眼看世界
- echo 显示一行文本
- 通配符的路径名扩展,如
- echo D*
- echo *s
- echo /usr /*/share
- 浪纹线扩展,如
- echo ~
- 算术扩展,如
- echo $((2+2))
- 花括号扩展,如
- echo Number_{1…5}
- echo a{A{1,2},B{3,4}}b
- 应用:批量创建文件或目录
- 参数扩展,如
- echo $USER
- 命令替换
- 通配符的路径名扩展,如
- echo中的引用
- 双引号,使特殊字符丧失其特殊含义
- 单引号,禁止所有扩展
- 转义字符(反斜杠),选择性地避免扩展
8 高级键盘技巧
- clear 清除终端
- hitory 查看命令历史
- 光标移动的组合键
- Tab键自动补全
- !n 重复命令历史记录列表中的第n个命令
9 权限
- id 查看用户身份
- chmod 修改文件模式(权限)
- 注意,只有文件属主或超级用户才能做到。chmod命令支持两种截然不同的模式表示方式。
- umask 设置默认权限
- su 以其他用户身份启动Shell
- 如果没有指定用户,那么假定其为超级用户(注意,-l可以缩写为-)。可以通过以下的操作来为超级用户启动一个Shell:
- su -
- 输入密码
- exit退出超级用户身份
- 如果没有指定用户,那么假定其为超级用户(注意,-l可以缩写为-)。可以通过以下的操作来为超级用户启动一个Shell:
- sudo 以其他用户身份执行命令
- 和su的区别在于,sudo无须输入超级用户密码。使用sudo只需输入自己的密码来进行认证
- chown 更改文件属主和属组
- passwd 修改密码
10 进程
- 系统启动时,内核会以进程为形式展开一些自身的操作活动并运行一个名为init的程序。init再依次运行一系列初始化脚本(位于/etc),由这些脚本启动所有的系统服务
- 每个进程都被分配了一个叫作进程ID(Process ID,PID)的数字,按递增顺序分配,init的PID始终为1
- ps 查看进程
- ps 显示与当前终端关联的进程
- ps x 显示所有进程
- STAT 表示进程状态
- ps aux 显示更多进程信息
- top 动态查看进程
- 默认每3秒更新一次
- 类似于Win中的任务管理器,但其资源消耗少得多,运行速度快
- jobs 查看启动的作业
- fg 将作业置于前台
- 如 fg %1 ,数字为作业号(作业参数)
- bg 将作业置于后台
- kill 向进程发送信号
- 终止指定PID的进程,如 kill 28401
- 发送信号的格式 kill -signl PID
- killall 按名称终止进程,支持通配符
- 关闭系统,有序地终止所有进程,以及在断电之前执行重要的内务整理工作
- halt
- poweroff
- reboot
- shutdown
- sudo shutdown -h now 挂起系统
- sudo shutdown -r now 重启系统
学习进度 截止4.26
Linux命令行大全 第11章
Linux命令行与Shell脚本编程大全 5.2