内部命令 | 外部命令 |
---|---|
集成于shell解释器程序内部的一些特殊指令,也称为内建指令(built-in) | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的文件系统 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由shell加载后才能执行 |
如何知道一个命令是内部命令还是外部命令,可以使用type命令
例:
[root@HOST ~]# type echo //格式为tupe加命令
echo is a shell builtin //可以看到echo为内部命令
[root@HOST ~]# cd /opt
[root@HOST opt]#
[root@HOST ~]# cd /var/log
[root@HOST log]# cd ..
[root@HOST var]# cd ..
[root@HOST /]# cd ..
[root@HOST /]#
[root@HOST ~]# cd /var/log
[root@HOST log]# cd -
/root
[root@HOST ~]#
[root@HOST ~]# cd /opt
[root@HOST opt]# cd ~
[root@HOST ~]#
[root@HOST ~]# pwd
/root
[root@HOST ~]# cd /opt
[root@HOST opt]# pwd
/opt
-a :显示带. 的文件,这是隐藏文件
-c :按文件修改时间排序
-i :在输出的第一列显示文件的i节点号
-l :已长格式显示文件的详细信息
-r :按逆序显示ls命令的输出结果
-R :递归的显示指定目录的各个子目录中的文件
-d :查看文件
-h :优化显示的字节数
例:
-a
[root@HOST /]# ls -a
. bin dev home lib64 mnt proc run srv tmp var
.. boot etc lib media opt root sbin sys usr
-c
[root@HOST /]# ls -c
tmp run etc boot root dev var sys proc home opt usr lib lib64 media mnt sbin srv bin
-i
[root@HOST /]# ls -i
30786 bin 805307552 home 268435653 mnt 1140 run 268435528 tmp
64 boot 80 lib 537171936 opt 30790 sbin 537171879 usr
1025 dev 82 lib64 1 proc 805307553 srv 805306433 var
268435521 etc 83 media 537160769 root 1 sys
-l ,ls l在使用时通过alias的别名设置,可以直接使用 ll
[root@HOST /]# ll
total 24
lrwxrwxrwx. 1 root root 7 Jul 14 14:08 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jul 14 14:17 boot
drwxr-xr-x. 20 root root 3300 Jul 14 14:17 dev
drwxr-xr-x. 138 root root 8192 Jul 24 14:33 etc
drwxr-xr-x. 3 root root 18 Jul 14 14:15 home
lrwxrwxrwx. 1 root root 7 Jul 14 14:08 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jul 14 14:08 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Nov 5 2016 media
drwxr-xr-x. 2 root root 6 Nov 5 2016 mnt
drwxr-xr-x. 3 root root 16 Jul 14 14:13 opt
dr-xr-xr-x. 208 root root 0 Jul 14 14:16 proc
dr-xr-x---. 5 root root 184 Jul 14 14:17 root
drwxr-xr-x. 41 root root 1200 Jul 24 14:42 run
lrwxrwxrwx. 1 root root 8 Jul 14 14:08 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 5 2016 srv
dr-xr-xr-x. 13 root root 0 Jul 14 14:17 sys
drwxrwxrwt. 14 root root 4096 Jul 24 14:35 tmp
drwxr-xr-x. 13 root root 155 Jul 14 14:08 usr
drwxr-xr-x. 21 root root 4096 Jul 14 14:17 var
-h优化显示后,与上一例对比
[root@HOST /]# ls -lh
total 24K
drwxr-xr-x. 2 root root 6 Jul 24 14:58 a
drwxr-xr-x. 2 root root 6 Jul 24 14:58 b
lrwxrwxrwx. 1 root root 7 Jul 14 14:08 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K Jul 14 14:17 boot
drwxr-xr-x. 2 root root 6 Jul 24 14:58 c
drwxr-xr-x. 20 root root 3.3K Jul 14 14:17 dev
drwxr-xr-x. 138 root root 8.0K Jul 24 14:33 etc
drwxr-xr-x. 3 root root 18 Jul 14 14:15 home
lrwxrwxrwx. 1 root root 7 Jul 14 14:08 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jul 14 14:08 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Nov 5 2016 media
drwxr-xr-x. 2 root root 6 Nov 5 2016 mnt
drwxr-xr-x. 3 root root 43 Jul 24 14:58 opt
dr-xr-xr-x. 208 root root 0 Jul 14 14:16 proc
dr-xr-x---. 5 root root 184 Jul 14 14:17 root
drwxr-xr-x. 41 root root 1.2K Jul 24 14:42 run
lrwxrwxrwx. 1 root root 8 Jul 14 14:08 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 5 2016 srv
dr-xr-xr-x. 13 root root 0 Jul 14 14:17 sys
drwxrwxrwt. 14 root root 4.0K Jul 24 14:35 tmp
drwxr-xr-x. 13 root root 155 Jul 14 14:08 usr
drwxr-xr-x. 21 root root 4.0K Jul 14 14:17 var
-r
[root@HOST /]# ls -r
var usr tmp sys srv sbin run root proc opt mnt media lib64 lib home etc dev boot bin
-R
[root@HOST opt]# ls -R
.:
a aa b c rh
./aa:
bb
./aa/bb:
./rh:
通过别名机制用来简化常用的,比较长的命令
alias 命令别名 = 命令
[root@HOST opt]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
mkdir [选项] 目录位置及名称
-p: 一次性创建多层嵌套的目录
[root@HOST ~]# mkdir -p /opt/abc/123
[root@HOST opt]# cd /opt/abc/123 //进去看一下
[root@HOST 123]# cd .. //退到上层目录
[root@HOST abc]# cd ..
[root@HOST opt]# cd ..
[root@HOST /]#
touch 文件 ,可同时创建多个文件
[root@HOST opt]# touch aa bb cc
[root@HOST opt]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 24 16:24 aa
-rw-r--r--. 1 root root 0 Jul 24 16:24 bb
-rw-r--r--. 1 root root 0 Jul 24 16:24 cc
ln [-s] 原文件或目录 链接文件或目标位置
软链接 | 硬链接 |
---|---|
-s | 不加s |
既可以创建文件也可以创建目录 | 只能创建文件 |
原文件删除不能访问 | 原文件删除仍可访问 |
[root@HOST opt]# ln aa aa1 //硬链接
[root@HOST opt]# ln -s aa aa2 //软链接
[root@HOST opt]# ll
total 0
-rw-r--r--. 2 root root 0 Jul 24 16:24 aa //原文件
-rw-r--r--. 2 root root 0 Jul 24 16:24 aa1 //硬链接文件
lrwxrwxrwx. 1 root root 2 Jul 24 16:38 aa2 -> aa //软链接文件
-rw-r--r--. 1 root root 0 Jul 24 16:24 bb
-rw-r--r--. 1 root root 0 Jul 24 16:24 cc
cp [选项] 原文件或目录 目标文件或目录
常用选项:
选项 | 用法 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有的文件及子目录 |
[root@HOST opt]# cp -r /opt/ /root/ //把opt整个目录及子目录复制到root目录下
[root@HOST opt]# cd
[root@HOST ~]# ll
total 8
-rw-------. 1 root root 2046 Jul 14 14:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 2094 Jul 14 14:17 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 58 Jul 24 17:01 opt
rm [选项] 要删除的文件及目录
-f : 不提示
-i : 提示
-r : 递归目录删除
-d : 删除目录,不管它是否为空
高危命令 rm -rf * ,在根目录下敲就全没了
有两种用处
一、将指定的文件或目录转移位置
二、如果目标位置与源位置相同,则为重命名操作
mv [选项] 源文件或目录 目标文件或目录
-i 交互模式 当移动的目录存在同名的目标文件时,用覆盖方式写文件,但
在写入之前给出提示
-f 在目标文件已存在时,不给出任何提示
[root@HOST opt]# ll
total 4
-rw-r--r--. 1 root root 4 Jul 27 18:50 1.txt
drwxr-xr-x. 2 root root 6 Mar 26 2015 rh
[root@HOST opt]# mv 1.txt /root #把1.txt文件移到opt目录下
[root@HOST opt]# ll #查看下,源目录下没有1.txt
total 0
drwxr-xr-x. 2 root root 6 Mar 26 2015 rh
[root@HOST opt]# cd /root
[root@HOST ~]# ll #目标目录下出现1.txt
total 12
-rw-r--r--. 1 root root 4 Jul 27 18:50 1.txt
-rw-------. 1 root root 2046 Jul 14 14:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 2094 Jul 14 14:17 initial-setup-ks.cfg
搜索范围由环境变量PATH决定(echo&PATH)
which [选项] 命令|程序名
[root@HOST ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
find [查找范围] [查找条件表达式]
常用查找条件类型;
查找类型 | 关键 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件,常用的容量单位包括kB(注意k是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找,文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
使用find命令实现多个查找条件
各表达式之间使用逻辑运算符:“-a”表示而且(and)
"-o"表示或者(or)
[root@HOST ~]# find /boot -size +1024k -a -name "vm*"#在boot目录下查找大小大于1024kB而且名字是vm开头的文件或目录
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/vmlinuz-0-rescue-9052c071f8254c31aba796d7b5dbc092