Linux基本命令

目录管理

一、列出目录 ls

语法

ls [参数] 目录名称

参数

-a:全部的文件,连同隐藏文件(开头为 . 的文件) 一起列出来(常用)。

-l:长数据串列出,包含文件的属性与权限等等数据(常用)。

-i:显示文件的 inode 节点信息。

-t:根据最后的修改时间排序。

-r:将文件以相反次序显示(默认依英文字母次序)。

-A:同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)。

-S:根据文件大小排序。

-R:递归列出所有子目录。

[root@d-test /]# ls -al
total 68
dr-xr-xr-x. 18 root root  4096 Oct 25 21:28 .
dr-xr-xr-x. 18 root root  4096 Oct 25 21:28 ..
lrwxrwxrwx.  1 root root     7 Jul 11  2019 bin -> usr/bin
dr-xr-xr-x.  5 root root  4096 Jul 11  2019 boot
drwxr-xr-x  19 root root  2980 Oct 31 22:57 dev
drwxr-xr-x. 77 root root  4096 Oct 31 22:54 etc
drwxr-xr-x.  3 root root  4096 Oct 25 21:14 home
lrwxrwxrwx.  1 root root     7 Jul 11  2019 lib -> usr/lib
lrwxrwxrwx.  1 root root     9 Jul 11  2019 lib64 -> usr/lib64
drwx------.  2 root root 16384 Jul 11  2019 lost+found
drwxr-xr-x.  2 root root  4096 Apr 11  2018 media
drwxr-xr-x.  2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x.  2 root root  4096 Apr 11  2018 opt
dr-xr-xr-x  90 root root     0 Oct 31 22:54 proc
dr-xr-x---.  5 root root  4096 Oct 31 22:54 root
drwxr-xr-x  23 root root   640 Oct 31 22:55 run
lrwxrwxrwx.  1 root root     8 Jul 11  2019 sbin -> usr/sbin
drwxr-xr-x.  2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x  13 root root     0 Nov  1  2021 sys
drwxrwxrwt. 10 root root  4096 Oct 31 22:55 tmp
drwxr-xr-x. 13 root root  4096 Jul 11  2019 usr
drwxr-xr-x. 19 root root  4096 Jul 11  2019 var

二、切换目录 cd

Change Directory 的缩写,这是用来变换工作目录的命令。

语法

cd [相对路径或绝对路径]

1.切换到用户目录下

[root@d-test /]# cd home
[root@d-test home]#

2.回到上一级

[root@d-test home]# cd ..
[root@d-test /]#

3.切换到根目录

[root@d-test /]# cd /
[root@d-test /]#

4.进入当前目录

[root@d-test /]# cd .
[root@d-test /]#

三、显示当前目录 pwd

Print Working Directory 的缩写,也就是显示目前所在目录的命令。

语法

pwd [-P]

参数

-P:显示出确实的路径,而非使用连接(link)路径。

1、单纯显示出目前的工作目录

[root@d-test ~]# pwd
/root

2、如果是链接,要显示真实地址,可以使用 -P 参数

[root@d-test ~]# cd /bin
[root@d-test bin]# pwd
/bin
[root@d-test bin]# pwd -P
/usr/bin

四、创建建目录 mkdir

Make Directory的缩写,创建新目录。

语法

mkdir [参数] 目录名称

参数

-m:配置文件的权限。直接配置,不需要考虑默认权限(umask)。

-p:帮助你直接将所需要的目录(包含上一级目录)递归创建起来。

1、创建目录

[root@d-test home]# mkdir test
[root@d-test home]# ls
admin  test

2、创建多级目录

[root@d-test home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory

可以看出,是不能直接创建多级目录的。

如果需要创建多级目录,需要加上 -p 参数。

[root@d-test home]# mkdir -p test1/test2/test3/test4
[root@d-test home]# ls
admin  test1

3、创建权限为 rwx—x—x 的目录

[root@d-test home]# mkdir -m 711 test2
[root@d-test home]# ls -l
total 12
drwx------ 3 admin admin 4096 Oct 29 09:56 admin
drwxr-xr-x 3 root  root  4096 Oct 31 23:19 test1
drwx--x--x 2 root  root  4096 Oct 31 23:21 test2

五、删除目录 rmdir

删除空的目录。

语法

rmdir [参数] 目录名称

参数

-p:用递归的方式删除指定的目录路径中的所有父级目录,非空则报错

1、删除空目录

[root@d-test home]# rmdir test2
[root@d-test home]# ls
admin  test1

2、删除非空目录

[root@d-test home]# rm test1
rm: cannot remove ‘test1’: Is a directory

因为目录不是空的,无法删除。

加上参数 -p ,可以将 test1/test2/test3/test4 依次删除。

[root@d-test home]# rmdir -p test1/test2/test3/test4
[root@d-test home]# ls
admin

文件管理

一、复制文件 cp

复制文件或目录。

语法

cp [参数] 来源(source) 目标(destination)

参数

-a:相当于 -pdr 命令(常用)。

-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用

-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身。

-r:递归持续复制,用於目录的复制行为(常用)。

-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次。

-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)。

-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。

-s:复制成为符号连结档(symbolic link),亦即捷径文件。

-u:若 destination 比 source 旧才升级 destination。

-b:覆盖已存在的文件目标前将目标文件备份

将root目录下的install.sh 复制到home目录下

[root@d-test home]# cp /root/install.sh /home
[root@d-test home]# ls
install.sh

二、删除文件 rm

删除文件或目录

语法

rm [参数] 文件或目录

参数

 -f:force 的缩写,忽略不存在的文件,不会出现警告信息。

-i:互动模式,在删除前会询问使用者是否动作。

-r:递归删除。常用于目录的删除(影响很大,需要谨慎操作)。

1、删除/home/install.sh

[root@d-test home]# rm -i install.sh
rm: remove regular file ‘install.sh’? y

2、删除根目录下所有文件

rm -rf /

此命令会强制递归删除 / 下的所有文件。由于 / 是根目录,所以会删除所有文件。

三、移动文件 mv

移动文件与目录,或修改名称。

语法

mv [参数] source destination

参数

-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖。

-i:若目标文件(destination)已经存在时,就会询问是否覆盖。

-u:当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作。

-b:当文件存在时,覆盖前为其创建一个备份

1、复制文件到当前目录

[root@d-test home]# cp /root/install.sh /home

2、将文件移动到创建的目录

[root@d-test home]# mkdir test
[root@d-test home]# mv install.sh test
[root@d-test home]# ls
test
[root@d-test home]# cd test
[root@d-test test]# ls
install.sh

3、将文件夹重命名,然后再次查看

[root@d-test test]# cd ..
[root@d-test home]# mv test mvtest
[root@d-test home]# ls
mvtest

四、创建文件 touch

在当前目录创建一个文件。

语法

touch 文件名

1、创建一个文件

[root@d-test home]# touch file1
[root@d-test home]# ls
admin  file1

五、编辑文本 echo

输入内容给指定文件。

语法

echo "内容" >>文件名

1、将 "This is a test file"保存到file1

[root@d-test home]# echo "This is a test file" >>file1
[root@d-test home]# cat file1
This is a test file

内容查看

一、显示文件内容 cat

由第一行开始显示文件内容。

语法

cat [参数]

参数

-A:相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已。

-b:列出行号,仅针对非空白行做行号显示,空白行不标行号。

-E:将结尾的断行字节 $ 显示出来。

-n:列印出行号,连同空白行也会有行号,与 -b 的选项不同

-T:将 [tab] 按键以 ^I 显示出来。

-v:列出一些看不出来的特殊字

1、查看/etc/sysconfig/network-scripts/ifcfg-eth0文件

[root@d-test ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

二、反显文件内容 tac

tac 是 cat 命令的反写,意思也很明显:由最后一行开始显示文件内容。

[root@d-test ~]# tac /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=dhcp
DEVICE=eth0

三、查看文件并显示行号 nl

语法

nl [参数] 文件

参数

-b:指定行号指定的方式,主要有两种:

        -b a:不论是否为空行,也同样列出行号(类似 cat -n

        -b t:如果有空行,空的那一行不要列出行号(默认值)。

-n:列出行号表示的方法,主要有三种:

        -n ln:行号在荧幕的最左方显示。

        -n rn:行号在自己栏位的最右方显示,且不加 0。

        -n rz:行号在自己栏位的最右方显示,且加 0。

-w:行号栏位的占用的位数。

[root@d-test ~]# nl /etc/sysconfig/network-scripts/ifcfg-eth0
     1    DEVICE=eth0
     2    BOOTPROTO=dhcp
     3    ONBOOT=yes

四、查看文件并翻页

1、more

一页一页翻动(只能向下翻动)。

在 more 这个程序的运行过程中,你有几个按键可以按的:

空白键:代表向下翻一页。

回车键:代表向下翻一行。

/:代表在这个显示的内容当中,向下搜寻这个关键字

f:立刻显示出档名以及目前显示的行数。

q:代表立刻离开 more ,不再显示该文件内容。

b:代表往回翻页,不过这动作只对文件有用,对管线无用。

2、less

一页一页翻动(可以上下翻页)。

空格键:代表向下翻一页。

上键:代表向下翻动一页。

下键:代表向上翻动一页。

/:向下搜寻『字串』的功能。

?:向上搜寻『字串』的功能。

n:重复前一个搜寻 (与 / 或 ? 有关!)。

N:反向的重复前一个搜寻 (与 / 或 ? 有关!)。

q:离开 less 这个程序。

五、查看文件前面几行 head

语法

head [参数] 文件

参数

-n:后面接数字,代表显示几行的意思。默认显示前面 10 行。

[root@d-test ~]# head -n 15 /etc/csh.login
# /etc/csh.login
# System wide environment and startup programs, for login setup
#add sbin directories to the path
foreach p ( /usr/local/sbin /usr/sbin )
    switch (":${PATH}:")
    case "*:${p}:*":
        breaksw
    default:
        if ( $uid == 0 ) then
                        set path = ( ${p} ${path:q} )
        else
                        set path = ( ${path:q} ${p} )
        endif

六、查看文件后面几行 tail

语法

tail [参数] 文件

参数

-n:后面接数字,代表显示几行的意思。默认显示最后 10 行。

[root@d-test ~]# tail -n 15  /etc/csh.login
set history=1000
if ( -d /etc/profile.d ) then
        set nonomatch
        foreach i ( /etc/profile.d/*.csh /etc/profile.d/csh.local )
                if ( -r "$i" ) then
                            if ($?prompt) then
                                  source "$i"
                            else
                                  source "$i" >& /dev/null
                            endif
                endif
        end
        unset i nonomatch
endif

链接

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接或者符号链接(Symbolic Link)。

一、硬链接 ln

语法

ln 文件

硬链接通过索引节点来进行链接。

在 Linux 中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。

在 Linux 中,多个文件名指向同一索引节点是存在的。比如:

A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同。

一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件。

A 和 B 对文件系统来说是完全平等的,删除其中任何一个都不会影响另外一个的访问。

硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止误删的功能。

其原因如上所述,因为对应该目录的索引节点有一个以上的连接,只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。

文件真正删除的条件是与之相关的所有硬连接文件均被删除。

二、软链接

语法

ln -s 文件

另外一种连接称之为软链接(Symbolic Link),也叫符号链接

软链接类似于 Windows 的快捷方式。它实际上是一个特殊的文件。

在符号链接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:

A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。

A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。

A 和 B 之间是主从关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

测试

1、创建一个测试文件 f1

[root@d-test home]# touch f1
[root@d-test home]# ls
admin  f1

2、创建 f1 的一个硬链接文件 f2

[root@d-test home]# ln f1 f2

3、创建 f1 的一个软链接文件 f3

[root@d-test home]# ln -s f1 f3

4、显示文件的 inode 节点信息

[root@d-test home]# ls -li
total 4
1048909 drwx------ 3 admin admin 4096 Oct 29 09:56 admin
 664707 -rw-r--r-- 2 root  root     0 Nov  6 22:09 f1
 664707 -rw-r--r-- 2 root  root     0 Nov  6 22:09 f2
 664708 lrwxrwxrwx 1 root  root     2 Nov  6 22:09 f3 -> f1

可以看出,硬链接文件 f2 与原文件 f1 的 inode 节点相同,均为 664707,然而软链接文件的 inode 节点不同。

5、输入字符到 f1

[root@d-testhome]# echo "This is a test file" >>f1

6、查看文件

[root@d-test home]# cat f1
This is a test file
[root@d-test home]# cat f2
This is a test file
[root@d-test home]# cat f3
This is a test file
[root@d-test home]# rm -f f1
[root@d-test home]# cat f2
This is a test file
[root@d-test home]# cat f3
cat: f3: No such file or directory

可以看出,当删除原始文件 f1 后,硬链接 f2 不受影响,但是软链接 f3 无效。

由此可以得到如下结论:

        删除软连接f3,对f1,f2无影响

        删除硬链接f2,对f1,f3无影响

        删除原文件f1,对硬链接f2无影响,导致软件链接f3失效

        同时删除原文件f1,硬链接f2,整个文件会真正被删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值