下面是一年多前读《鸟哥的Linux私房菜》总结的常用的命令、快捷键、Linux特殊符号。
Linux 常用命令 commond [-opt] param1 param2 ...
ls |
列出目录内容 ls [opt]... [file]... 参数: -a 列出所有的条目,包括隐藏的文件 -l 列出文件的详细信息 -s 打印文件的大小[块] -t 文件按时间排序 -h 用人类易读的方式打印文件大小[KB/MB/GB] |
nl |
带有行号的输出文件内容 nl [opt] [file] |
locale |
查看或设置语言设置 locale [opt] |
man |
在线参考手册 man [cmd] 附加功能: /[word] 向下查找文档中的字符 ?[word] 向上 [Home]/[End] 去第一页或者最后一页 n/N 查询下一个或者上一个 |
shutdown |
中断[halt]、关机[poweroff]或者重启计算机[reboot] shutdown [opt] time [warring] 例子: shutdown -H now|time中断 | halt shutdown -P/-h now|time 关机 | poweroff shutdown -r now|time 重启 | reboot |
su |
切换用户 su [opt] [u Name] |
sudo |
升级权限 sudo -S可以通过管道,免输入密码,shell编程时有用 例如: echo “root” | sudo -S source /etc/profile |
alias |
别名设置 [unalias 删除别名] 例子: alias la=”ls -al” |
uname |
查看系统信息 uname [opt] 参数: -a 打印出所有信息 -s 打印出内核名 -r 打印出发行版内核信息 -n 打印出网络节点主机名
|
env |
查看系统的环境变量[可以用set查看自定义的环境变量] 常见环境变量说明:[本机] HOSTNAME=ubuntu <== 主机名 TERM=xterm-256color <== 终端机使用的环境 SHELL=/bin/bash <== 使用的是那个shell HISTSIZE=1000 <== 指令历史纪录条数 OLDPWD=/home/wxh <== 上一个工作目录 USER=root <== 当前使用者 PATH=...... <== 执行文件索搜的目录 RANDOM <== 随机数[0~32767] |
locale |
查看语言环境信息[LANG是主语言环境值,最重要] locale [opt] |
ulimit |
设置/查看用户系统资源的限制 ulimit [opt] [配额] -H 严格设定 -S 警告设定 -a 列出所有限制额度 ...... |
history |
打印出以前使用过的命令 history [opt] 参数: n 列出几条命令 |
stty |
查询或设置终端机的快捷键 参数: -a 列出所有的参数 说明: intr 中断程序 quit 发出一个quit到目前正在运行的run程序 kill 删除目前指令列上所有文字 eof End Of File 结束输入 start 重启output stop 停止屏幕的输出 |
printf |
格式化输出数据 printf ‘打印格式’ data 参数: \a 警告声 \b 退格键 \f 清除屏幕 \n 换行 \r Enter键 \t 水平tab 键 例子: |
apt-get |
处理软件包的命令行 apt-get [opt] [cmd] [pkg] 参数: -q 输出到日志 -qq 不输出到日志 -d 仅下载,不安装或者解压 -y 不提示询问,直接YES -f 尝试修正系统依赖损坏处 -m 如果归档无法定位,继续尝试 -u 显示更新软件包的列表 命令: install 安装新的软件包 remove 移除软件包 update 重新获取软件包列表 upgrade 进行更新 autoremove 自动移除全部不使用的软件包 purge 移除软件包和配置文件 source 下载源码档案 check 检验是否有损坏 clean 清楚下载的归档文件 build-dep 为源码包配置编译依赖 |
apt-key |
Debian软件包的安全管理工具。每一个发布的deb包,都是通过秘钥认证,apt-key用来管理秘钥 例子: apt-key list 列出已保存在系统中的key apt-key add keyname 把下载的key添加到本地trusted数据库中 apt-key del keyname 从本地trusted数据库删除key apt-key update 更新本地trusted数据库,删除过期没用的key |
dpkg |
Debian的安装包管理器 dpkg [opt] [action] 参数: -i 安装deb包 -c 检查、列出deb包的内容 -l 显示已经安装的deb包和信息[后面接filename就是查询] -r 移除一个已安装的包裹[保留配置信息] -P 清除配置文件在内的所有包裹信息 -L 显示包安装到系统里面的文件目录信息[后面接filename就是查询] -s 显示已安装的包裹信息 -A 从软件包里读取软件信息 --configure 重新配置和释放软件 |
curl |
通过url语法在命令行下上传或者下载的软件工具 curl [opt] [URL] 参数: -C continue-at 断点传输 -c cookie jar 命令执行成功保存操作时生成的cookie到文件 -r range 分块下载 -v verbose 打印出更多信息 -m max-time 处理的最大时长 -H header 指定请求头参数 --connect-timeout 指定尝试连接的最大时间 -x proxy 指定代理服务器地址和端口 -T upload file 指定上传文件路径 -o output file 指定输出文件名 -O same as -o 但是保留原来的文件名 -d data 指定post内容 --retry 指定重试次数 -e referer url 指定引用地址 -I head 仅仅返回头部信息 -s silent 不输出任何东西 -L location 如果curl URL发生改变就跳转到新的地址 |
diff |
比较文件或者软件的新旧版本的差异 diff [opt] from-file to-file 参数: -b 忽略每行中的空格差异 -B 忽略空白行的差异 -i 忽略大小写的差异 |
crontab |
设置周期性被执行的指令[通过配置/etc/crontab来配置系统的例行性任务] crontab [-u username] [opt] 参数: -u 帮助其他使用者建立/移除crontab执行功能[只有root才能执行] -e 编辑crontab工作内容[edit] -l 查阅crontab工作内容[list] -r 移除所有的crontab的工作内容[remove] 指令编辑: 时间+指令串 注意anacrontab的使用 |
wget |
文件下载工具 wget [opt] [url] 参数: -O 重命名下载的文件[动态链接下载通常文件名不正确] -c 重启下载中断的文件[断点传输] -b 后台下载[通过tail -f wget-log查看下载进度] -o 把下载信息保存到日志文件[download.log] -Q 限制下载文件的大小 --limit-rate 限速下载 --wget-spider 测试下载速度 --mirror镜像网站下载 |
kill |
终止一个进程 [killall支持进程名] |
ps |
显示瞬间进程的状态 ps [opt] 常用参数组合: -aux/ 显示所有进程详细信息 -ef 显示所有进程详细信息 --sort 根据cpu或者内存使用率排序 |
xargs |
将标准输入作为命令的参数 STNIN | xargs commond xargs 与 没有xargs 的区别: |
type |
获取命令的来源是别名、函数还是外部命令 |
sysctl |
配置与显示在/proc/sys目录中的内核参数,可以用sysctl来设置或重新设置联网功能,比如:ip转发、ip碎片去除以及源路由检查等 参数: -w 临时改变某个指定参数的值 -a 显示所有系统参数 -p 从指定的文件加载系统参数 例子: sysctl -w net.ipv4.ip_forward=1 开启ip路由转发功能 |
常用的管道命令 |
|
cut |
将一段信息的某一段取出来 cut [opt] 参数: -d 后面接分隔字符 与-f一起使用 -f 取出第几段 -c 以字符的单位取出固定字符区间 例子: |
grep |
取出符合要求的行[主要是行] grep [opt] ‘find str’ file 参数: -c 计算找到字符串的次数 -i 忽略大小写 -n 输出行号 -v 反向选择 注意: 执行grep返回0表示索搜成功 返回1表示索搜失败 返回2表示文件不存在 |
sed |
用于过滤和转换文本的流编辑器 [主要是行] sed [opt] [action] 参数: -n 安静模式,不会打印多余的东西 -c 直接在指令模式上编辑 -f 直接将sed的动作写在一个文件中 -r sed动作支持延伸正规表示法 -i 直接修改读取文件内容,而不是屏幕输出 动作: [n1,n2]function a 新增 c 取代 d 删除 i 插入 p 打印 s 取代 例子: |
awk |
查找和文件语言处理[强大的文本处理工具,默认对行切片] awk ‘{条件1 动作1} {条件2 动作2}.......’filename 参数: -F 指定分隔符 后面接分隔符 输出可以用print或者printf 例子: |
sort |
排序指令 [uuiq在排序后使用,只显示同一个] sort [opt] [file|stdin] 参数: -f 忽略大小写 -M 以月份排序 -n 使纯数字进行排序 -r 反向排序 -t 分隔符 -k 以哪个区间来进行排序 |
tee |
双向重向导 [> 在输出到屏幕或者file后就不能处理] tee [-a] file 参数: -a 以累加的方式写入到文件中 例子: ls -l / | tee ~/homefile | grep -v 'etc' | less |
split |
文件的分区拆分[大文件拆分成多个小文件] split [-bl] file PREFIX 参数: -b 后面接欲分区的文件大小[b、k、m] -l 以行数来进行分区 例子: wxh@ubuntu:~$ cd /tmp; split -b 100K /etc/services services |
Shell Bash常用 |
|
read |
读取键盘输入的值 read [opt] [var] 参数: -p 后面接输入提示符 -t 后面接等着输入的时间 例子: |
declare/typeset |
声明变量的类型 declare [opt] var 参数: -a 声明为数组 -i 声明为整型 -x 声明为全局变量 = export 作用 -r 设置变量为readonly = java static final -f 设置为函数 例子: |
echo |
在显示器中打印一段文字 echo [opt] str 参数: -n 不输出换行 -e 可以识别反斜杠 |
unset |
取消变量或者函数 参数: -f 删除指定的函数 -v删除指定的变量,默认 |
export |
设置环境变量 参数: -f 代表变量为函数名称 -p 列出shell程序中的环境变量 注意: export添加的变量对父shell无效,只对当前shell和其子shell有效,当前shell执行完毕后,export的环境变量就自动销毁 export 只对当前的bash登陆的session有效,存放在内存中 可以编辑 /etc/profile文件修改环境变量,用source命令执行生效 |
source |
执行配置文件,使之立即生效不用注销 source filename |
test |
核对文件类型或者比较值 test expression 文件类型判断: -e 该档名是否存在 -f 该档名是否存在且为文件 -d 文件名是否存在且为目录 文件的权限判断: -r 是否存在且是否有可读权限 -w 是否存在且是否有可写权限 -x 是否存在且是否有可执行权限 -s 是否存在且是否为非空白文件 两个文件比较: -nt [newer than] 判断 file1 是否比 file2 新 -ot [older than] 判断 file1 是否比 file2 旧 -ef [equal file] 判断是否是同一个文件[判断inode] 两个整数比较: -eq 两个整数比较[equal] -ne 两个数值不等[not equal] -gt [greater than] n1 大于n2 -lt [less than] n1 小于 n2 -ge [greater than and equal] n1 >= n2 -le [less than and equal] n1<= n2 字符串判断: test -z string 判断字符串是否为0? 若为空则为true test -n string 判断字符串不为o?若为空则为false test str1 == str2 若相等 返回 true test str1 != str2 若相等 返回 false 多重判断条件: -a and 两个同时成立 例如: test -r file -a -x file -o or 两个有一个 ! 非 相反 |
用户权限相关命令 |
|
chgrp |
改变文件所属群组 例子: chgrp -r grpname dir/file |
chown |
改变文件拥有者 例子: chown -r uName dir/file |
chmod |
改变文件权限 chmod -r ugo dir/file [-r 递归] r 4 | w 2 | x 1 u=user, g=group, o=others 例子: chmod -r 777 dir chmod u=rwx,go=rx file |
umask |
查看/设置文件默认的权限 umask加的是禁用的属性 例子: umask 022 等于设置的默认权限是 u=rwx, go=rx |
groups |
查看当前用户所在的群组 |
newgrp |
切换当前的有效群组 |
useradd |
创建一个新用户 user [opt] 账户 参数: -u 后面接UID,指定本账户 -g 后面接init group -G 后面接minor group -d 指定home目录,而不使用默认home目录 -s 指定shell,取代默认的/bin/bash -e 后面接日期,格式为[YYYY-MM-DD]账号失效日期 -f 指定密码是否会失效 -D 查看预设值 |
passwd |
passwd: 修改用户密码 passwd [opt] [user] |
usermod |
修改一个用户账户的属性 usermod [opt] [user] 参数: -d 后面接家目录 -e 账户失效日期[YYYY-MM-DD] -f 后面接天数,密码失效 -g 后面接init group -G 后面接minor group -a 增加群组 -l 修改账号名称 -s 指定shell -u 后面接UID |
userdel |
删除用户 userdel [-r] [user] 参数: -r 连用户的home目录一起删除[递归删除] |
id |
打印有效的用户和组信息 id [opt] [user] |
groupadd |
增加组 groupadd [-g gid] [-r] groupname 参数: -g 后面接某个特定的GID -r 建立系统群组 |
groupmod |
修改系统中组的信息 groupmod [-g gid] [-n g_name] g_name 参数: -g 修改GID -n 修改组名 |
groupdel |
删除系统中的组 |
gpasswd |
管理/etc/group 和 /etc/gshadow[组管理员] gpasswd [opt] g_name 参数: 没有参数表示给groupname一个密码 -A 将g_name的主控权交由后面的使用者管理 -M 将账户加入该组 -r 将groupname的密码移除 -R 将groupname的密码失效 |
who |
显示谁登录进来 |
last |
显示登录历史 |
lastlog |
报告所有用户的最近登录情况,或者指定用户的最近登录情况 |
磁盘和文件系统指令 |
|
lsblk |
列出系统上所有磁盘列表 lsblk [opt] [dev] 参数: -d 列出磁盘本身,不列出磁盘分区数据 -f 列出磁盘内的文件系统 -p 列出该装置完整的文件名 |
parted |
列出磁盘分区表类型和分区信息[分区表类型有MBR、GPT、MSDOS等] parted dev_name print |
gdisk |
用于gpt类型的磁盘分区 [fdisk和gdisk一样,只不过用于MBR类型] gdisk [dev] 附加功能: d 删除一个分区 n 增加一个分区 p 打印出分区表 q 什么都不做离开 w 存储操作后离开 ? 打印可用指令 |
mkfs.xfs |
内建文件系统,也就是格式化 [mkfs是一个综合指令] mkfs.xfs [opt] dev 参数: -b block容量设置一般是4K -d 后面接data section相关的参数 -f 强制格式化 -i 设置与inode有关参数 -L 文件系统标头名称Label Name -r 指定realtime section |
xfs_repair |
xfs文件系统修复 xfs_repair [opt] dev 参数: -f 后面跟文件,而不是实体装置 -n 检查文件系统,但不修改 -d 单人维护模式 |
mount |
挂载文件系统[挂载后原目录下东西会暂时消失] mount [opt] [src] [tar] 参数: -a 将所有未挂载的磁盘都挂载上来 -l 显示挂载的信息 -t 加上文件系统的指定挂载类型 -o 添加额外的挂载信息 |
umount |
将装置文件卸载 umount [opt] dev/um point 参数: -f 强制卸载 -l 立即删除文件系统,比-f还强 |
文件和目录操作 |
|
touch |
创建空文件或者修改文件时间 touch [opt] file 参数: -a 仅仅更新访问时间 -m 仅仅更新修改时间 -c 仅仅修改文件时间,不存在就不创建 -d 修改你想要修改的时间 |
cd |
切换工作目录 cd [dir] |
pwd |
pwd=print work directory 打印出当前的工作目录 pwd [opt] 参数: -L 打印出逻辑路径 -P 打印出实际路径 |
mkdir |
新建一个目录 mkdir [opt] [dir] -m 设置目录的权限 as in chmod -p 检查是否有父目录 |
cp |
复制文件或者目录 cp [opt] src1 src2 src3 tar 例子: -a 等于dr -f 强制复制,不询问 -i 交互模式 -r 递归复制 -p 连同源文件的权限一同复制 -u src比tar新才更新 |
rm |
删除文件或者文档 [rmdir 删除空目录] rm [opt] file 例子: -f 强制删除 -i 交互模式 -r 递归删除 -d 删除空目录 |
mv |
移动或者重命名文件 mv [opt] src tar 例子: -f 强制删除 -i 交互模式 -u src比tar新才更新 |
file |
查看文件类型 |
fd |
列出文件系统的整体磁盘使用量 fd [opt] dir/file 参数: -a 列出所有文件系统 -h 自动的调整文件大小单位,以合适的单位显示 -i 用innode数量来显示 |
du |
推估目录所占的容量 du [opt] dir/file 参数: -a 列出所有的文件与目录容量 -h 自动的调整文件大小单位,以合适的单位显示 -s 列出总容量 |
ln |
建立实体链接与符号链接 ln [opt] src tar 参数 -s 建立符号连接,因为默认是实体链接 -f 如果目标文件存在,则删除强制建立一个链接 注意: 由于实体连接只能作用于文件,虽然优点多但是用的少,一般用符号连接[类似于windows的快捷方式] |
dd |
把指定输入文件拷贝到输出文件中,并可以格式转换 参数: if 就是input file 也可以是装置 of 就是output file 也可以是装置 bs 就是block size 预设大小是512bytes 可以设定成4K count 就是多少个bs 例子: 模板:dd if=”input_file” of=”output_file” bs=”block_size” count=”number” bs 和 count 可以不指定 |
文档操作 |
|
cat |
将一个文件连续的输出在屏幕上 cat [opt] [file] 参数: -n 打印出行号 -A 打印出特殊字符 |
less |
可翻页文件浏览查看 [more的扩展] less [opt] file 参数: -f 强制打开文件 -N 打印出行号 -s 显示连续空行为一行 -e 到文件结尾自动退出 附加功能: /[word] 向下找字符串 ? 向上找、 n/N 向前/向后搜索字符 g/G 去到第一行或者最后一行 |
head |
读取文档的前几行数据 [tail 后面取几行] head -n num 文件 参数: -n 表示显示几行数据 |
tar |
打包指令,常常和压缩指令一起使用[因为压缩指令只能压缩单一文件] tar [opt] src / tar [opt] src -C tar 参数: -t 查看压缩包内的文件 -c 建立打包 -x 解打包或解压缩 -v 查看压缩/解压缩过程中,显示处理的文件名 -f 跟要压缩/解压缩的文件 -z 用gzip来压缩/解压缩 -j 用bzip2来压缩/解压缩 -J 用zx来压缩/解压缩 -C 后面接要解压缩到目录 -p 保留备份数据的原本权限与属性,常用于备份重要资料 例子: 压缩:tar -zcvf filename.tar.gz 压缩文件 查询压缩包内容:tar -ztvf filename.tar.gz 解压缩:tar -zxvf filename -C 解压的目录 备份:time tar -jpcvf filename.tar.gz 备份的文件[time:显示备份时间] |
vi/vim |
vi编辑器指令分为三部分一般指令模式、编辑模式、指令咧命令模式 常用指令: vi filename 一般指令模式 - i、o、a进入插入模式 r 取代某个字符 - :wq、:q!、:wq! 退出vi编辑器 :w 保存当前编辑 - 按下[Esc]退回到一般指令模式 - [ctrl] + f 等于 [PageDn] - [ctrl] + [b] 等于 [pageUp] - 0 等于 [Home] - $ 等于 [End] - G 跳到最后一页 - gg 跳到第一行 - nG/ngg 跳到第n行 - /word 在文件内向下寻找这个单词 ? 向上 - n 继续向下搜索这个单词 N 向上 - :n1,n2s/word1/word2/gc 在n1~n2之间寻找word1这个单词并用word2取代 [有交互模式] 取消c没有交互模式 - ndd 删除光标所在的向下的n行 - nyy 复制光标所在的下n行 用 p 指令粘贴 - u 还原上一个动作 等于 windows上的[ctrl] z - . 重复执行前一个动作 扩展功能: >> 区块选择[经过的地方反白选择] v 字符选择 V 列选择 [Ctrl] + v 区块选择 ==> y 复制 d 删除 p 粘贴 vi file1 file2 ... :n 编辑下个文件 :N 编辑上一个文件 :files 列出这个vim开启的文件 Ctrl+s 冻结vi编辑器 Ctrl+q 结束冻结vi编辑器 >> 其他 :set list 显示换行符 :set ff? 显示文件格式[dos还是unix] :set fileformat 设置文件的格式[dos还是Unix] |
查找文档命令 |
|
which |
查看可执行文档[shell命令]的位置 |
whereis |
查找文件名[只会在特定目录中查询,速度快] whereis [opt] file/dir 参数: -l 列出whereis会去查询的几个主要目录 |
locate |
查找文件名[在数据库文件中查找,速度快但一天更新一次] locate [opt] keyword 参数: -i 忽略大小写 -l num 输出几行 -S 显示数据库相关信息 注意: 相关的数据库文件/var/lib/mlocate一天更新一次,所以你可以用updatedb更新数据库文件 |
find |
查找文件名[扫描整个磁盘,速度慢但功能全] find [path] [opt] str 参数: 与时间相关 与使用者和组名相关 -name 与文件权限和名字有关 |
Linux特殊符号
. |
代表本层目录 |
.. |
上层目录 |
- |
前一个工作目录 |
~ |
代表用户家目录 |
| |
管道命令,将一个命令的结果作为下一个命令的输入 |
\ |
换行不执行 |
() |
在中间为子shell的起始和结束 |
{} |
在中间为命令区块的组合 |
[1]>/>> |
以覆盖/追加的方法输出到指定的文件或者装置上[正确的数据 Standard Output] |
[2]>/>> |
以覆盖/追加的方法输出到指定的文件或者装置上[错误的数据 Standard Error Output] |
< |
将原本需要由键盘输入的数据,改成由文件来取代[Standard Input] |
<< |
结束的输入字符设置 |
; |
连续指令下达[不考虑指令前后相关性][通过回传值判断cmd执行是否成功] |
&& |
若cmd1执行成功,则执行cmd2 若cmd1执行不成功,则不执行cmd2 |
|| |
若cmd1执行成功,则不执行cmd2 若cmd1执行不成功,则执行cmd2 |
$# |
shell script中代表参数个数 |
$@ |
shell script中代表所有的变量 |
${n} |
shell script中代表第几个参数 ${0} shell script 的文档名 |
Linux通配符
* |
代表0到无穷多个任意字符 [有括号] 重复前一个字符,0到无穷多次 [无括号] |
? |
代表一定有一个任意字符 [有括号] |
[] |
代表一定有一个[]内的字符合符条件 |
[-] |
-在[]中代表在编码顺序内的所有字符 |
[^] |
若括号中的第一个字符为^,则表示反向选择 |
^ |
首行选择 |
$ |
尾行选择 |
. |
代表一定有一个任意字符 |
{} |
字符范围符,重复n到m个字符 |