目录
命令的基本格式
[lf@hadoop1 ~] $ command(命令) [-option(选项)] parameter1(参数1) parameter2(参数2) ...
重要的热键:Tab
- 命令补全功能
输入ca后连按两次Tab键
Tab接在一串命令的第一个命令的后面,则为“命令补全”
- 文件补齐功能
输入部分文件名后连按两次Tab键
Tab接在一串命令的第二个命令后面,则为“文件补齐”
重要的组合键:Ctrl+c、Ctrl+d
- Ctrl+c
中断目前的程序
- Ctrl+d
离开文字界面
帮助命令
- help
- man(manual)
man page按空格翻页,按q离开,输入“/word”查找关键字
关于命令后面的数字,也代表了一些信息:
代号 | 代表内容 |
1 | 用户在shell环境中可以操作的命令或可执行文件 |
2 | 系统内核可调用的函数与工具等 |
3 | 一些常用的函数与函数库,大部分为C的函数库 |
4 | 设备文件的说明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戏(games) |
7 | 惯例与协议等,例如Linux文件系统、网络协议、ASCII code等说明 |
8 | 系统管理员可用的管理命令 |
9 | 跟kernel有关的文件 |
man page的组成:
代号 | 内容说明 |
NAME | 简短的命令、数据名称说明 |
SYNOPSIS | 简短的命令执行语法(syntax)简介 |
DESCRIPTION | 较为完整的说明 |
OPTIONS | 针对SYNOPSIS部分中,有列举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令 |
FILES | 这个程序或数据所使用或参考或连接到的某些文件 |
SEE ALSO | 这个命令或数据有相关的其他说明 |
EXAMPLE | 一些可以参考的范例 |
BUGS | 是否有相关的错误 |
文件路径命令
- pwd(print working directory)
print name of current/working directory
- ls(list)
list directory contents
- cd(change directory)
Change the shell working directory
文件目录命令
- mkdir(make directories)
创建一个目录
基本语法 | 功能描述 |
mkdir -p | 创建多级目录 |
- rmdir(remove empty directories)
只能删空目录。非空目录用rm -rf /directory
- touch
创建一个或多个空文件
- cp(copy)
拷贝文件到指定目录
基本语法 | 功能描述 |
cp -r | 拷贝整个文件夹 |
- rm(remove)
移除文件或目录
基本语法 | 功能描述 |
rm -r(recursion) | 递归删除目录 |
rm -f(force) | 强制删除文件 |
rm -rf | 强制递归删除文件或目录 |
- mv(move)
移动文件与目录或重命名
若路径存在,则为移动。不存在,则为改名。相同则为覆盖。
- cat(concatenate and print)
查看文件内容
cat [选项] [文件路径] |more 按页显示文件内容
- more
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键。
快捷键
操作 | 功能说明 |
space | 向下翻一页 |
enter | 向下翻一行 |
q | 立刻离开more |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
- less
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持显示各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
快捷键
操作 | 功能说明 |
space | 向下翻动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/(string) | 向下搜寻(字符串)的功能: n:向下查找;N:向上查找 |
?(string) | 向上搜寻(字符串)的功能: n:向下查找;N:向上查找 |
q | 离开less这个程序 |
- >和>>
>输出重定向:会将原来的文件的内容覆盖
>>追加指令:不会覆盖内容,而是追加内容到文件尾部
基本语法 | 功能描述 |
ls -l > a.txt | 列表的内容写入文件a.txt(覆盖) |
ls -al >> b.txt | 列表的内容追加到文件b.txt末尾 |
cat 文件1 > 文件2 | 将文件1的内容覆盖到文件2 |
echo "内容" >> 文件 | 将内容追加到文件末尾 |
- echo
输出内容到控制台
echo [选项] [输出内容]
- head
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法 | 功能描述 |
head [-n] 文件 | n为显示前多少行 |
- tail
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容
基本语法 | 功能描述 |
tail [-n] 文件 | n为显示后多少行 |
tail -f 文件 | 实时追踪该文档的所有更新 |
几种文件查看命令的区别:
cat | 由第一行开始显示文件内容 |
tac | 从最后一行开始显示,可以看出tac是cat的倒写形式 |
nl | 显示的时候,顺便输出行号 |
more | 一页一页地显示文件内容 |
less | 与more类似,但可以往前翻页 |
head | 只看头几行 |
tail | 只看结尾几行 |
od | 以二进制的方式读取文件内容 |
- ln(link)
软链接也叫符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径
基本语法 | 功能描述 |
ln -s [原文件或目录] [软链接名] | 给原文件创建一个软链接 |
- history
查看已经执行过的历史命令,也可以执行历史命令
history | 显示所有的历史指令 |
history [n] | 显示最近执行的n条历史指令 |
history -c | 将目前的shell中的所有history内容全部消除 |
history -a | 将目前新增的history命令新增入histfiles中,若没有加入histfiles,则默认写入 ~/.bash_history |
histoty -r | 将histfiles的内容读到目前这个shell的history记忆中 |
history -w | 将目前的history记忆内容写入histfiles中 |
组管理命令
- groupadd
groupadd [组名]
创建一个组
- useradd
useradd -g [组名] [用户名]
在某个组中创建一个用户
- chown
改变文件的所有者,但是不改变文件的所在组
基本语法 | 功能描述 |
chown [新所有者] [文件/目录名] | 改变文件所有者 |
chown [新所有者:新所在组] [文件名] | 同时改变所有者和所在组 |
chown -R [新所有者] [目录名] | 递归改变目录下的所有文件 |
- chgrp
改变文件的所在组
基本语法 | 功能描述 |
chgrp [新所在组] [文件/目录名] | 改变文件所在组 |
chgrp -R [新所在组] [目录名] | 递归改变目录下的所有文件 |
- usermod
改变用户所在组
基本语法 | 功能描述 |
usermod -g [组名] [用户名] | 改变用户所在组 |
usermod -d [目录名] [用户名] | 改变用户登录的初始目录 |
权限管理命令
- chmod
修改文件或者目录权限
u:所有者 g:所在组 o:其他组 a:所有人(u+g+o) | |
基本语法 | 功能描述 |
chmod u=rwx,g=rx,o=x [文件目录名] | 赋予权限 |
chmod o+w [文件目录名] | 增加权限 |
chmod a-x [文件目录名] | 移除权限 |
通过数字的方式
r=4 w=2 x=1, rw=4+2=6, rx=4+1=5, wx=2+1=3, rwx=7 | |
基本语法 | 功能描述 |
chmod 751 [文件目录名] | 赋予权限 |
时间日期命令
- date
显示当前日期
基本语法 | 功能描述 |
date | 显示当前时间 |
date +%Y | 显示年 |
date +%m | 显示月 |
date +%d | 显示日 |
date "+%Y-%m-%d %H:%M:%S" | 显示年月日时分秒 |
date -s "日期" | 设置日期 |
- cal(calendar)
查看日历
基本语法 | 功能描述 |
cal | 显示当年当月日历 |
cal 年份 | 显示某一年日历 |
搜索查找命令
- find
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [搜索范围] [选项]
基本语法 | 功能描述 |
find [搜索范围] -name [文件名] | 按照指定的文件名查找模式查找文件 通配符:*.txt |
find [搜索范围] -user [用户名] | 查找属于指定用户名的所有文件 |
find [搜索范围] -size [文件大小范围] | 按照指定的文件大小查找文件 +20M:大于20M 20M:等于20M -20M:小于20M |
- locate
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate
locate 文件名
使用之前先执行updatedb指令
- grep和管道符号|
grep过滤查找,管道符号“|”表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法 | 功能描述 |
cat 文件名 | grep -n 字符串 | 显示匹配行及行号 |
cat 文件名 | grep -i 字符串 | 忽略字母大小写 |
压缩和解压、打包命令
- compress [-rcv] 文件或目录
- uncompress 文件.Z
压缩/解压缩
compress -r | 连同目录下的文件也同时给予压缩 |
compress -c | 将压缩数据输出成为standard output(输出到屏幕) |
compress -v | 显示出压缩后的文件信息以及压缩过程中的一些文件名变化 |
- gzip [-cdtv#] 文件名
- zcat 文件名.gz
gzip用于压缩文件,gzip -d、gunzip用于解压文件(不能压缩目录),zcat用于读取纯文本被压缩后的压缩文件
gzip -c | 将压缩数据输出到屏幕上,可通过数据流重定向来处理 |
gzip -d | 解压缩的参数 |
gzip -t | 用来检验一个压缩文件的一致性,检查文件有无错误 |
gzip -v | 显示出原文件/压缩文件的压缩比等信息 |
gzip -# | 压缩等级,-1最快,压缩比最差;-9最慢,压缩比最好;默认为-6 |
- bzip2 [-cdkzv#] 文件名
- bzcat 文件名.bz2
bzip2压缩文件,bzip2 -d解压文件,bzcat读取压缩文件
bzip2 -c | 将压缩过程中产生的数据输出到屏幕上 |
bzip2 -d | 解压缩的参数 |
bzip2 -k | 保留原文件 |
bzip2 -z | 压缩的参数 |
bzip2 -v | 显示出原文件/压缩文件的压缩比等信息 |
bzip2 -# | 与gzip相同,计算压缩比的参数 ,-9最佳,-1最快 |
- zip/unzip
zip用于压缩文件,unzip用于解压
基本语法 | 功能描述 |
zip -r 压缩后的文件名.zip 压缩路径 例:zip -r mypackage.zip /home/ | 递归压缩目录到当前目录下(保留原文件) |
unzip -d 解压路径 文件名 例:unzip -d /opt/tmp/ mypackage.zip | 指定解压后文件的存放目录 |
- tar
tar指令是打包指令,最后打包后的文件是.tar.gz
基本语法 | 功能描述 |
-c | 产生打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 通过gzip的支持进行压缩/解压缩 |
tar -zcvf 打包后的文件名 要打包的文件或目录 例:tar -zcvf myhome.tar.gz /home/ 例:tar -zcvf a.tar.gz a.txt b.txt | 打包目录/文件到当前目录 |
-x | 解包.tar文件 |
tar -zxvf 打包文件 例:tar -zxvf a.tar.gz | 解包到当前目录 |
tar -zxvf 打包文件 -C 解压目录 例:tar -zxvf myhome.tar.gz -C /opt/tmp/ | 解压到指定目录 |
-p | 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 |
-P | 保留绝对路径,即允许备份数据中含有根目录存在 |
- dump [-Suvj] [-level] [-f 备份文件] 待备份数据
数据备份
dump -S | 仅列出后面的待备份数据需要多少磁盘空间才能备份完毕 |
dump -u | 将这次dump的时间记录到/etc/dumpdateS文件中 |
dump -v | 将dump的文件过程显示出来 |
dump -j | 加入bzip2的支持,将数据进行压缩,默认bzip2压缩等级为2 |
dump -level | -0 ~ -9共10个等级 |
dump -f | 类似tar,后面接产生的文件 |
dump -W | 列出在/etc/fstab里面的具有dump设置的分区是否有备份过 |
- restore
利用备份文件恢复系统数据
restore -t [-f dumpfile] [-h] | 查看dump文件 |
restore -C [-f dumpfile] [-D 挂载点] | 比较dump与实际文件 |
restore -i [-f dumpfile] [-h] | 进入互动模式 |
restore -r [-f dumpfile] [-h] | 还原整个文件系统 |
任务调度命令
- crond
设置定时任务
基本语法 | 功能描述 |
crontab -e | 编辑crond定时任务 |
crontab -l | 查询crontab任务 |
crontab -r | 删除当前用户所有的crontab任务 |
例如:*/1 * * * * ls -l/etc/ > /tmp/to.txt
项目 | 含义 | 范围 |
第一个* | 一小时的第几分钟 | 0-59 |
第二个* | 一天的第几小时 | 0-23 |
第三个* | 一月的第几天 | 1-31 |
第四个* | 一年的第几月 | 1-12 |
第五个* | 一周的星期几 | 0-7 |
特殊符号 | 含义 |
* | 代表任何时间 |
, | 代表不连续的时间 |
- | 代表连续的时间范围 |
*/n | 代表每隔多久执行一次 |
块设备命令
- lsblk(list block devices)
查看块设备
- fdisk
硬盘分区
- mkfs
格式化磁盘
- mount/umount
挂载/卸载一个文件系统(用命令行挂载重启后会失效)
mount/umount [设备名称] [挂载目录]
永久挂载:通过修改/etc/fstab实现挂载,添加完成后执行mount -a即可生效
查找文件命令
- which
查询脚本文件
which -a command | 将所有由PATH目录中可以找到的命令均列出,而不只第一个被找到的命令名称 |
whereis
- 寻找特定文件
基本语法 | 功能描述 |
whereis -b | 只找二进制格式文件 |
whereis -m | 只找在说明文件manual路径下的文件 |
whereis -s | 只找source源文件 |
whereis -u | 查找不在上述三个选项当中的其他特殊文件 |
locate
- locate:依据/var/lib/mlocate内的数据库记载,找出用户输入的关键字文件名
- updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件
基本语法 | 功能描述 |
locate -i | 忽略大小写差异 |
locate -r | 后面可接正则表达式的显示方式 |
find
- find [PATH] [option] [action],与时间有关的参数有-atime、-ctime与-mtime
基本语法 | 功能描述 |
-mtime n | n为数字,意义为在n天之前的“一天之内”被更改过的文件 |
-mtime +n | 列出在n天之前(不含n天本身)被更改过的文件名 |
-mtime -n | 列出在n天之内(含n天本身)被更改过的文件名 |
-newer file | file为一个存在的文件,列出比file还要新的文件名 |
-uid n | n为数字,这个数字是用户的账号ID,即UID,这个UID是记录在/etc/passwd里面与账号名称对应的数字 |
-gid n | n为数字,这个数字是用户组名的ID,即GID,这个GID记录在/etc/group中 |
-user name | name为用户账号名称 |
-group name | name为用户组名 |
-nouser | 寻找文件的所有者不存在/etc/passwd的人 |
-nogroup | 寻找文件的所有用户组不存在于/etc/group中的文件 |
文件管理系统命令
- dumpe2fs
查看文件系统的相关信息
dumpe2fs -b 设备文件名 | 列出保留为坏道的部分 |
dumpe2fs -h 设备文件名 | 仅列出superblock的数据,不会列出其他的区段内容 |
- df [-ahikHTm] [目录或文件名]
列出文件系统的整体磁盘使用量
df -a | 列出所有的文件系统,包括系统特有的/proc等文件系统 |
df -k | 以KB的容量显示各文件系统 |
df -m | 以MB的容量显示各文件系统 |
df -h | 以人们较易阅读的GB、MB、KB等格式自行显示 |
df -H | 以M=1000K代替M=1024K的进位方式 |
df -T | 连同该分区的文件系统名称(例如ext3)也列出 |
df -i | 不用硬盘容量,而以inode的数量来显示 |
- du [-ahskm] 文件或目录名称
评估文件系统的磁盘使用量(常用于评估目录所占容量)
du -a | 列出所有文件与目录容量,因为默认仅统计目录下面的文件量 |
du -h | 以人们较易读懂的容量格式(G/M)显示 |
du -s | 列出总量,而不列出每个各别的目录占用容量 |
du -S | 不包括子目录下的总计 |
du -k | 以KB列出容量显示 |
du -m | 以MB列出容量显示 |
- ln [-sf] 源文件 目标文件
连接文件
ln | hard link |
ln -s | symbolic link |
ln -f | 如果目标文件存在时,就主动将目标文件直接删除后再创建 |
- fsck [-t 文件系统] [-ACay] 设备名称
检验文件系统是否出错
fsck -A | 依据/etc/fstab的内容,将需要的设备扫描一次 |
fsck -a | 自动修复检查到的有问题的扇区 |
fsck -y | 与-a类似 |
fsck -Y | 可以在检验的过程中使用一个直方图来显示目前的进度 |
- badblocks -[svw] 设备名称
检查硬盘或软盘扇区有没有坏轨
badblocks -s | 在屏幕上列出进度 |
badblocks -v | 可以在屏幕上看到进度 |
badblocks -w | 使用写入方法来测试 |
- ulimit [-SHacdfltu]
限制用户的系统资源
ulimit -H | 严格设置,不能超过设置的数值 |
ulimit -S | 警告设置,超过会有警告信息 |
ulimit -a | 列出所有的限制额度 |
ulimit -c | 限制每个内核文件(core file)的最大容量 |
ulimit -f | 此shell可以创建的最大文件容量(KB) |
ulimit -d | 进程可使用的最大断裂内存(segment)容量 |
ulimit -l | 用于锁定(lock)的内存量 |
ulimit -t | 可使用的最大CPU时间(s) |
ulimit -u | 单一用户可以使用的最大进程数量 |
系统变量管理命令
- echo $[变量名]
显示变量的具体内容
- unset [变量名]
取消变量
- [变量名] = [变量内容]
设置变量
- env
列出所有环境变量
- set
列出所有变量
- export [变量名]
引用自定义变量给后来调用的文件或其他程序(自定义变量转为环境变量)
- read [variable]
读取来自键盘输入的变量
read -p | 后面可接提示符 |
read -t | 后面可接等待输入的时间(s) |
- declare/typeset [variable]
声明变量的类型
declare -a | 将变量定义成数组类型 |
declare -i | 将变量定义为整数类型 |
declare -x | 将自定义变量变成环境变量 |
declare -r | 将变量设置为readonly类型,该不可更改内容和重设 |
某些系统默认变量的意义 | |
$ | 目前shell的线程代号 |
? | 上一个执行的命令所回传的值 |
HOME | 用户的主文件夹 |
SHELL | 目前环境使用的shell程序 |
HISTSIZE | 执行过命令的条数 |
邮件信箱地址 | |
PATH | 执行文件查找的路径 |
LANG | 语系数据 |
RANDOM | 随机数变量 |
选取命令
- cut
以行为单位分析某段信息
cut -d '分隔字符' -f [num] | 依据-d的分隔字符将一段信息切割成为数段,用-f取出第某段 |
cut -c 字符范围 | 以字符(characters)为单位取出固定字符区间 |
- grep [-acinv] [-A] [-B] [--color=auto] '所查找字符串' filename
分析一行信息,并取出所需的字符串
-a | 将binary文件以text文件的方式查找数据 |
-c | 计算找到 '所查找字符串' 的次数 |
-i | 忽略大小写 |
-n | 输出行号 |
-v | 反向选择 |
-A | (after),后接数字,意为除列出改行外,也列出后续n行 |
-B | (before),后接数字,意为除列出改行外,也列出前面n行 |
--color=auto | 将找到的关键字标注颜色 |
- tee [-a] filename
同时将数据流送与文件与屏幕
-a | 以累加(append)的方式,将数据加入file中 |
排序命令
- sort [-fbMnrtuk] [file or stdin]
-f | 忽略大小写 |
-b | 忽略最前面的空格符 |
-M | 以月份的名称排序 |
-n | 使用数字排序 |
-r | 反向排序 |
-u | (uniq)相同数据仅出现一行 |
-t | 分隔符,默认为Tab |
-k | 以某个区间(field)排序 |
- uniq [-ic]
将重复的行删除至显示一个
-i | 忽略大小写 |
-c | 进行计数 |
- wc [-lwm]
计算输出的信息的整体数据
-l | 仅列出多少行 |
-w | 仅列出多少字 |
-m | 仅列出多少字符 |
字符转换命令
- tr [-ds] SET1 ...
删除一段信息当中的文字或是进行文件信息的替换
-d | 删除信息当中SET1这个字符串 |
-s | 替换掉重复的字符 |
- col [-xb]
替换文本;将man page转存为纯文本文件以方便查阅
-x | 将tab键转换成对等的空格键 |
-b | 在文字内有反斜杠(\)时,仅保留反斜杠最后接的字符 |
- join [-ti12] file1 file2
将两个文件当中有相同数据的一行加在一起
-t | join默认以空格符分隔数据,并且对比第一个字段的数据; 如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个 |
-i | 忽略大小写 |
-1 | 第一个文件要用哪个字段分析 |
-2 | 第二个文件要用哪个字段分析 |
- paste [-d] file1 file2
将两行贴在一起,中间以Tab键隔开
-d | 后接分隔字符,默认为Tab |
- | 若file部分写成-,表示来自stdin |
- expend [-t] file
将Tab键转成空格键
-t | 后接数字,表示用多少个空格替换,默认为8 |
- xargs [-0epn] comand
参数代换,产生某个命令的参数
-0 | 如果stdin含有特殊字符,可还原成一般字符。这个参数可以用于特殊状态 |
-e | EOF(end of file),后接一个字符串,当xargs分析到这个字符串时停止 |
-p | 在执行每个命令的参数时询问用户 |
-n | 后接次数,每次command命令执行时,使用几个参数的意思 |
持续更新