系统相关
首页 > 系统相关> > Linux基本命令

Linux基本命令

作者:互联网

Linux 系统可以使用 man [命令] 来查看各个命令的使用文档。

目录管理

首先我们需要知道什么是绝对路径和相对路径。

绝对路径

由根目录 / 写起,例如:/usr/share/doc

相对路径

不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:../man

处理目录的常用命令

常见的处理目录的命令:

可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp

ls

在 Linux 系统当中, ls 命令可能是最常被运行的。

语法

ls [-aAdfFhilnrRSt] 目录名称

参数

将目录下的所有文件列出来(含属性与隐藏档)

[root@sail /]# 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

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

语法

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

切换到用户目录下

[root@sail /]# cd home
[root@sail home]# 

回到上一级

[root@sail home]# cd ..
[root@sail /]# 

回到根目录

[root@sail /]# cd /
[root@sail /]# 

回到root目录

[root@sail /]# cd root
[root@sail ~]# 

pwd

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

语法

pwd [-P]

参数

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

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

[root@sail ~]# pwd
/root

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

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

mkdir

make directory,创建新目录

语法

mkdir [-mp] 目录名称

参数:

创建目录

[root@sail home]# mkdir sail
[root@sail home]# ls
admin  sail

创建多级目录

# 没办法直接创建多级目录
[root@sail home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
# 需要加上 -p 参数
[root@sail home]# mkdir -p test1/test2/test3/test4
[root@sail home]# ls
admin  test1

创建权限为 rwx--x--x 的目录

[root@sail home]# mkdir -m 711 test2
[root@sail 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] 目录名称

参数

-p: 连同下一级(空的)目录也一起删除

删除空目录

[root@sail home]# rmdir test2
[root@sail home]# ls
admin  test1

删除非空目录

# 因为目录不是空的,无法删除
[root@sail home]# rm test1
rm: cannot remove ‘test1’: Is a directory
# 加上参数 -p ,可以将 test1/test2/test3/test4 依次删除
[root@sail home]# rmdir -p test1/test2/test3/test4
[root@sail home]# ls
admin

这个 rmdir 仅能删除空的目录,可以使用 rm 命令来删除非空目录。

cp ( 复制文件或目录 )

语法:

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory

选项与参数:

测试:

# 找一个有文件的目录,我这里找到 root目录
[root@kuangshen home]# cd /root
[root@kuangshen ~]# ls
install.sh
[root@kuangshen ~]# cd /home

# 复制 root目录下的install.sh 到 home目录下
[root@kuangshen home]# cp /root/install.sh /home
[root@kuangshen home]# ls
install.sh

# 再次复制,加上-i参数,增加覆盖询问?
[root@kuangshen home]# cp -i /root/install.sh /home
cp: overwrite ‘/home/install.sh’? y # n不覆盖,y为覆盖

rm ( 移除文件或目录 )

语法:

rm [-fir] 文件或目录

选项与参数:

测试:

# 将刚刚在 cp 的实例中创建的 install.sh删除掉!
[root@kuangshen home]# rm -i install.sh
rm: remove regular file ‘install.sh’? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

# 尽量不要在服务器上使用 rm -rf /

mv ( 移动文件与目录,或修改名称 )

语法:

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory

选项与参数:

测试:

# 复制一个文件到当前目录
[root@kuangshen home]# cp /root/install.sh /home

# 创建一个文件夹 test
[root@kuangshen home]# mkdir test

# 将复制过来的文件移动到我们创建的目录,并查看
[root@kuangshen home]# mv install.sh test
[root@kuangshen home]# ls
test
[root@kuangshen home]# cd test
[root@kuangshen test]# ls
install.sh

# 将文件夹重命名,然后再次查看!
[root@kuangshen test]# cd ..
[root@kuangshen home]# mv test mvtest
[root@kuangshen home]# ls
mvtest

文件管理

创建文件

touch

在当前目录创建一个文件

语法

touch 文件名 

演示

[root@sail home]# touch f1
[root@sail home]# ls
admin  f1

echo

输入内容给指定文件

语法

echo "内容" >>文件名

演示

[root@sail home]# echo "I am f1 file" >>f1
[root@sail home]# cat f1
I am f1 file

基本属性

文件属性

介绍

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在 Linux 中我们可以使用 ls –l 或者 ll 命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@sail /]# ls -l
total 60
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 31 23:28 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  89 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 Oct 31 23:00 sys
drwxrwxrwt.  8 root root  4096 Nov  5 03:42 tmp
drwxr-xr-x. 13 root root  4096 Jul 11  2019 usr
drwxr-xr-x. 19 root root  4096 Jul 11  2019 var
[root@sail /]# ll
total 60
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 31 23:28 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  89 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 Oct 31 23:00 sys
drwxrwxrwt.  8 root root  4096 Nov  5 03:42 tmp
drwxr-xr-x. 13 root root  4096 Jul 11  2019 usr
drwxr-xr-x. 19 root root  4096 Jul 11  2019 var

展示结果的第一列为文件属性,代表该文件的类型及权限。

文件属性中第一个字符代表这个文件的类型:

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中:

这三个权限的位置不会改变,如果没有权限,就会出现减号 - 代替。

每个文件的属性由左边第一部分的 10 个字符来确定,如下图:

图片

从左至右用 0 - 9 的数字来表示:

其中:

属主:对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

属组:在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。

文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

因此,Linux 系统按文件所有者、文件所有者同组用户和其他用户规定了不同的文件访问权限。

在以上实例中,boot 文件是一个目录文件,属主属组都为 root。

修改

chgrp

更改文件属组。

语法

chgrp [-R] 属组名 文件名

参数

-R:递归更改文件属组。在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。

chown

更改文件属主,也可以同时更改文件属组。

语法

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

参数

-R:递归更改文件属主。在更改某个目录文件的属主时,如果加上 -R 的参数,那么该目录下的所有文件的属主都会更改。

chmod

更改文件9个属性

语法

chmod [-R] xyz 文件或目录

以数字设置属性

Linux 文件属性有两种设置方法,一种是数字,一种是符号。

Linux 文件的基本权限有九个,分别是 ownergroupothers 三种身份各有自己的 readwriteexecute 权限。

文件的权限字符为:rwx rwx rwx, 这九个权限是三个三个一组的。

其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

每种身份 ownergroupothers 各自的三个权限分数是需要累加的,例如当权限为:rwxrwx--- 分数则是:

chmod 770 filename

内容查看

概述

Linux 系统中使用以下命令来查看文件的内容:

命令

cat

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

语法

cat [-AbEnTv]

演示

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

参数

tac

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

演示

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

nl

查看文件并显示行号

语法

nl [-bnw] 文件

演示

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

参数

more

一页一页翻动。

按键

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

less

一页一页翻动

按键

取出文件前面几行

语法

head [-n number] 文件

参数

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

[root@sail ~]# 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 number] 文件

参数

[root@sail ~]# 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 命令产生硬链接。

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

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

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

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

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

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

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

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

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

软链接

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

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

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

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

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

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

演示

[root@sail home]# touch f1 # 创建一个测试文件 f1
[root@sail home]# ls
admin  f1
[root@sail home]# ln f1 f2 # 创建 f1 的一个硬连接文件 f2
[root@sail home]# ln -s f1 f3 # 创建 f1 的一个符号连接文件 f3
[root@sail home]# ls -li # -i 参数显示文件的 inode 节点信息
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 与原文件 f1inode 节点相同,均为 664707,然而软链接文件的 inode 节点不同。

[root@sail home]# echo "I am f1 file" >>f1 # 输入字符到 f1
[root@sail home]# cat f1
I am f1 file
[root@sail home]# cat f2
I am f1 file
[root@sail home]# cat f3
I am f1 file
[root@sail home]# rm -f f1
[root@sail home]# cat f2
I am f1 file
[root@sail home]# cat f3
cat: f3: No such file or directory

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

由此可以得到如下结论:

标签:基本,文件,4096,sail,命令,Linux,xr,home,root
来源: https://www.cnblogs.com/codesail/p/15518649.html