Linux 常用命令
程序的组成部分
- 二进制程序文件、库文件、配置文件、帮助文件
- 库文件:不能独立执行,只能被调用时执行
- 配置文件、帮助文件:可被查看其内容的文件
Linux 命令基础知识
命令的语法通用格式 COMMAND OPTIONS ARGUMENTS
COMMAND
- 发起一命令:请求内核将某个二进制程序运行为一个进程
- 命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件
- 多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
- 普通命令:/bin, /usr/bin, /usr/local/bin
- 管理命令:/sbin, /usr/sbin, /usr/local/sbin
- 共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
- 32bits的库:/lib, /usr/lib, /usr/local/lib
- 64bits的库:/lib64, /usr/lib64, /usr/local/lib64
注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件
环境变量 PATH
- 从哪些路径中查找用户键入的命令字符串所对应的命令文件
-
查找次序:自左而右
echo $PATH
OPTIONS
- 指定命令的运行特性
选项有两种表现形式:
- 短选项:-C, 例如-l, -d,如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
- 长选项:--word, 例如--help, --human-readable, 注意:长选项不能合并
注意:有些选项可以带参数,此称为选项参数
ARGUMENTS
- 命令的作用对象;命令对什么生效
- 注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔。例如:ls -ld /var /etc
获取命令的使用帮助
内部命令
- help COMMAND
外部命令
- (1) 命令自带简要格式的使用帮助, COMMAND --help
- (2) 使用手册:manual 位置:/usr/share/man,man COMMAND
SECTION:
- NAME:功能性说明
- SYNOPSIS:语法格式
- DESCRIPTION:描述
- OPTIONS:选项
- EXAMPLES:使用示例
- AUTHOR: 作者
- BUGS: 报告程序bug的方式
- SEE ALSO: 参考
SYNOPSIS
- []:可选内容;
- <>:必须提供的内容;
- a|b|c:多选一;
- ...:同类内容可出现多个;
使用手册:压缩格式的文件,有章节之分
- /usr/share/man
- man1, man2, ...
1:用户命令; 2:系统调用; 3:C库调用; 4:设备文件及特殊文件;
5:文件格式;(配置文件格式) 6:游戏使用帮助; 7:杂项; 8:管理工具及守护进行;
man命令打开手册以后的操作方法
翻屏
- 空格键:向文件尾翻一屏;
- b: 向文件首部翻一屏;
- Ctrl+d:向文件尾部翻半屏;
- Ctrl+u:向文件首部翻半屏;
- 回车键:向文件尾部翻一行;
- k: 向文件首部翻一行;
- G:跳转至最后一行;
- #G: 跳转至指定行;
- 1G:跳转至文件首部;
文本搜索
- /keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
- ?keyword:从文件尾部向文件首部依次查找;
- n: 与查找命令方向相同;
- N: 与查找命令方向相反;
退出:
- q: quit
搜索引擎 google
- keyword filetype:pdf
- keyword site:domain.tld
书籍的出版社
- O'Reiley
- Wrox
- 机械工业、电子工业、人邮、清华大学、水利水电
常用命令
cd 命令 change directory
- cd: 切换回家目录
- cd ~:切换回自己的家目录
- cd ~USERNAME:切换至指定用户的家目录;
- cd -:在上一次所在目录与当前目录之间来回切换(这个我经常用)
相关的环境变量
- $PWD:当前工作目录
- $OLDPWD:上一次的工作目录
ls: list, 列出指定目录下的内容
- -a: 显示所有文件,包括隐藏文件;
- -A:显示除.和..之外的所有文件;
- -l: --long, 长格式列表,即显示文件的详细属性信息;
- -h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值;
- -d:查看目录自身而非其内部的文件列表;
- -r: reverse, 逆序显示;
- -R: recursive,递归显示;
ls -l boot.log
-rw-r--r--. 1 root root 8957 10月 14 19:34 boot.log (很重要)
- -:文件类型,-, d, b, c, l, s, p
- rw-r--r--
- rw-:文件属主的权限;
- r--:文件属组的权限;
- r--:其它用户(非属主、属组)的权限;
- 1:数字表示文件被硬链接的次数;
- root:文件的属主;
- root:文件的属组;
- 8957:数字表示文件的大小,单位是字节;
- 10月 14 19:34 :文件最近一次被修改的时间;
- boot.log:文件名
cat:concatenate 文件文本查看工具
用法
- cat [OPTION]... [FILE]...
- cat /etc/fstab
OPTION
- -n:给显示的文本行编号;
- -E: 显示行结束符$;
tac 文件文本查看工具和 cat 的用法一致只不过是倒叙而已
OPTION
- -n:给显示的文本行编号;
- -E: 显示行结束符$;
echo:回显
echo [SHORT-OPTION]... [STRING]...
- -n: 不进行换行;
- -e:让转义符生效;
- \n:换行
- \t:制表符
echo -e 'zhang\nbiao'
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
echo '$SHELL'
双引号:弱引用,变量引用会被替换;
echo "$SHELL"
注意:变量引用的正规符号
- ${name}
关机或重启命令:shutdown
shutdown [OPTIONS...] [TIME] [WALL...]
OPTIONS:
- -h: halt
- -r:reboot
- -c:cancel
TIME:
- now
- hh:mm
- +m
- +0
日期相关的命令
Linux:系统启动时从硬件读取日期和时间信息;读取完成以后,就不再与硬件相关联
主要分为两种类型:系统时钟 和 硬件时钟
hwclock, clock:硬件时钟
显示或设定硬件时钟
- -s, --hctosys:以硬件为准,把系统调整为与硬件时间相同;
- -w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;
which 命令显示命令所在的绝对路径
whereis命令只能用于搜索二进制文件(-b)、源代码文件(-s)、说明文件(-m)。如果省略参数则返回所有的信息。
alias 如果一个命令比较复杂,可以给它起个别名
获取所有别名
定义别名 (临时的,仅对当前终端有效)
alias NAME='COMMAND'
删除别名
unalias NAME
Filesystem Hierarchy Standard(文件层次标准)
/bin:所有用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
/root:管理员的家目录;可选;
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库;
ld*:运行时链接器/加载器;
modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点,cdrom, floppy等;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
bin, sbin
lib, lib64
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另一个层级目录;
X11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;
参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
Linux系统上的文件类型
- -:常规文件;即f;
- d: directory,目录文件;
- b: block device,块设备文件,支持以“block”为单位进行随机访问
- c:character device,字符设备文件,支持以“character”为单位进行线性访问
- major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
- minor number:次设备号,用于标识同一类型中的不同的设备;
- 8位二进制:0-255
- l:symbolic link,符号链接文件;
- p: pipe,命名管道;
- s: socket,套接字文件;
bash 基础特性
命令历史 shell进程会其会话中保存此前用户提交执行过的命令
history
命令用法
- history [-c] [-d 偏移量] [n]
- -c: 清空命令历史;
- -d offset:删除指定命令历史
- -r: 从文件读取命令历史至历史列表中;
- -w:把历史列表中的命令追加至历史文件中
history #:显示最近的#条命令
调用命令历史列表中的命令
再一次执行历史列表中的第#条命令 !#
再一次执行命令历史列表中最近一个以STRING开头的命令 !string
调用上一条命令的最后一个参数 Esc.
ls /etc 输入 Esc.后会自动补全参数/etc
bash的基础特性之:命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
- 例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b
如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b
- mkdir -pv /tmp/x/{y1/{a,b},y2}
如何创建a_c, a_d, b_c, b_d
- mkdir -v {a,b}_{c,d}
bash的基础特性:获取命令的执行状态结果
命令执行的状态结果,bash通过状态返回值来输出此结果:
- 成功:0
- 失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中
bash的基于特性:引用
- 强引用:'' 无须指定类型,默认均为字符型
- 弱引用:"" 无须指定类型,默认均为字符型
- 命令引用:`` 定义变量时必须指定类型、参与运算必须符合类型要求;调用未声明变量会产生错误
bash基础特性:快捷键 (熟练使用)
- Ctrl+a:跳转至命令行行首
- Ctrl+e:跳转至命令行行尾
- Ctrl+u:删除行首至光标所在处之间的所有字符;
- Ctrl+k:删除光标所在处至行尾的所有字符;
- Ctrl+l:清屏,相当于clear
文件查看类命令
分屏查看命令:more和less
more命令
more FILE
- 特点:翻屏至文件尾部后自动退出;
less命令
- less FILE
查看文件的前n行 (head命令)
- head [options] FILE
- options -n int
查看文件的后n行 tail命令
- tail [options] FILE
- options -n int
stat 命令 查看文件的元数据
- stat FILE
文件包括两类数据
- 元数据:metadata
- 数据: data
比较重要的元数据(时间戳):
- access time
- modify time
- change time
touch命令 改变文件的时间戳
- touch [OPTION]... FILE...
- -c: 指定的文件路径不存在时不予创建;
- -a: 仅修改access time;
- -m:仅修改modify time;
- -t STAMP
- [[CC]YY]MMDDhhmm[.ss]
touch -c -t 1909131212 kubeadm.yaml
cp命令
- 单源复制:cp [OPTION]... [-T] SOURCE DEST
- 多源复制:cp [OPTION]... SOURCE... DIRECTORY
- cp [OPTION]... -t DIRECTORY SOURCE...
单源复制:cp [OPTION]... [-T] SOURCE DEST
- 如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
- 如果DEST存在:
- 如果DEST是非目录文件:则覆盖目标文件;
- 如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
多源复制:
- cp [OPTION]... SOURCE... DIRECTORY
- cp [OPTION]... -t DIRECTORY SOURCE...
如果DEST不存在:错误;
如果DEST存在:
- 如果DEST是非目录文件:错误;
- 如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
常用选项:
- -i:交互式复制,即覆盖之前提醒用户确认;
- -f:强制覆盖目标文件;
- -r, -R:递归复制目录;
- -d:复制符号链接文件本身,而非其指向的源文件;
- -a:-dR --preserve=all, archive,用于实现归档;
- --preserv=
- mode:权限
- ownership:属主和属组
- timestamps: 时间戳
- context:安全标签
- xattr:扩展属性
- links:符号链接
- all:上述所有属性
mv命令:move
- mv [OPTION]... [-T] SOURCE DEST
- mv [OPTION]... SOURCE... DIRECTORY
- mv [OPTION]... -t DIRECTORY SOURCE..
常用选项:
- -i:交互式;
- -f:force
rm命令:remove
- rm [OPTION]... FILE...
常用选项:
- -i:interactive
- -f:force
- -r: recursive
删除目录:rm -rf /PATH/TO/DIR
危险操作:rm -rf /*
注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回