- 系统目录结构(/etc、/var、/dev等)
- 文件路径(绝对路径与相对路径)
- 文件管理:基础命令(echo、pwd、cd 、tree、ls、mkdir、touch、cp、mv、rename、rm)
- 文件管理:查看文件内容(cat、tac、more、less、head、tail、tailf、grep)
- 文件管理:文件查找及命令路径(which、whereis、locate、type、find)
- 文件管理:文件上传及下载(wget、curl、rz、sz)
- 文件管理:字符处理命令(sort、uniq、cut、tr、wc、sed、awk、column)
- 系统文件类型、后缀名
- 软硬链接的区别
- 命令的执行过程与hash缓存
[root@qls /etc]# ll ./ //当前目录
[root@qls /etc]# ll ../ //上层目录
说明:
所见即所得 ,可以输出内容到屏幕,打印变量,也可以创建文件,将数据写入到文件中(利用重定向 > >>)修改文件,返回数据。
格式:echo 【选项】【字符串】
选项:
【-e】 #支持特殊字符,进行转义,如: \n 换行符; \t tab键
参数:
指定要打印的内容
[root@ly01 ~]# echo hello shell
hello shell
[root@ly01 ~]# echo -e "hello\nshell"
hello
shell
[root@ly01 ~]# echo -e "hello\tshell"
hello shell
#############################################
、[root@qls ~]# echo -e "\033[31m 红色字 \033[0m"
红色字
[root@qls ~]# echo -e "\033[31mhello \033[0m"
hello
[root@ly01 ~]# echo $?
0
[root@ly01 ~]# echo "hello" >123.txt //创建文件
[root@ly01 ~]# echo world >>123.txt
> #重定向,会覆盖原文件中的内容。
>> #追加重定向,将数据追加文件的底部
[root@qls ~]# echo $USER
root
[root@qls ~]# echo $HOME
/root
[root@ly01 ~]# echo $PS1
[\u@\h \W]\$
[root@ly01 ~]# echo $USER //会解析变量,支持通配符
root
[root@ly01 ~]# echo '$USER' //原封不动打印
$USER
[root@ly01 ~]# echo "$USER" //会解析变量
root
[root@ly01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@ly01 ~]# echo '{1..10}'
{1..10}
[root@ly01 ~]# echo "{1..10}"
{1..10}
#{} 通配符,生成序列,无序的,中间使用","分隔
[root@ly01 ~]# echo `hostname`
ly01
[root@ly01 ~]# echo $(hostname)
ly01
[root@ly01 ~]# hostname
ly01
介绍:显示当前所在路径
结构:pwd 【选项】
[root@ly01 ~]# pwd
/root
介绍:切换目录
结构:cd 【目录】
root@qls /etc]# cd #直接回到当前用户的家目录
[root@qls ~]#
[root@qls ~]# cd - #返回到上一次所在的目录
/etc
[root@qls /etc]# cd . #保持在当前目录
[root@qls /etc]# cd .. #进入到当前目录的上一级目录
[root@qls /]# cd ~ #进入到家目录
[root@qls ~]# cd /root
[root@qls ~]# cd / #进入到/目录
[root@ly01 /etc/sysconfig]# cd ../../ //上级的上级
[root@ly01 /]#
说明:以树形的结构进行显示目录结构列表
格式:tree 【选项】【目录】
选项:
【-F】 #给不同文件类型加上不同的标识符(* , /, = , @ , | ),跟ls -F 类似 -
【-a】 #显示隐藏文件
【-d】 #只显示目录
【-L】 #遍历目录的最大层数,后跟大于0的正整数
[root@ly01 ~/01]# tree -F /tmp
/tmp
├── ks-script-4vZR2d*
├── oldboy/
│ └── student.txt
├── test.txt
├── vmware-root/
└── yum.log
[root@ly01 ~/01]# tree -a /tmp
├── test.txt
├── .Test-unix
├── vmware-root
├── .X11-unix
├── .XIM-unix
└── yum.log
[root@ly01 ~/01]# tree -d /var/log
/var/log
├── anaconda
├── audit
├── rhsm
└── tuned
4 directories
[root@ly01 ~/01]# tree -L 2 /
└── var
├── adm
├── cache
├── crash
├── db
├── empty
├── games
├── gopher
├── kerberos
├── lib
├── local
说明:显示目录下的内容,如不指定目录,则默认查看当前所在目录
格式:ls 【选项】【文件】
选项:
#内容信息显示
【-l】#以长格式显示目录列表的详细信息
【-a】#显示所有文件,包括隐藏文件
【-d】 #显示目录本身的信息
【-h】 #以人性化的方式显示文件大小
【-1】 #(数字1)以列表的形式显示文件名
【-i】 #显示文件的inode号,索引节点
#排序
【-t】#以时间信息进行排序,时间越早,排序越后
【-S】#以文件大小进行排序
【-r】 #倒叙排序
#指示类型
【-p】 #给目录加上一个/,标识目录
【-F】#给不同类型的文件加上一个标识符(/ 目录 ; = 表示套接字 socket文件; | 管道文件; * 可执行文件 ; @ 符号文件(已经不显示))
[root@ly01 ~]# ls
01 02 03 04 05 123.txt 1.txt data1 oldboy tmp
[root@ly01 ~]# ls /root
01 02 03 04 05 123.txt 1.txt data1 oldboy tmp
[root@ly01 ~]# ls -l // 简写为“ll”
total 8
drwxr-xr-x. 2 root root 6 Oct 28 15:14 01
drwxr-xr-x. 2 root root 6 Oct 28 15:14 02
drwxr-xr-x. 2 root root 6 Oct 28 15:14 03
drwxr-xr-x. 2 root root 6 Oct 28 15:14 04
drwxr-xr-x. 2 root root 6 Oct 28 15:14 05
-rw-r--r--. 1 root root 12 Oct 28 16:14 123.txt
-rw-r--r--. 1 root root 12 Oct 28 16:12 1.txt
drwxr-xr-x. 2 root root 64 Oct 28 15:27 data1
drwxr-xr-x. 2 root root 6 Oct 28 15:14 oldboy
drwxr-xr-t. 9 root root 181 Oct 28 15:06 tmp
[root@ly01 ~]# ll test.txt
//查看指定文件的详细信息
-rwx-w----. 1 root root 0 Nov 11 16:19 test.txt
[root@ly01 ~]# ll -a
total 32
dr-xr-x---. 10 root root 228 Oct 28 16:13 .
dr-xr-xr-x. 17 root root 224 Oct 28 15:21 ..
drwxr-xr-x. 2 root root 6 Oct 28 15:14 01
drwxr-xr-x. 2 root root 6 Oct 28 15:14 02
drwxr-xr-x. 2 root root 6 Oct 28 15:14 03
-rw-------. 1 root root 2104 Oct 28 16:48 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
[root@ly01 ~]# ls -ld /root
dr-xr-x---. 10 root root 228 Oct 28 16:13 /root
[root@ly01 ~]# ll -h /etc
total 1.1M
drwxr-xr-x. 3 root root 101 Oct 24 08:05 abrt
-rw-r--r--. 1 root root 16 Oct 24 08:07 adjtime
-rw-r--r--. 1 root root 1.5K Jun 7 2013 aliases
-rw-r--r--. 1 root root 12K Oct 24 08:09 aliases.db
drwxr-xr-x. 2 root root 236 Oct 24 08:05 alternatives
[root@ly01 ~]# ls -1 /root
01
02
03
04
05
123.txt
1.txt
data1
oldboy
tmp
[root@ly01 ~]# ll -t /root
total 8
-rw-r--r--. 1 root root 12 Oct 28 16:14 123.txt
-rw-r--r--. 1 root root 12 Oct 28 16:12 1.txt
drwxr-xr-x. 2 root root 64 Oct 28 15:27 data1
drwxr-xr-x. 2 root root 6 Oct 28 15:14 03
drwxr-xr-x. 2 root root 6 Oct 28 15:14 04
drwxr-xr-x. 2 root root 6 Oct 28 15:14 05
drwxr-xr-x. 2 root root 6 Oct 28 15:14 01
drwxr-xr-x. 2 root root 6 Oct 28 15:14 02
[root@ly01 ~]# ll -S /root
total 8
drwxr-xr-t. 9 root root 181 Oct 28 15:06 tmp
drwxr-xr-x. 2 root root 64 Oct 28 15:27 data1
-rw-r--r--. 1 root root 12 Oct 28 16:14 123.txt
-rw-r--r--. 1 root root 12 Oct 28 16:12 1.txt
drwxr-xr-x. 2 root root 6 Oct 28 15:14 01
[root@ly01 ~]# ll -rS
total 8
drwxr-xr-x. 2 root root 6 Oct 28 15:14 oldboy
drwxr-xr-x. 2 root root 6 Oct 28 15:14 02
drwxr-xr-x. 2 root root 6 Oct 28 15:14 01
-rw-r--r--. 1 root root 12 Oct 28 16:12 1.txt
-rw-r--r--. 1 root root 12 Oct 28 16:14 123.txt
drwxr-xr-x. 2 root root 64 Oct 28 15:27 data1
drwxr-xr-t. 9 root root 181 Oct 28 15:06 tmp
[root@ly01 ~]# ll -i
total 8
67743004 drwxr-xr-x. 2 root root 6 Oct 28 15:14 01
101331318 drwxr-xr-x. 2 root root 6 Oct 28 15:14 02
16522 drwxr-xr-x. 2 root root 6 Oct 28 15:14 03
33584279 drwxr-xr-x. 2 root root 6 Oct 28 15:14 04
67743005 drwxr-xr-x. 2 root root 6 Oct 28 15:14 05
67743011 -rw-r--r--. 1 root root 12 Oct 28 16:14 123.txt
[root@ly01 ~]# ll -p
total 8
drwxr-xr-x. 2 root root 6 Oct 28 15:14 01/
drwxr-xr-x. 2 root root 6 Oct 28 15:14 02/
drwxr-xr-x. 2 root root 6 Oct 28 15:14 03/
drwxr-xr-x. 2 root root 6 Oct 28 15:14 04/
drwxr-xr-x. 2 root root 6 Oct 28 15:14 05/
-rw-r--r--. 1 root root 12 Oct 28 16:14 123.txt
[root@ly01 ~]# ll -F /dev/
total 0
crw-rw----. 1 root video 10, 175 Oct 28 21:33 agpgart
crw-------. 1 root root 10, 235 Oct 28 21:33 autofs
drwxr-xr-x. 2 root root 140 Oct 28 21:33 block/
drwxr-xr-x. 2 root root 0 Oct 28 21:33 hugepages/
lrwxrwxrwx. 1 root root 25 Oct 28 21:33 initctl -> /run/systemd/initctl/fifo|
说明:创建目录
格式:mkdir 【选项】【目录】
选项:
【-p】 创建多级目录,递归创建
【-v】 显示创建信息
【-m】创建目录,并修改目录权限
[root@ly01 ~]# mkdir goudan
[root@ly01 ~]# mkdir goudan //不可在同一路径创建同名文件
mkdir: cannot create directory ‘goudan’: File exists
[root@ly01 ~]# mkdir -p /root/data/goudan
[root@ly01 ~]# mkdir /root/data/goudan //创建多级目录时,必须加-p
mkdir: cannot create directory ‘/root/data/goudan’: No such file or directory
[root@ly01 ~]# mkdir -v friend
mkdir: created directory ‘friend’
[root@ly01 ~]# mkdir -m 777 hello
[root@ly01 ~]# mkdir -p test{01..05} //创建有序目录
[root@ly01 ~]# mkdir -p test/{a..z}/{01..10}/{a..z}
[root@ly01 ~]# mkdir -p a{bb,cc,dd}
[root@ly01 ~]# mkdir a
[root@ly01 ~]# mkdir A
说明:创建文件,会修改文件的属性时间,文件已经存在时,不会报错,只会修改属性的时间
格式:touch 【选项】【文件】
[root@ly01 ~]# touch text
-rw-r--r--. 1 root root 0 Oct 28 22:05 text
[root@ly01 ~]# touch text //修改时间戳
-rw-r--r--. 1 root root 0 Oct 28 22:06 text
[root@ly01 ~]# touch goudan{01..05}.txt //有序创建
[root@ly01 ~]# touch goudan.{txt,py,sh} //无序
说明:复制文件
格式:cp 【选项】【源文件】【目标路径】
选项:
【-p】 保持属性
【-d】 保持软连接
【-r】 递归复制,主针对目录
【-a】=-pdr
【-i】进行交互式的询问
【-t】把源文件与目标路径进行调换位置
[root@ly01 ~]# cp goudan.txt /tmp
[root@ly01 ~]# cp goudan.sh /tmp/goudan.conf //复制并改名
[root@ly01 ~]# cp a/ /tmp/
cp: omitting directory ‘a’
[root@ly01 ~]# cp -r a/ /tmp/ //复制目录时必加-r
[root@ly01 ~]# cp -rp A/ /tmp/
[root@ly01 ~]# cp -a /etc/ /tmp
[root@ly01 ~]# \cp goudan.txt.py /tmp //临时取消别名,\:转义符,取消特殊符号的含义
[root@ly01 ~]# /bin/cp 1.txt /tmp //使用绝对路径执行
[root@ly01 ~]# cp -t /tmp 123.txt
说明:移动文件,重命名
格式:mv 【选项】【源文件】【路径】
选项:
【-f】强制覆盖
【-i】进行交互式的询问
【-t】把源文件与目标路径进行调换位置
[root@ly01 ~]# mv goudan.txt /tmp
[root@ly01 ~]# mv test02/ /tmp //移动目录不需要加选项
[root@ly01 ~]# mv -f a/ /tmp //三种免交互覆盖方式
[root@ly01 ~]# \mv a/ /tmp
[root@ly01 ~]#/bin/mv a/ /tmp
[root@ly01 ~]# mv -t /tmp test05.txt
[root@ly01 ~]# mv text text.sh
[root@ly01 ~]# mv 'text.sh' text
[root@ly01 ~]# mv text /tmp/text.sh
说明:重命名文件
结构:rename 【旧字符】【新字符】【对象】
[root@ly01 ~]# rename goudan 233 goudan.py
说明:删除文件
结构:rm 【选项】【对象】选项:
【-f】强制删除
【-r】递归删除,针对目录
【-i】交互式询问
[root@ly01 ~]# rm 233.py
[root@ly01 ~]# \rm 233.py
[root@ly01 ~]# rm -f 233.py
[root@ly01 ~]# rm -f goudan
rm: cannot remove ‘goudan’: Is a directory
[root@ly01 ~]# rm -rf goudan //删除目录必须加r
[root@ly01 ~]# rm -rf ./* //删除当前目录下所有内容
[root@ly01 ~]# rm -rf . /* //.和/*间有空格会删根
说明:显示文件的所有内容,创建文件,合并文件。
格式:cat 【选项】【文件】
选项:
【-b】“–number-nonblank”给显示的文件内容加上行数,忽略空行
【-n】“–number”给显示的文件内容加上行数,不忽略空行
【-A】“–show-all”给显示的文件内容每行结尾加上一个标识符$,用来判断是否存在空格或者tab键
[root@ly01 ~]# cat 123.txt
my
name
2333"
[root@ly01 ~]# cat -b text.txt
1 2
2 3
//回车
3 //空格
4 //TAB键
[root@ly01 ~]# cat -n text.txt
1 2
2 3
3
4
5
6
[root@ly01 ~]# cat -A text.txt
2$
3$
$
$
$
^I$
[root@ly01 ~]# cat 123.txt text.txt > newfile.txt
[root@qls ~]# cat > 123.txt << EOF #开始符,将输入交给cat处理后,结果输出到文件
> my
> name
> 233
>
> 123
> EOF #结束符
####注意:遇到特殊符号的时候
[root@ly01 ~]# cat >>file.txt<< EOF
> good
> \$USER
> day
> EOF
[root@ly01 ~]# cat >>file.txt<< "EOF"
> good
> $USER
> day
> EOF
说明:显示文件,按行进行倒叙显示
格式:tac 【选项】【文件】
[root@ly01 ~]# tac 123.txt
> EOF
> 123
>
> 233
> name
> my
说明:分页显示文件内容,文件内容结束,会自动退出
格式:more 【选项】文件
选项
【-num(数字)】指定显示多少行为一页
【+num(数字)】 从第几行开始显示
【空格或者f】向下翻页
【b】向上翻页
【回车】向下显示一行
【h】 帮助信息
【=】 显示当前光标所在行数
【/xxx】 搜索内容,不会高亮显示,【n】#向下搜索
【q】 退出
说明:分页显示文件内容,文件内容结束,不会自动退出
格式:less【选项】文件
选项
【-N 】“–LINE-NUMBERS”,显示的时候加上行号
【-i】 “–ignore-case”,忽略大小写
【空格或者f】向下翻页
【b】向上翻页
【回车】向下显示一行
【h】 帮助信息
【=】 显示当前所在页是第几行到多少行,总共多少行,总共显示多少了字节,总共多少字节
【/xxx】 搜索内容,会高亮显示,【n】#向下搜索,【N】#向上搜索
【q】 退出
说明:显示文件的头部信息,默认显示十行的内容
格式:head【选项】【文件】
选项
【-n num(数字)】 简写为“-数字”,“–lines”,取消默认输出 ,指定多少行
【-c num(数字)】 “–bytes”,显示指定的多少个字符
[root@ly01 ~]# head services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
[root@ly01 ~]# head -n1 services
# /etc/services:
[root@ly01 ~]# head -1 services
# /etc/services:
[root@ly01 ~]# head -c5 services
# /et[root@ly01 ~]#
说明:显示文件尾部信息 ,默认显示十行内容
格式:tail【选项】【文件】
选项
【-n】“–lines”,取消默认输出 ,指定结尾多少行
【-c】 “–bytes”,显示最后几个字符
【-f】 “–follow”,实时显示文件内容,实时查看文件内容的更新;文件不存在时,会报错退出
【-F】实时显示文件内容,实时查看文件内容的更新;文件不存在时,会不停尝试读取该文件,直到文件存在
[root@ly01 ~]# tail passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
maicai:x:1000:1000::/home/maicai:/bin/bash
[root@ly01 ~]# tail -2 passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
maicai:x:1000:1000::/home/maicai:/bin/bash
[root@ly01 ~]# tail -c5 services
oker //后有换行符
[root@ly01 ~]# tail -3f /var/log/messages
Oct 29 21:40:37 ly01 kernel: e1000: eth0 NIC Link is Down
Oct 29 21:40:41 ly01 kernel: e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Oct 29 21:40:41 ly01 NetworkManager[948]: <info> [1572356441.4517] device (eth0): carrier: link connected
[root@ly01 ~]# tail -F /var/log/messages //-F后不跟数字
说明:实时显示文件内容,实时查看文件内容的更新,如果文件内容不更新时,不会去读取磁盘信息,减少磁盘的读写压力
格式:tailf【选项】【文件】
选项
【-n】取消默认输出 ,指定结尾多少行
[root@ly01 ~]# tailf -3 /var/log/messages
Oct 29 21:40:41 ly01 NetworkManager[948]: <info> [1572356441.4517] device (eth0): carrier: link connected
Oct 29 22:01:01 ly01 systemd: Started Session 2 of user root.
Oct 29 22:01:01 ly01 systemd: Starting Session 2 of user root.
企业面试题:tail -f 和 -F 及tailf 有什么区别?
说明:过滤,给过滤出来的内容加上颜色
格式:grep 【选项】模式 【文件】
选项
【-c】“–count”,统计过滤出来内容的行数
【-n】“–line-number”,显示过滤出来的内容所在文件的行数
【-o】“–only-matching”,只显示过滤出来的内容
【-i】“–ignore-case”,忽略大小写
【-v】“–invert-match”,排除
【-w】“–word-regexp”,精确匹配
【-A num(数字)】“–after-context”,显示过滤出来的内容向下几行
【-B num(数字)】 “–before-context”,显示过滤出来的内容向上几行
【-C num(数字)】“–context”,显示过滤出来的内容向上向下各几行
【-E】#支持扩展正则
[root@ly01 ~]# grep 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@ly01 ~]# grep -c 'root' passwd
2
[root@ly01 ~]# grep -n 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@ly01 ~]# grep -o 'root' passwd
root
root
root
root
[root@ly01 ~]# grep -i 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
rooter
[root@ly01 ~]# grep -v '/sbin/nologin' passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
maicai:x:1000:1000::/home/maicai:/bin/bash
ROOT
rooter
[root@ly01 ~]# grep -w 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@ly01 ~]# grep -A2 'root' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
--
rooter
[root@ly01 ~]# grep -B2 'root' passwd
root:x:0:0:root:/root:/bin/bash
--
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
--
maicai:x:1000:1000::/home/maicai:/bin/bash
ROOT
rooter
[root@ly01 ~]# grep -C2 'root' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
--
maicai:x:1000:1000::/home/maicai:/bin/bash
ROOT
rooter
说明:查看命令的绝对路径
结构:which 【选项】命令
[root@ly01 ~]# which sh
/usr/bin/sh
[root@ly01 ~]# $(which ping) baidu.com
说明:
whereis 查看文件的路径,显示二进制文件、说明文件、源代码文件
whereis 【选项】命令
选项:
【-b】只查看二进制文件,命令文件
【-m】显示帮助文件
【-s】源代码文件——暂无示例
[root@ly01 ~]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz
[root@ly01 ~]# whereis -b cd
cd: /usr/bin/cd
[root@ly01 ~]# whereis -m cd
cd: /usr/share/man/man1/cd.1.gz
说明:根据本地数据库查找文件(不推荐)
格式:locate 【选项】【关键词】
选项:
【-i】忽略大小写
【-r】支持正则
[root@ly01 ~]# yum install -y mlocate //安装locate命令
[root@ly01 ~]# updatedb //每次添加文件,都需要手动更新数据库
[root@ly01 ~]# locate hosts
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/active/modules/100/denyhosts
[root@ly01 ~]# locate -i hosts
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/active/modules/100/denyhosts
/etc/selinux/targeted/active/modules/100/denyhosts/cil
/etc/selinux/targeted/active/modules/100/denyhosts/hll
/etc/selinux/targeted/active/modules/100/denyhosts/lang_ext
/root/HOSTS
[root@ly01 ~]# locate -r hosts$
/etc/hosts
/etc/selinux/targeted/active/modules/100/denyhosts
/usr/share/doc/pam-1.1.8/txts/README.pam_rhosts
/var/cache/yum/x86_64/7/timedhosts
使用locate命令有时候会出现搜索不全,主要是因为配置文件/etc/updatedb.conf里设置了过滤规则
原因具体查看:https://www.cnblogs.com/zhangzongjian/p/10708212.html
说明:显示命令的路径,默认只显示外部命令的绝对路径,内置需要加上-a
格式:type 【选项】命令
选项:
【-a】在环境变量“PATH”指定的路径中,显示给定指令的信息及路径,包括命令别名
【-p】只显示外部命令的绝对路径
[root@ly01 ~]# type cd //内部命令
cd is a shell builtin
[root@ly01 ~]# type ping //外部命令
ping is /usr/bin/ping
[root@ly01 ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd
[root@ly01 ~]# type -a mv
mv is aliased to `mv -i'
mv is /usr/bin/mv
[root@ly01 ~]# type -p ping
/usr/bin/ping
说明:查找文件
格式:find 查找的目录 选项
选项:
【-type】 类型(后跟f / d / l)
【-maxdepth】目录的层级(该选项需要放在其他选项前)
【-name】根据名称查找
【-iname】忽略名称的大小写
【-ls】 显示查找出来的文件详细信息
[root@ly01 ~]# find / -maxdepth 2 -type f -iname "oldboy*.txt" -ls
33585697 0 -rw-r--r-- 1 root root 0 Oct 30 12:43 /etc/oldboy.txt
67163459 0 -rw-r--r-- 1 root root 0 Oct 30 17:30 /root/oldboya.txt
67161225 0 -rw-r--r-- 1 root root 0 Oct 30 17:29 /root/OLDBOY.TXT
33584167 0 -rw-r--r-- 1 root root 0 Oct 30 12:42 /tmp/oldboy.txt
19890 0 -rw-r--r-- 1 root root 0 Oct 30 12:40 /opt/oldboy.txt
说明:联网下载指定的URL地址。支持断点续传
格式:wget 【选项】【URL】
选项:
【-O 】指定路径下载,可以重命名
【-q】静默下载,不显示下载信息
【–limit-rate】=(k,M),限速下载
[root@ly01 ~]# yum install -y wget //安装wget
[root@ly01 ~]# wget http://nginx.org/download/nginx-1.17.5.tar.gz //wget+URL
[root@ly01 ~]# wget -O nginx.tar.gz http://nginx.org/download/nginx-1.17.5.tar.gz ////注-O后必须加重命名的文件,不能和其他选项互换位置
[root@ly01 ~]# wget -q -O nginx.tar.gz http://nginx.org/download/nginx-1.17.5.tar.gz
[root@ly01 ~]# wget www.baidu.com //将网页上代码保存为index.html文件
说明:利用URL规则在命令行下工作的文件传输工具。访问网站,测试网站是否能通,可以下载文件,但必须先写入文件,再下载
格式:curl【选项】【URL】
选项:
【-o】将访问的内容写入到指定的文件中
【-s】静默输出
[root@ly01 ~]# curl www.baidu.com
[root@ly01 ~]# curl -o baidu.html www.baidu.com
[root@ly01 ~]# curl -s -o baidu.html www.baidu.com
#更新基础源 :base
[root@ly01 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#下载扩展源:epel
[root@ly01 yum.repos.d]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
说明:上传 ,不支持超过4G的文件
格式:rz 【选项】
选项:
【-E】如果上传的路径存在该文件,则进行重命名,以数字为结尾0…N
[root@ly01~]# yum install -y lrzsz //安装rz、sz命令
[root@ly01 ~]# rz
[root@ly01 ~]# rz -E
[root@ly01 ~]# ll
-rw-r--r--. 1 root root 1823976 Oct 21 10:36 uTorrent.exe
-rw-r--r--. 1 root root 1823976 Oct 21 10:36 uTorrent.exe.0
说明:下载
格式:sz 文件
[root@ly01 ~]# sz OLDBOY.TXT
说明:将文本文件排序
格式:sort 【选项】【文件】
选项:
【-t】 指定分隔符,默认是以空白字符作为分隔符
【-k】+num(数字) 指定按照第几列进行排序,默认以第一列进行排序
【-n】以数字的大小的进行排序
【-r】倒序
[root@ly01 ~]# sort file.txt
a:8
d:1
e:4
s:232
w:0
[root@ly01 ~]# sort -t ':' file.txt //默认以第一列排序
a:8
d:1
e:4
s:232
w:0
[root@ly01 ~]# sort -t ':' -k2 file.txt //按照第二列的首字符依次排序
w:0
d:1
s:232
e:4
a:8
[root@ly01 ~]# sort -t ':' -nk2 file.txt
w:0
d:1
e:4
a:8
s:232
[root@ly01 ~]# sort -t ':' -rnk2 file.txt //以“:”作为分隔符,取文件第2列的内容,按照数字大小进行倒序排列
s:232
a:8
e:4
d:1
说明:去重,统计重复行数,跟 sort配合使用
格式:uniq 【选项】【文件】
选项:
【-c】统计重复的行的次数
[root@ly01 ~]# sort file.txt
fine
fine
five
gone
wait
WAIT
want
[root@ly01 ~]# sort file.txt|uniq
fine
five
gone
wait
WAIT
want
[root@ly01 ~]# sort file.txt|uniq -c
2 fine
1 five
1 gone
1 wait
1 WAIT
1 want
[root@ly01 ~]# sort file.txt|uniq -c|sort -n //将去重完的内容再排序
1 five
1 gone
1 wait
1 WAIT
1 want
2 fine
说明:截取字段
选项:
【-d】指定分隔符,默认是以tab键作为分隔符
【-f】取出指定的列,取出多列,用“逗号”分割
[root@ly01 ~]# cut -d ':' -f3 passwd|sort -n
0
1
2
3
4
5
6
7
[root@ly01 ~]# cut -d ':' -f7 passwd|sort|uniq -c|sort -n
1 /bin/sync
1 /sbin/halt
1 /sbin/shutdown
2 /bin/bash
16 /sbin/nologin
[root@ly01 ~]# echo "my user name is , ly01" >file.txt
[root@ly01 ~]# cut -d ' ' -f2,6 file.txt
user ly01 //取多行
说明:替换命令,仅支持单对单的替换,也可用作压缩或删除
格式:tr 【选项】【参数】
【-d】 删除字符
[root@ly01 ~]# cat file3.txt
good,erer,dfd
[root@ly01 ~]# tr -d ','
goodererdfd
[root@ly01 ~]# cut -d ' ' -f 4,5 file.txt |tr ',' ' '
is ly01
[root@ly01 ~]# tr 'my' 'is' < file.txt
is user naie is, ls01
[root@ly01 ~]# tr 'u' 'y' < file.txt #仅支持单对单的替换
my yser name is, ly01
说明:统计行数,字节数,列数
格式:wc 【选项】【文件】
选项:
【-l】“–lines”,统计行数
【-c】“–bytes”,统计字节数
【-w】“words”,统计字段数(列数),以空白字符作为分隔符
【-L】“–max-line-length”,统计文件最长一行的字符数量
[root@ly01 ~]# wc -l /etc/services
11176 /etc/services
###扩展
[root@ly01 ~]# grep -o 'root' passwd|grep -c '.' //过滤出root并统计行数
4
[root@ly01 ~]# grep -o 'root' passwd|wc -l
4
[root@ly01 ~]# wc -c /etc/services
670293 /etc/services
[root@ly01 ~]# wc -w /etc/services
61033 /etc/services
[root@ly01 ~]# echo 'hello'|wc -L
5
说明:替换,增删改查,针对行处理
格式:sed 【选项】【脚本】【文件】
sed -i ‘s#旧的字符串#新的字符串#g’ filename
选项:
【-n】“–silent”,取消默认输出,跟p命令配合使用,表示打印第几行
【-e】允许多项编辑
【-i】替换
【-r】支持扩展正则
内部命令
【p】“print”;打印
【$】结尾
【=】在每行上面显示当前内容所在行号
【;】 多条命令的分隔符
【d】删除
【a】在指定行后追加
【i】在指定行前插入
【s】替换
【g】全局
【^】表示以谁开头
[root@ly01 ~]# sed -n '1p' passwd //取第一行
root:x:0:0:root:/root:/bin/bash
[root@ly01 ~]# sed -n '$p' passwd //取最后一行
maicai:x:1000:1000::/home/maicai:/bin/bash
[root@ly01 ~]# sed -n '2,5p' passwd //取出连续的多行,第二行到第五行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ly01 ~]# sed -n '2p;5p' passwd //取出不连续的多行,第二行和第五行
bin:x:1:1:bin:/bin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ly01 ~]# sed = passwd //在每行上方显示行号
1
root:x:0:0:root:/root:/bin/bash
2
bin:x:1:1:bin:/bin:/sbin/nologin
3
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@ly01 ~]# sed -n '/root/p' passwd //打印包含root的字符串
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@ly01 ~]# sed -n '/^daemon/,/^sync/p' passwd //取出daemon行到sync行
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@ly01 ~]# sed -n '/^daemon/p;/^sync/p' passwd //取出daemon行和sync行
daemon:x:2:2:daemon:/sbin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@ly01 ~]# sed '1d' passwd //删除第一行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ly01 ~]# sed '1,10d' passwd //删除连续的多行,第一行到第十行
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@ly01 ~]# sed '1d;10d' passwd //删除不连续的多行,删除第一行和第十行
[root@ly01 ~]# sed '/root/d' passwd //删除包含root的行
[root@ly01 ~]# sed '/^daemon/,/^sync/d' passwd //删除连续多行,从daemon到sync的行
[root@ly01 ~]# sed '/^daemon/d;/^sync/d' passwd //删除不连续的多行,daemon行和sync行
#【a】下行追加
[root@ly01 ~]# sed '1afine' passwd //在第一行的后面追加内容
root:x:0:0:root:/root:/bin/bash
fine
[root@ly01 ~]# sed '$afine' passwd //在文件结尾追加内容
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
maicai:x:1000:1000::/home/maicai:/bin/bash
fine
[root@ly01 ~]# sed '$afine\ngood\nwell' passwd #追加多行内容
maicai:x:1000:1000::/home/maicai:/bin/bash
fine
good
well
#【i】上行插入
[root@ly01 ~]# sed '1ifine' passwd //在第一行的前面插入内容
fine
root:x:0:0:root:/root:/bin/bas
[root@ly01 ~]# sed '$ifine' passwd //在最后一行前面插入内容
fine
maicai:x:1000:1000::/home/maicai:/bin/bash
[root@ly01 ~]# sed '$ifine\ngood' passwd //插入多行内容
fine
good
maicai:x:1000:1000::/home/maicai:/bin/bash
【-e】允许多项编辑
[root@ly01 ~]# sed -e '1ifine' -e '2igood' passwd //插入不同的行
fine
root:x:0:0:root:/root:/bin/bash
good
bin:x:1:1:bin:/bin:/sbin/nologin
[root@ly01 ~]# sed '1ifine' passwd |sed '3igood'
fine
root:x:0:0:root:/root:/bin/bash
good
bin:x:1:1:bin:/bin:/sbin/nologin
[root@ly01 ~]# sed 's#root#goudan#g' passwd //全局替换
goudan:x:0:0:goudan:/goudan:/bin/bash
operator:x:11:0:operator:/goudan:/sbin/nologin
[root@ly01 ~]# sed -i.bak 's#root#goudan#g' passwd //备份,并且全局替换保存
[root@ly01 ~]# sed 's#root#goudan#' passwd //替换每一行的第一个root
[root@ly01 ~]# sed '10s#root#goudan#g' passwd //只替换第十行的root
[root@ly01 ~]# sed '1,10s#root#goudan#g' passwd //只替换第一行到第十行的root
goudan:x:0:0:goudan:/goudan:/bin/bash
operator:x:11:0:operator:/goudan:/sbin/nologin
[root@ly01 ~]# sed '/^root/s#root#goudan#g' passwd //替换以root开头的行
goudan:x:0:0:goudan:/goudan:/bin/bash
#反向引用
[root@ly01 ~]# ip a s eth0|sed -rn '3s#(.*t )(.*)(/.*)#\2#gp'
10.0.0.100
说明:取列,计算,统计,数组,判断,循环
格式: gawk [ POSIX or GNU style options ] -f program-file [ – ] file
选项:
【-F】:指定分隔符 ,默认以空白字符为分隔符
正则
【*】正则 ;前面的字符出现0次或者0次以上
【+】扩展正则;前面的字符出现1次或者1次以上
【?】扩展正则;前面的字符出现0次或者1次
内部命令及变量
【NR】表示行号;后面跟 == >= > <= <
【&&】并且
【||】或者
【!】取反
【NF】每一行的总共有多少列
【$NF】表示最后一列
【$0】文件所有内容
【$1…$N】表示字段,列
[root@ly01 ~]# awk 'NR==1' passwd //取单行
root:x:0:0:root:/root:/bin/bash
[root@ly01 ~]# awk 'NR==1,NR==3' passwd //取连续的多行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#第二种方法
[root@ly01 ~]# awk 'NR>=1&&NR<=3' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@ly01 ~]# awk 'NR==1;NR==3' passwd //取不连续的多行
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#第二种方法
[root@ly01 ~]# awk 'NR==1||NR==3' passwd
[root@ly01 ~]# awk '/root/' passwd //过滤包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@ly01 ~]# awk '/^daemon/,/^lp/' passwd 过滤daemon的行到lp的行
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ly01 ~]# awk '/^daemon/;/^lp/' passwd //过滤daemon的行或lp的行
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#第二种方法
[root@ly01 ~]# awk '/^daemon/||/^lp/' passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ly01 ~]# awk '/^daemon/&&/^lp/' passwd 过滤同时包含daemon和lp的行
[root@ly01 ~]# awk ‘!/root/’ passwd //取不包含root的行,相当于grep -v,sed ‘d’
[root@ly01 ~]# awk -F ':' '{print$1}' passwd //以:为分隔符,取出第一列,print打印;:=':'='[:]'
root
bin
daemon
adm
lp
sync
[root@ly01 ~]# awk -F '[:]' '{print$NF}' passwd //打印最后一列
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
[root@ly01 ~]# awk -F '[:]' '{print$1,$2}' passwd //以:为分隔符,取出第一列和第二列
root x
bin x
daemon x
adm x
lp x
sync x
shutdown x
[root@ly01 ~]# awk -F ':' 'NR==1{print$2}' passwd //以:为分隔符,取第一行第二列
x
[root@ly01 ~]# awk '{print$0}' passwd //显示整个文件内容
[root@ly01 ~]# awk '{print NR,$O}' passwd //显示文件内容及行号
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#cut取地址
[root@ly01 ~]# ip a s eth0|grep -w 'inet'|cut -d ' ' -f6|cut -d '/' -f1
10.0.0.100
[root@ly01 ~]# ip a s eth0|grep -w 'inet'|tr '/' ' '|cut -d ' ' -f6
10.0.0.100
[root@ly01 ~]# ifconfig eth0|grep -w 'inet'|cut -d ' ' -f10
10.0.0.100
#sed取地址
[root@ly01 ~]# ip a s eth0|sed -rn '3s#(.*t )(.*)(/.*)#\2#gp'
10.0.0.100
[root@ly01 ~]# ifconfig|sed -rn '2s#(.*t )(.*)( n.*)#\2#gp'
10.0.0.100
#awk取地址
[root@ly01 ~]# ip a s eth0|awk -F '[ /]+' 'NR==3{print$3}' //指定空格会将前面算一列
10.0.0.100
[root@ly01 ~]# ifconfig eth0|awk 'NR==2{print$2}' //默认分隔符,会忽略前面的空格
10.0.0.100
[root@ly01 ~]# ifconfig eth0|awk '/netmask/{print$2}'
10.0.0.100
说明:用于排版
选项:
【-t】 以tab的格式进行排序
[root@ly01 ~]# awk -F '[:]' '{print$1,$2}' passwd |column -t
root x
bin x
daemon x
adm x
lp x
sync x
67249416 -rw-r–r--. 1 root root 25 Oct 31 10:27 file1.txt
67249416 :inode号,索引节点。
-:文件的类型,该处为普通文件
rw-r–r--. :文件的权限
1:硬链接的数量
root 第四列:文件属主
root 第五列:文件属组
25:文件大小,文件的字节数,目录在这里表示的是目录结构的大小,结构越大,文件越多
[root@ly01 ~]# du -sh /etc #查看目录的大小
31M /etc
mtime 修改时间 (文件内容最后被修改的时间)***
atime 访问时间 (文件中的数据库最后被访问的时间)
ctime 改变时间(文件属性,即元数据,改变时间)
- - 普通文件
- d 目录
- l 软链接文件
lrwxrwxrwx. 1 root root 7 Oct 23 12:15 bin -> usr/bin- b 块设备文件,磁盘
brw-rw----. 1 root disk 8, 0 Oct 29 08:41 sda- c 字符设备
crw-rw-rw-. 1 root root 1, 8 Oct 29 08:41 random s- socket 文件套接字文件
srw-rw-rw-. 1 root root 0 Oct 29 08:41 log- p 管道文件
prw-------. 1 root root 0 Oct 29 08:41 /run/systemd/initctl/fifo
windows有非常严格的扩展名定义
Linux上面的扩展名不代表任何意义,只是为了方便工作人员识别的规范
说明:创建链接文件,默认创建硬链接
格式:ln 【源文件】【目标文件】
选项:
【-s】表示创建软链接文件
#创建文件软链接
[root@ly01 ~]# ln -s file.txt newfile.txt //文件创建软链接
[root@ly01 ~]# ll -i
total 0
67157621 -rw-r--r--. 1 root root 0 Nov 4 17:51 file.txt
67158141 lrwxrwxrwx. 1 root root 8 Nov 4 17:52 newfile.txt -> file.txt
#创建目录硬链接
[root@ly01 ~]# ln -s /root/file.txt /tmp/test.txt
#创建硬链接
[root@ly01 ~]# ln file.txt hardfile.txt
[root@ly01 ~]# ll -i
total 2032
67161219 -rw-r–r--. 2 root root 4 Nov 4 18:23 file.txt
67161219 -rw-r–r--. 2 root root 4 Nov 4 18:23 hardfile.txt
#批量创建硬链接
[root@ly01 ~]# touch {01..10}.txt
[root@ly01 ~]# ls -1|awk '{print"ln "$1" new_"$1}'|bash
[root@ly01 ~]# ll
total 0
-rw-r--r--. 2 root root 0 Nov 4 18:29 01.txt
-rw-r--r--. 2 root root 0 Nov 4 18:29 02.txt
-rw-r--r--. 2 root root 0 Nov 4 18:29 03.txt
-rw-r--r--. 2 root root 0 Nov 4 18:29 new_01.txt
-rw-r--r--. 2 root root 0 Nov 4 18:29 new_02.txt
-rw-r--r--. 2 root root 0 Nov 4 18:29 new_03.txt
#删除链接
rm -rf
含义:相当于windows中的快捷方式。跟源文件属于不同类型的文件,inode号不同。
#升级
[root@ly01 ~]# rm -rf /root/nginx && ln -s /root/nginx-1.17.5.tar.gz /root/nginx[root@ly01 ~]# ll
total 2024
lrwxrwxrwx. 1 root root 25 Nov 4 18:13 nginx -> /root/nginx-1.17.5.tar.gz
-rw-r--r--. 1 root root 1032630 Aug 14 01:01 nginx-1.16.1.tar.gz
-rw-r--r--. 1 root root 1036056 Oct 22 23:25 nginx-1.17.5.tar.gz
#回退
[root@ly01 ~]# rm -rf /root/nginx && ln -s /root/nginx-1.16.1.tar.gz /root/nginx
[root@ly01 ~]# ll
total 2024
lrwxrwxrwx. 1 root root 25 Nov 4 18:14 nginx -> /root/nginx-1.16.1.tar.gz
-rw-r--r--. 1 root root 1032630 Aug 14 01:01 nginx-1.16.1.tar.gz
-rw-r--r--. 1 root root 1036056 Oct 22 23:25 nginx-1.17.5.tar.gz
【&&】前面的命令执行成功,再执行后面的命令。执行失败不会执行后面的命令
【||】前面的命令执行失败,再执行后面的命令。执行成功不会执行后面的命令
【|】把前面的输出结果交给后面的命令操作
含义: linux中,多个文件的inode号指向同一个block,这些文件,我们称之为互为硬链接。相当于一个文件有多个入口。
含义:
软链接相当于windows上面的快捷方式,跟源文件属于不同类型的文件,inode号不同
硬链接就是多个文件的inode是相同的,指向同一个block。相当于给这个文件加了很多入口。
创建方式:
ln命令默认就是创建硬链接
ln名加-s选项才会创建软链接
创建对象:
软链接可以跨文件系统,对文件和目录都能创建
硬链接只能对文件进行创建,且不能跨文件系统。
删除
删除软链接,对源文件和硬链接文件没有任何影响
删除硬链接文件,对源文件和软链接文件没有任何影响
删除源文件,对硬链接文件没有影响,但是软链接文件会失效,红底白字闪烁状
只有删除源文件及所有的硬链接文件,这个文件才会被真正的删除。
说明:查看hash缓存表,命令的缓存记录
选项:
【-d】删除指定的命令缓存
【-r】清空所有的缓存记录
#无选项
[root@ly01 ~]# hash //查看hash缓存表
#【-d】删除指定的命令缓存
[root@ly01 ~]# hash -d wc //删除wc命令缓存
#【-r】清空所有的缓存记录
[root@ly01 ~]# hash -r