Linux基础命令(一)

目录

一.shell

1.shell定义

2.shell环境

3.绝对、相对路径

①.目录类型

②.文件类型

③.文件路径

4.内部、外部命令

①.用help命令可以查看内部命令

②.使用 type 命令来区分内外部命令

③.命令执行过程

二.命令行格式

三.帮助命令

1.help

2.man

3.info

四.查看命令

1.pwd

2.cd

3.ls

4.通配符

5.alias

五.创建命令

1.mkdie

2.cp

3.mv

4.硬连接与软连接


一.shell

1.shell定义

shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。

当用户使用应用程序发布指令,shell通知操作系统需要进行怎样的操作,然后内核指挥硬件工作,用户并不能指挥硬件。

2.shell环境

bash是linux里面默认的shell程序位于/bin/bash

[root@localhost ~]#echo $SHELL                             #显示当前shell
/bin/bash
[root@localhost ~]#cat /etc/shells                         #显示当前系统所有使用的shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost ~]#sh                                      #切换shell环境
sh-4.2# 
sh-4.2# exit
exit
[root@localhost ~]#pstree                                  #查看使用过的shell环境
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]

3.绝对、相对路径

①.目录类型

/根目录
boot系统启动需要的文件
bin二进制文件,普通用户可使用的命令
sbin二进制文件,管理员可使用的命令
dev存放硬件
home家目录的上级目录
lib代码库32位
lib64代码库64位
proc进程,正在运行的程序
run加载到内存中的文件
etc配置文件
mnt挂载文件
opt第三方软件
tmp临时文件
var日志文件

②.文件类型

-普通文件
d目录文件
p管道
l链接
s套接字
c字符
b块设备

③.文件路径

文件路径:描述了文件在系统中的位置。

文件路径分为绝对路径和相对路径。

路径最开始有/就是绝对路径。

路径最开始无/就是相对路径。

4.内部、外部命令

操作系统的命令通常分为内部命令和外部命令,内部命令常驻内存,而外部命令是一条单独的可执行文件。

外部命令是一个个单独的可执行文件,存放于磁盘。内部命令在任何时候都可以使用,外部命令需要保证命令文件在当前的目录中,或已经被加载了路径。

内部命令由bash软件提供,外部命令是手动安装。

shell 分为内部命令和外部命令,一般先执行内部命令,hash,再执行外部命令。

内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令Linux系统中能够完成特定功能的脚本文件或二进制程序
属于Shell的一部分属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行

①.用help命令可以查看内部命令

[root@localhost ~]#help
GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)
这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表.
输入 `help 名称' 以得到有关函数`名称'的更多信息.
使用 `info bash' 来获得关于 shell 的更多一般性信息
使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息.

名称旁边的星号 (*) 意味着该命令被禁用.

 job_spec [&]                                     history [-c] [-d 偏移量] [n] 或 history ->
 (( 表达式 ))                                  if 命令; then 命令; [ elif 命令; then 
 . 文件名 [参数]                             jobs [-lnprs] [任务声明 ...] 或 jobs -x >
 :                                                kill [-s 信号声明 | -n 信号编号 | -佾
 [ 参数... ]                                    let 参数 [参数 ...]
 [[ 表达式 ]]                                  local [option] 名称[=值] ...
 alias [-p] [名称[=值] ... ]                   logout [n]
 bg [任务声明 ...]                            mapfile [-n 计数] [-O 起始序号] [-s 计>
 bind [-lpvsPVS] [-m 键映射] [-f 文件名] >  popd [-n] [+N | -N]
 break [n]                                        printf [-v var] 格式 [参数]
 builtin [shell 内嵌 [参数 ...]]              pushd [-n] [+N | -N | 目录]
 caller [表达式]                               pwd [-LP]
 case 词 in [模式 [| 模式]...) 命令 ;;].>  read [-ers] [-a 数组] [-d 分隔符] [-i 纾
 cd [-L|[-P [-e]]] [dir]                          readarray [-n 计数] [-O 起始序号] [-s 
 command [-pVv] 命令 [参数 ...]               readonly [-aAf] [name[=value] ...] or readonl>
 compgen [-abcdefgjksuv] [-o 选项]  [-A 动仾  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] [-o 选韾  select NAME [in 词语 ... ;] do 命令; done>
 compopt [-o|+o 选项] [-DE] [名称 ...]        set [-abefhkmnptuvxBCHP] [-o option-name] [-->
 continue [n]                                     shift [n]
 coproc [名称] 命令 [重定向]               shopt [-pqsu] [-o] [选项名 ...]
 declare [-aAfFgilrtux] [-p] [name[=value] ...]>  source 文件名 [参数]
 dirs [-clpv] [+N] [-N]                           suspend [-f]
 disown [-h] [-ar] [任务声明 ...]             test [表达式]
 echo [-neE] [参数 ...]                         time [-p] 管道
 enable [-a] [-dnps] [-f 文件名] [名称 ...>  times
 eval [参数 ...]                                trap [-lp] [[参数] 信号声明 ...]
 exec [-cl] [-a 名称] [命令 [参数 ...]] [>  真
 exit [n]                                         type [-afptP] 名称 [名称 ...]
 export [-fn] [名称[=值] ...] 或 export -p    typeset [-aAfFgilrtux] [-p] name[=value] ...
 伪                                              ulimit [-SHacdefilmnpqrstuvx] [限制]
 fc [-e 编辑器名] [-lnr] [起始] [终结] >  umask [-p] [-S] [模式]
 fg [任务声明]                                unalias [-a] 名称 [名称 ...]
 for 名称 [in 词语 ... ] ; do 命令; done    unset [-f] [-v] [名称 ...]
 for (( 表达式1; 表达式2; 表达式3 )); >  until 命令; do 命令; done
 function 名称 { 命令 ; } 或 name () { 命>  variables - 一些 shell 变量的名称和厾
 getopts 选项字符串 名称 [参数]          wait [编号]
 hash [-lr] [-p 路径名] [-dt] [名称 ...]     while 命令; do 命令; done
 help [-dms] [模式 ...]                         { 命令 ; }

②.使用 type 命令来区分内外部命令

#内嵌代表内部命令
[root@localhost ~]#type cd
cd 是 shell 内嵌

#别名代表外部命令
#外部命令会有程序路径
[root@localhost ~]#type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls

#whereis命令可以查找命令具体的位置所在
[root@localhost ~]#whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

#外部命令找不到就报无命令
[root@localhost ~]#type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo

③.命令执行过程

当用户输入一条命令,shell会先判断该命令是内部命令还是外部命令,如果是内部命令就直接执行,如果是外部命令会先查看hash缓存表,hash缓存表中有就直接执行,如果没有还会从硬盘上找,如果硬盘中也没有就直接报错。

二.命令行格式

 在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令。

 严格来说,命令通常只代表实现某一类功能的程序的名。

格式:命令字 空格  [选项] 空格 [参数]

解释命令字 选项 参数各自的意思及具体使用方法

 ①.命令字:

是整条命令中最关键的一部分,唯一确定。

 ②.选项:

短格式选项:使用“-”符号引导 通常 一个字母

长格式选项:使用“--”符号引导 通常完整的单词

 ③.参数:

命令字的处理对象

可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个

;可以隔开命令,执行多个

快捷键功能
Tab 键自动补齐(两次可以显示所有选项
反斜杠“\”强制换行或转义
Ctrl+e 或 end 键光标移到最后
Ctrl+U清空至行首不包括当前光标处的 字符
Ctrl+K清空至行尾包括当前光标处的字符
Ctrl+a光标移到最前
Ctrl+w从当前光标删除到开头
ALT+ d从当前光标删除末尾
Ctrl+ l清屏
Ctrl+c取消本次命令编辑
Ctrl+s/Ctrl+q锁屏/解锁
向上下箭头回看执行过的命令

三.帮助命令

1.help

格式说明

  • []表示可选项

  • CAPS或<>表示可变化的数据

  • ...表示一个列表可加多个一个或多个

  • x|y|z 表示或的意思

  • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后

查看内部命令的方法:

[root@localhost ~]#help echo
echo: echo [-neE] [参数 ...]
    将参数写到标准输出。
    
    在标准输出上显示 ARG 参数后跟一个换行。
    
    选项:
      -n	不要追加换行
      -e	启用下列反斜杠转义的解释
      -E	显式地抑制对于反斜杠转义的解释
    
    `echo' 对下列反斜杠字符进行转义:
      \a	警告(响铃)
      \b	退格
      \c	抑制更多的输出
      \e	转义字符
      \f	格式提供
      \n	换行
      \r	回车
      \t	横向制表符
      \v	纵向制表符
      \\	反斜杠
      \0nnn	以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
    	0到3个八进制数字
      \xHH	以 HH (十六进制)为值的八比特字符。HH可以是
    	一个或两个十六进制数字
    
    退出状态:
    返回成功除非有写错误发生。

查看外部命令的方法:

2.man

man分九个章节默认打开第一章节(menu菜单 manual手册)

[root@localhost ~]#whatis ls
ls (1)               - 列目录内容
ls (1p)              - list directory contents
[root@localhost ~]#whatis passwd
passwd (5)           - (未知的主题)
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user's authentication tokens

#查看第五章内容,第5章一般是配置文件格式详细解释
[root@localhost ~]# man 5 passwd      
[root@localhost ~]# man 7 ascii
[root@localhost ~]# man 7 UTF-8
[root@localhost ~]# mandb
#生成man数据库,man命令无效时
正在删除 /usr/share/man 里的旧数据库条目...
mandb: 警告:/usr/share/man/man8/fsck.fat.8.manpage-fix.gz:忽略错误的文件名
正在处理 /usr/share/man 下的手册页...
正在删除 /usr/share/man/hu 里的旧数据库条目...
正在删除 /usr/share/man/pl 里的旧数据库条目...



[root@localhost ~]# man man

 该清单是一组用冒号分隔的欲查找的手册清单。此选项将覆盖                MANSECT               环境变量。
              有些指令或程序可能有一个以上的主题,它们位于不同的区段中。因此,要查看较后的区 段,你可以在此指定  man
              查找区段的顺序。具体区段划分如下所示:
              区段1:用户指令
              区段2:系统调用
              区段3:程序库调用
              区段4:设备
              区段5:文件格式     shadow passwd fstab
              区段6:游戏
              区段7:杂项
              区段8:系统指令
              区段9:内核内部指令
              区段n:Tcl或Tk指令

3.info

info也可以查看相关的帮助信息

四.查看命令

1.pwd

pwd(print work directory)

[root@localhost ~]# pwd                 #显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月   6 20:57 /bin -> usr/bin

[root@localhost bin]# pwd -P
/usr/bin
#-P 显示真实路径
快捷方式   不是文件真正的路径

[root@localhost opt]#ln -s /opt/aaa/   /mnt/aaa
#设置软连接
[root@localhost opt]#cd /mnt/aaa/
#切换到软连接
[root@localhost aaa]#ls
#
[root@localhost aaa]#pwd
#显示的是当前路径
/mnt/aaa
[root@localhost aaa]#pwd -P
#文件的真实路径
/opt/aaa

2.cd

cd命令用于切换当前目录到指定的目录。

命令效果
cd -切换成上一次的目录
cd ~返回当前用户的家目录
cd .留在当前目录
cd ..返回上一级目录
cd /切换到根目录下
cd  返回当前用户的家目录

3.ls

格式:ls  [选项]  [文件或目录]

选项效果
-l长格式显示文件和目录列表
-a显示全部包括隐藏文件
-A显示全部文件或隐藏文件,但不包括 . 和..
-d仅列出目录本身,而不是列出目录内的文件数据
-h友好显示文件大小
-r倒序显示
-R递归显示该目录及该目录的子目录下的所有内容
-t按时间顺序显示
-S以文件容量大小排序

#长格式
[root@localhost ~]#ll
总用量 8
-rw-------. 1 root root 2050 10月 24 18:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 2098 10月 24 18:17 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 10月 24 18:17 公共
drwxr-xr-x. 2 root root    6 10月 24 18:17 模板
drwxr-xr-x. 2 root root    6 10月 24 18:17 视频
drwxr-xr-x. 2 root root    6 10月 24 18:17 图片
drwxr-xr-x. 2 root root    6 10月 24 18:17 文档
drwxr-xr-x. 2 root root    6 10月 24 18:17 下载
drwxr-xr-x. 2 root root    6 10月 24 18:17 音乐
drwxr-xr-x. 2 root root    6 10月 24 18:17 桌面

#显示所有 包括隐藏文件
[root@localhost ~]#ls -a
.                .bash_logout   .config    .ICEauthority         .viminfo     视频  音乐
..               .bash_profile  .cshrc     initial-setup-ks.cfg  .Xauthority  图片  桌面
anaconda-ks.cfg  .bashrc        .dbus      .local                公共         文档
.bash_history    .cache         .esd_auth  .tcshrc               模板         下载

#显示所有 不包括. ..的隐藏文件
[root@localhost ~]#ls -A
anaconda-ks.cfg  .bash_profile  .config  .esd_auth             .local    .Xauthority  视频  下载
.bash_history    .bashrc        .cshrc   .ICEauthority         .tcshrc   公共         图片  音乐
.bash_logout     .cache         .dbus    initial-setup-ks.cfg  .viminfo  模板         文档  桌面

#只显示本目录
[root@localhost ~]#ls -d
.
[root@localhost ~]#

#加单位k,友好显示
[root@localhost ~]#ls -lh
总用量 8.0K
-rw-------. 1 root root 2.1K 10月 24 18:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 2.1K 10月 24 18:17 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 10月 24 18:17 公共
drwxr-xr-x. 2 root root    6 10月 24 18:17 模板
drwxr-xr-x. 2 root root    6 10月 24 18:17 视频
drwxr-xr-x. 2 root root    6 10月 24 18:17 图片
drwxr-xr-x. 2 root root    6 10月 24 18:17 文档
drwxr-xr-x. 2 root root    6 10月 24 18:17 下载
drwxr-xr-x. 2 root root    6 10月 24 18:17 音乐
drwxr-xr-x. 2 root root    6 10月 24 18:17 桌面

#递归显示
[root@localhost ~]#ls -R
.:
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面

./公共:

./模板:

./视频:

./图片:

./文档:

./下载:

./音乐:

./桌面:

颜色表示的文件类型:

  • 黑色数据文件 普通文件

  • 绿色 可执行文件

  • 黄色 块设备文件硬件设备(硬盘)

  • 红色 压缩包

  • 蓝色 文件夹

  • 天蓝色 连接文件(快捷方式)

[root@localhost ~]# vim /etc/DIR_COLORS
#颜色在这里显示

4.通配符

通配符是一种特殊语句,用来模糊搜索文件或目录。

符号效果
匹配一个字符  如f?.txt
*匹配所有非隐藏的字符无论多长多短,但隐藏文件除外
{1..10}1到10
{a..z}a b c ...z
{A..Z}A B C .....Z
[123]一个字符,1或2或3
[a-z]一个字符,a或b或....z
[0-9]一个字符,0或1或....9
\转义符,表示原来的意思
[[:lower:]]小写字母表示 a-z
[[:upper:]]大写字母表示 A-Z
[^abc]一个字符,除a、b、c以外的
[[:digit:]]任意数字,相当于0-9
[[:alpha:]]任意字母

#不显示隐藏文件
[root@localhost data]# ls -a *
1

#显示隐藏文件
[root@localhost data]# ls -a
.  ..  1

#包括了 .. 上层目录中的文件
[root@localhost data]# ls .*
.:

..:


#创建a到z所有字母的文件
[root@localhost 123]#touch {a..z}.txt
[root@localhost 123]#ls
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
b.txt  d.txt  f.txt  h.txt  j.txt  l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt

#只显示a、b、c单个字符的文件
[root@localhost 123]#ls [abc].txt
a.txt  b.txt  c.txt

#显示除a、b、c、d单个字符以外所有的文件
[root@localhost 123]#touch {A..Z}.txt
[root@localhost 123]#ls [^abcd].txt
A.txt  e.txt  g.txt  i.txt  k.txt  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
B.txt  E.txt  G.txt  I.txt  K.txt  M.txt  O.txt  Q.txt  S.txt  U.txt  W.txt  Y.txt
C.txt  f.txt  h.txt  j.txt  l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt
D.txt  F.txt  H.txt  J.txt  L.txt  N.txt  P.txt  R.txt  T.txt  V.txt  X.txt  Z.txt

#显示所有大写字母开头的文件
[root@localhost 123]#ls [[:upper:]]*
A.txt  C.txt  E.txt  G.txt  I.txt  K.txt  M.txt  O.txt  Q.txt  S.txt  U.txt  W.txt  Y.txt
B.txt  D.txt  F.txt  H.txt  J.txt  L.txt  N.txt  P.txt  R.txt  T.txt  V.txt  X.txt  Z.txt

[root@localhost data]# ll f[0-9][0-9].txt
#两个 [0-9]可以匹配双数字
[root@localhost data]# ll f{1..20}.txt
#{10..20}可以匹配双数字

[root@localhost data]# ll f??.txt
#两个?号可以匹配
[root@localhost data]# ll f*.txt
#  *也可以
-rw-r--r--. 1 root root 0 8月  29 01:51 f10.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f11.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f12.txt

[root@localhost data]# ls /etc/.*
#显示隐藏文件也包括.. 的上层目录
#如果不想看上层目录 就要加-d 只显示当前目录
[root@localhost data]# ls /etc/.* -d
#只显示当前目录
/etc/.  /etc/..  /etc/.java  /etc/.pwd.lock  /etc/.updated

5.alias

临时修改

  • alias 命令别名=’命令‘

  • unalias 别名命令 删除别名

  • \加别名命令 (显示原始命令)

#为下面这个命令做了个别名,两者效果相同
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]#alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost ~]#myvim

#删除后,即不能使用
[root@localhost ~]#unalias myvim 
[root@localhost ~]#myvim
bash: myvim: 未找到命令...


#如果不加引号无法识别
[root@localhost dev]# alias myls=ls -alh
-bash: alias: -alh: 未找到

#就想使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls
#\反义符,表示原本的意思

五.创建命令

1.mkdie

格式:mkdir [选项] 目录位置及名称

mkdir -p 递归创建 没有文件夹 会自动递归创建

[root@localhost data]# mkdir a b c d
#创建多个文件夹
[root@localhost data]# ls
a  b  c  d
[root@localhost data]# mkdir -p aaa/bbb/cccc
# 递归创建文件夹
[root@localhost data]# ls
a  aaa  b  c  d

[root@localhost data]# tree
.
├── a
├── aaa
│   └── bbb
│       └── cccc
├── b
├── c
└── d


mkdir  -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
#一次建立多个文件

2.cp

cp(copy)备份

①.cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为

②.cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹

如果已有文件夹会生成子目录

选项效果
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变

-r

复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息
-v可视化
-u相当于增备,差异备份(只对文件夹起作用)

[root@localhost ~]#touch aaa
[root@localhost ~]#mkdir bbb
[root@localhost ~]#ls
123  aaa              bbb                   公共  视频  文档  音乐
456  anaconda-ks.cfg  initial-setup-ks.cfg  模板  图片  下载  桌面

#把源目录辅助到目标目录下,需要加-r
[root@localhost ~]#cp -r bbb/ 456/ 
[root@localhost ~]#ls
123  aaa              bbb                   公共  视频  文档  音乐
456  anaconda-ks.cfg  initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]#ls 456/
bbb

#把源目录辅助到目标目录下,并改名
[root@localhost ~]#cp -r bbb/ 456/ccc 
[root@localhost ~]#ls 456/
bbb  ccc

3.mv

mv [选项] … 源文件或目录… 目标文件或目录 单个文件

移动 或者改名

选项效果
-f强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-n如果目标文件已经存在,则不会覆盖移动,而且不询问用户
-v显示文件或目录的移动过程

[root@localhost ~]#ls
123  aaa              bbb                   公共  视频  文档  音乐
456  anaconda-ks.cfg  initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]#ls 456
bbb  ccc

#把源目标目录移动到目标目录下并改名
[root@localhost ~]#mv -v bbb 456/ddd
"bbb" -> "456/ddd"
[root@localhost ~]#ls 456
bbb  ccc  ddd
[root@localhost ~]#

批量

rename log log.bak* //所有 log文件改成 log.bak

rename 旧字符 新字符 目标文件

[root@test1 opt]# rename txt txt.bak *.txt
#把 txt 改成 txt.bak

4.硬连接与软连接

硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问。

软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件。

ln(link)

ln [-s] 源文件或目录… 链接文件或目标位置

对比项硬链接软链接
本质 本质是同一个文件 本质不是同一个文件
inode 相同 不同
连接数 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 删除,新建都不会改变
文件夹不支持支持
删除源文件 只是链接数减一,但链接文件的访问不受影响 无法访问连接文件
文件类型 和源文件相同 链接文件,和源文件无关
文件大小和源文件相同(指向硬盘上的同一个文件源文件的路径的长度

例子

ln -s   绝对路径的源文件 软连接位置

ls       绝对路径的源文件 硬连接位置

硬链接

[root@localhost data]# mkdir  /data
[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬连接
#不能跨分区建立连接 无法对文件夹创建 
[root@localhost data]# ln /data/f1.txt  /boot/f111.txt
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。

软链接

删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root    6 8月  26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root   66 8月  26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月  26 11:55 passwd
会认为f1111.txt 与f1.txt在同一目录

################实际运用####################              
软件版本升级迭代 
开发出 app1.0   做软连接 app
如果有 app2.0   就把 软连接app删除 新建app2.0的软连接app

$PATH    以后自行安装软件  系统不会自行 识别    httpd mysql ls         
1将程序文件 放入$PATH 路径 usr/bin  
2做软连接   $PATH
3修改$PATH 路径

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值