第1章、需要了解的命令行相关事项
表1-1 如何在文件名字符中使用特殊字符 | |
字符 | 建议 |
/ | 绝不使用。不能转义 |
必须转义。避免使用 | |
_ | 绝不能作为文件或目录名的第一个字符 |
[] | 必须转义。避免使用 |
{} | 必须转义。避免使用 |
* | 必须转义。避免使用 |
? | 必须转义。避免使用 |
' | 必须转义。避免使用 |
" | 必须转义。避免使用 |
<空格> | 必须转义。通常无法避免,但尽量避免 |
表1-2通配符及其匹配含义 | |
符号 | 含义 |
* | 匹配0个或者多个任意字符 |
? | 匹配单个字符 |
[] | 匹配一组单个字符 |
{} | 字符串和范围{jpg,png} |
clear:重置屏幕
第2章、导航文件系统
ls命令详解 | |||||||||||||||||||||
ls | 列出文件和文件夹 | ||||||||||||||||||||
ls path | 列出文件夹内容 | ||||||||||||||||||||
ls /home/*.wmv | 使用通配符列出文件夹的内容 | ||||||||||||||||||||
ls -R/ls --recursive | 查看子文件夹中的文件列表 | ||||||||||||||||||||
ls -1/ls --format=single-column | 以一行显示内容列表 | ||||||||||||||||||||
ls -m/ls --format=commas | 以逗号分隔列表显示内容 | ||||||||||||||||||||
ls -a/ls -all | 查看隐藏的文件和文件夹 | ||||||||||||||||||||
ls -A | 查看不显示.与..隐藏文件夹 | ||||||||||||||||||||
ls -F/ls --classfy |
直观显示文件的类型
|
||||||||||||||||||||
ls --color |
以各种颜色显示内容
|
||||||||||||||||||||
ls -l/ls --format=long |
列出权限、所有者以及其他信息
r 允许读取 w 允许改写 x 允许执行 -出现在什么位置代表没有不能什么 所有者/组(root)的成员/其他用户 |
||||||||||||||||||||
ls -r/ls --reverse | 倒序显示文件内容 | ||||||||||||||||||||
ls -t/ls --sort=time | 按日期和时间排序内容 | ||||||||||||||||||||
ls -S/ls --sort=size | 按文件大小排序内容 | ||||||||||||||||||||
ls -h/ls --human-readable | 用k、M、G显示文件大小 | ||||||||||||||||||||
ls -i | 理解Linux存储文件的方式显示文件索引节点号 | ||||||||||||||||||||
pwd |
显示当前目录路径 pwd -P/pwd --physical 显示目标路径 pwd -L/pwd --logical 显示逻辑路径 |
||||||||||||||||||||
cd |
切换路径 cd - 切换到之前路径 |
第3章、创建和消毁
touch命令 |
|||||||||||||||||
touch a.txt | 将文件修改为当前时间 | ||||||||||||||||
touch -t |
将文件修改为任意所需的时间 -t[[CC]YY]MMDDhhmm[.ss]
|
||||||||||||||||
touch notexist.txt | 创建空文件notexist.txt |
mkdir 命令 | |
mkdir new | 创建新目录 |
mkdir -p tets/test mkdir --parents test/test |
创建新目录以及必要的子目录 |
cp命令 | |
cp a.txt a_copy.txt cp 源文件 复制后路径 cp 源文件 .(在当前目录创建源文件快捷方式) |
复制文件 |
cp * | 使用通配符复制文件 |
cp -v/cp --verbose | 显示复制文件的过程 |
cp -i/cp --interactive | 防止在复制是覆盖重要文件 |
cp -r/cp --recursive | 复制目录以及子文件 |
cp -a/cp --archive/cp -dpr/cp --no-dereference --preserve -recursive | 为建立完善副本而将文件复制到另外的一个目录 |
mv命令 | |
mv a/a a/b mv a/a . |
移动文件和文件夹 |
mv a b |
重命名文件和文件夹 a如果是软链接加上/代表软链接指向的目录 |
ln命令 | |
ln a.txt b.txt | 创建指向另一个文件或目录的链接 |
sudo ln -s /var/www /www sudo ln -s /var/www . sudo ln -s /var/www |
创建软链接 |
unlink a.txt | 移除链接 |
硬链接与软链接区别 | ||
类型 | 硬链接 | 软链接 |
链接指向 | 索引节点 | 名称 |
链接到目录 | 否 | 是 |
跨文件系统链接 | 否 | 是 |
移动源文件 | 链接有效 | 链接断开 |
更改目标的名称 | 链接有效 | 链接断开 |
删除链接 | 目标仍然存在* | 目标仍然存在* |
链接的索引节点 | 与目标相同 | 与目标不同 |
存储空间 | 无 | ~4KB |
rm 命令 | |
rm a.txt | 删除文件 |
rm *.txt | 使用通配符删除文件 |
rm -i | 防止删除关键文件 |
rmdir path | 删除空目录 |
rm -rf/rm --recursive --force | 删除文件和非空目录 |
第4章、学习命令
man命令[manual(手册)] | |||||||||||||||||
man ls |
查找ls命令相关信息
|
||||||||||||||||
man -f/man --whatis/whatis | 基于命令名称来快速弄清其功能 | ||||||||||||||||
man -k/man --apropos/apropos | 基于其功能搜索命令 | ||||||||||||||||
man [1-2] passwd | 读取特定页数的手册 |
info命令 | |||||||||||||||||||||
info info | 学习info命令 | ||||||||||||||||||||
info -d | 添加包含info格式帮助文档的目录 | ||||||||||||||||||||
info -f | 指定要读取的info格式的帮助文档 | ||||||||||||||||||||
info -n | 指定首先访问的info帮助文件的节点 | ||||||||||||||||||||
info按键 |
|
whereis 命令 | |
whereis kword | 查找命令的可执行文件、源文件、手册路径 |
whereis -b | 只查找二进制文件路径 |
whereis -m | 只查找手册路径 |
whereis -s |
只查找源文件路径 |
which命令 | |
which kword | 查找将要运行命令的路径 |
which -a kword/whereis -s kword | 显示kword命令全部路径 |
type命令 | |||||||||||
type ls |
shell如何解释命令
|
||||||||||
type -t ls | builtin |
第5章、组合命令
命令栈:
5.1、将命令放在一行上,以;分隔命令。
5.2、用&&代替;,紧当前面的命令执行成功后才进行后面的命令。
5.3、||紧当前面的命令执行失败后才执行后面的命令。
5.4、$(),将一条命令的输出插入到另外一条命令中如mkdir $(date "+%Y-%m-%d");
5.5、
三种输入/输出流 | |||
文字描述符 | 名称 | 常见缩写名 | 典型的默认设备 |
0 | 标准输入 | stdin | 键盘 |
1 | 标准输出 | stdout | 终端 |
2 | 标准错误 | stderr | 终端 |
管道|用法 | |
ls -1 | less | 将ls -1结果传递到 less |
ps ux | grep firefox | 查找是否有firefox程序在运行 |
5.6、>将结果输出定向输出到文件中
ls -1F > a.txt
5.7、set -o noclobber 防止重定向覆盖文件 如果需要覆盖文件使用>| 替代 >,取消noclobber set +o noclobber.
5.8、将命令输出追加到文件中用>>
5.9、将文件用作命令的输入使用<,例子:tr 'A-Z' 'a-z' < command.txt > command_lower.txt.
5.10、tee命令将输出同时发送到文件和stdout, ls -1 | tee command.txt,追加使用tee -a ls-1 | tee -a command.txt。
第6章、查看文件
文件相关命令 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
file a.txt | 显示文件类型 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat a.txt | 在标准输出设备上查看文件 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat a.txt b.txt | 将文件拼接到标准输出设备上 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat a.txt b.txt > c.txt | 将文件拼接到另外的文件 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat -n | 拼接文件并显示行号 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
less |
逐屏显示文件
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
less -M或者按"="键 |
less的结果中显示文件信息 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
ls --color | less -R |
修复特殊字符带来的混淆 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
less搜索命令/ |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
export EDITOR=vim |
按v进入编辑器,使用左边设置默认编辑器 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
head a.txt b.txt |
查看多个文件的前10行数据没有b.txt就显示单个文件 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
head -n 100 |
显示文件的前100行数据 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
head -c |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
tail | 查看文件倒数10行 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tail -n 10/ tail --lines=10 | 查看文件倒数n行数据 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tail-f |
查看文件经常更新行 tail -f --pid=2112 /var/log/apache2/error.log |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
tail --retry | 文件消失或者突然不可访问 |
第7章、使用过滤器操作文本文件
过滤器操作文本文件 | |||||||||||||||||
wc |
wc -l/wc --lines 提供行数 wc -m/wc --chars 提供字符数 wc -w/wc --words 提供单词数 默认显示全部 |
||||||||||||||||
sed '/^$/d' "a.txt" | wc -l | 删除a.txt空白来统计数据 | ||||||||||||||||
nl |
nl 给文件非空行编号 nl -b t给文件非空行编号 nl -b a给文件所有行编号 |
||||||||||||||||
cut |
cut -f(--fields) 1,3 a.txt echo wu.images.xx.com | cut -d '.' -f 2-4 cut -f 1,3 --output-delimiter=',' a.txt |
||||||||||||||||
sort |
sed ld a.txt | sort -t ' ' -k 4 -r -k/--key -r/--reverse du -d 1 -h | sort -h(如果du -h,sort -h才能正确排序 sort -n 会不能正确排序) |
||||||||||||||||
uniq |
去重命令(uniq去重去的是相邻重复元素 ) history | awk '{print $2}' | sort | uniq |
||||||||||||||||
tr |
tr a-z A-Z 将字符小写转大写
|
||||||||||||||||
tr -s |
使用单个实例替换多个重复的字符如: tr -s [:blank:] |
||||||||||||||||
tr -d |
删除匹配的字符 |
||||||||||||||||
sed 's/markdown.txt/markdown/g' | 转换文本 | ||||||||||||||||
awk |
打印文件中的特定字段 wc -c /var/mail/mail | awk '{print $1}' |
第8章、拥有者和权限
拥有者和权限命令 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
whoami | 查看身份命令 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
su username | 切换到username用户 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
su -l/su --login user | 登录user账号 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
su如果不行就sudo su | 成为root用户 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
su - | 登录root用户 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chgrp | chgrp admins a.sh 将a.sh用户组修改为admins组 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chgrp -R/--recursive | 递归修改文件用户组 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chown | chown u a.txt 改变文件的拥有者 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chown -R/--recursive | 与chgrp -R类似 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chown owner:group |
chown u:admins a.txt同时修改用户以及用户组 chown :group 等价于 chgrp 命令 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chmod |
上表root用户除外 chmod [ugo][-+=][rwx] chmod [0-7][0-7][0-7]
chmod 600 a.txt chmod -R 递归修改权限 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chmod u[+-]s chmod 4[0-7][0-7][0-7] |
设置suid chmod u+s a.txt 或 suid 4754 a.txt 取消suid chmod u-s a.txt 或 suid 0754 a.txt |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chmod g[+-]s chmod 2[0-7][0-7][0-7] |
设置或者取消sgid | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chmod [+-]t chmod 1[0-7][0-7][0-7] |
设置或者取消 sticky bit |
第9章、归档和压缩
归档与压缩相关命令 | |||||||||||||||||||||||||
zip a.zip a.txt b.txt | 将文件压缩到a.zip压缩文件中 | ||||||||||||||||||||||||
zip -[0-9] |
|
||||||||||||||||||||||||
zip -i/--include | zip a.zip . -i *.txt | ||||||||||||||||||||||||
zip -r/--recurse-paths | zip -r a.zip reading/ -i *.txt | ||||||||||||||||||||||||
zip -P zip -e |
用密码保护压缩的zip文档 zip -P 123456 a.zip *.txt zip -e a.zip *.txt |
||||||||||||||||||||||||
unzip a.zip |
解压缩文件 unzip -v(verbose) 查看具体操作 unzip -t(测试解压缩文件) zip -l! |
||||||||||||||||||||||||
gzip |
gzip 与 zip类似也有压缩率选项 gzip 可以不需要压缩后压缩文件名,默认删除原压缩文件 gzip a.txt gzip -c a.txt > a.txt.gz(通过-c保留原文件) gzip -r 与zip -r 类似,但是单独压缩 |
||||||||||||||||||||||||
gunzip |
gunzip a.txt.gz 默认会删除压缩文件 gunzip -c a.txt.gz > a.txt (保留原压缩文件) gunzip -t 测试解压缩命令 |
||||||||||||||||||||||||
bzip2 |
bzip2也存在压缩率 bzip2 a.txt 默认生成.bz2文件删除原文件 bzip2 -k a.txt(-k/--keep)保留原文件 |
||||||||||||||||||||||||
bunzip2 |
bunzip2 a.txt.bz2 默认删除压缩文件 bunzip2 -k a.txt.bz2 保留压缩文件 bunzip2 -t 测试解压缩命令 |
||||||||||||||||||||||||
tar |
tar -cf a.tar *.txt tar -cf a.tar a/ -p/--preserve-permissions、--same-permissions保留权限 -z(--gzip) 可以tar调用gzip命令 -v/--verbose tar -pzcvf a.tar.gz moby-dick/ -j使用bzip2命令 tar -zvtf测试解压缩文件如果是bzip2压缩使用 tar -jvtf tar -pzvxf a.tar.gz解压缩文件(-x/--exteact) |
第10章、查找文件、目录、单词和短语
查找相关命令 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
locate |
可能slocate命令或者mlocate locate slocate.db |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
locate -i | 不区分大小写搜索 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
updatedb | 更新locate数据库,time updatedb会显示运行耗时 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
grep |
grep xxx a.txt/*.txt 在文件中查找xxx字符串
grep 'hello man!' * grep -R递归查找字符串 grep --color=auto搜索单词并突出结果 grep -i 忽略大小写 grep -w 搜索完整单词 grep -n 显示行号 [command] | grep grep [-ABC] -A/--after-context -B/--before-context -C/--context=# grep -v显示文件中没有匹配的行数据 grep -l/--files-with-matches 列出包含搜索词语的文件 grep -c 文件中单词出现的次数 grep -c rocky "a.txt" grep | grep 在搜索结果中搜索 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
find |
|
第12章、shell
shell 相关命令 | |||||||||||
history |
查询历史shell命令 history history | less history 10 查询最近10条命令 history | grep version 查找包含version的命令 |
||||||||||
!! | 再次执行上次命令 | ||||||||||
![##] | !499 使用命令行号再次运行之前的命令 | ||||||||||
![string] |
!history 从命令历史从后往前匹配第一条命令 |
||||||||||
^-r(ctrl-r) ^-s(ctrl-s) ^-g(ctrl-g) |
ctrl-rc查找历史命令并执行 ctrl-s在历史命令中向前搜索,无效需要XOXF流程控制临时禁用stty -ixon ctrl-g 取消搜索 |
||||||||||
alias |
|
||||||||||
function |
mkcd () { mkdir -p "$1"; cd "$1";}//单行模式结束需要加; listfunc(){ for func in $(compgen -A function | grep -v _); do declare -f $func; echo -e " "; done } |
||||||||||
unset -f name | unset -f mkcd;删除函数,在会话中有效 |
第13章、监控资源
系统资源相关命令 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uptime | 显示计算机工作时间 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
ps |
|
第14章、安装软件
安装软件相关命令 | |
rpm -ihv rpm -Uhv |
使用-U比-i好 U代表升级 i代表安装 U没有会进行安装 rpm -Uhv a.rpm b.rpm |
rem -e [package] | rpm -e nmap 删除安装包 |
yum install [package] | yum install shotwell |
yum remove [package] |
yum remove shotwell yum list installed查看系统安装 |
yum update | 更新软件 |
yum search [string] yum list available |
yum list available | grep wireshark |
dpkg -i [package] |
dbkg -i a.deb |
dpkg -r [package] |
dbkg -r skype |
apt-get install [package] |
apt-get update apt-get install bluefish |
apt-get remove [package] |
apt-get remove sshfs |
apt-get upgrade |
升级软件包及其依赖程序 |
apt-cache search |
查找可下载的软件包 |
apt-get clean/autoclean.autoremove |
第15章、连接
连接相关命令 | |||||||||||||
ifconfig ip addr show |
查看网络接口状态 | ||||||||||||
ping ping -c |
ping www.baidu.com ping -c 3 www.baidu.com 后者ping3次结束前者一直ping直到ctrl+c |
||||||||||||
tracerote tracerote -m 40 |
跟踪数据经过的路由 |
||||||||||||
host dig |
host www.baidu.com dig www.baidu.com a
|
||||||||||||
ifconfig ip addr add ip link set |
配置网络端口 |
||||||||||||
iwconfig nmcli |
查看无线网络接口的状态 |
||||||||||||
dhclient |
使用DHCP获取新的网络地址 |
||||||||||||
ifup ip link set |
激活网络连接 ifup eth0 |
||||||||||||
ifdown ip link set |
关闭网络连接 |
||||||||||||
route ip route |
显示ip路由表或修改route root <=> netstat -nr/--numeric --route |
第16章、操作网络
操作网络相关命令 | |||||||||||||||||||||
ssh | 登录另外一台计算机 | ||||||||||||||||||||
sftp |
|
||||||||||||||||||||
scp | 在主机安全复制文件 | ||||||||||||||||||||
rsync | 安全传输和备份文件 | ||||||||||||||||||||
wget |
非交互式下载文件 wget -r -12 -np -w 5 -A.mp3 -R.html,.gif http://www.baidu.com/mp3/ 非交互式下载整个网站 wget -E -r -k -p -w 5 -np http://www.baidu.com |
||||||||||||||||||||
curl |
顺序下载多个文件和互联网资源 curl -o http://www.wbez.org/ta/[1-10].rm |