linux
  8HWRMjabeufi 2023年11月02日 46 0

前言

Linux作为企业开发部署的应用服务器之一,应用非常广泛,大部分应用都部署在Linux服务器上,就算你不做运维,也避免不了与服务器打交道,因此掌握Linux服务器常用命令及基本使用是Java程序员必备技能。

1 Linux简介

Linux是一个免费的、类似UNIX的开源操作系统。该操作系统的内核于1991年10月5日由Linus Torvalds首次发布。通过用户空间应用程序,它成为了Linux操作系统。Linux也是自由软件和开源软件开发中最著名的例子。只要遵循GNU通用公共许可证(GPL),任何个人和组织都可以自由使用Linux的所有底层源代码,也可以自由修改和重新发布它。

2 Linux 的树形目录结构

/bin二进制可执行命令
/sbin目录用来存放用于管理员(超级用户)使用的存储二进制系统程序文件。
/etc系统管理和配置文件
/etc/rc.d启动的配置文件和脚本
/usr最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/x11r6存放xwindow的目录
/usr/bin众多的应用程序
/usr/sbin超级用户的一些管理程序
/usr/doclinux文档
/usr/includelinux下开发和编译应用程序所需要的头文件
/usr/lib常用的动态链接库和软件包的配置文件
/usr/man帮助文档
/usr/src源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin本地增加的命令
/usr/local/lib本地增加的库根文件系统
/tmp目录存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用
/var/tmp来代替/tmp,因为前者可能拥有一个更大的磁盘空间。
/var某些大文件的溢出区,比方说各种服务的日志文件
/lib标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/home用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/mnt目录是系统管理员临时安装(mount)文件系统的安装点。程序并不自动支持安装到

2.1 目录颜色

蓝色:目录
白色:普通 文件
绿色:可执行文件
红色:压缩文件
浅蓝色:链接文件
黄色:设备文件
灰色:其他文件

2.2 特殊目录

例子如下:

2.3 文件命名规则

  1. 除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,使用某些特殊字符并不是明智之举。例如,在命名时应避免使用 <、>、?、* 和非打印字符等。如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来。
  2. 目录名或文件名的长度不能超过 255 个字符。
  3. 目录名或文件名是区分大小写的。如 DOG、dog、Dog 和 DOg ,是互不相同的目录名或文件名,但使用字符大小写来区分不同的文件或目录,也是不明智的。
  4. 与 Windows 操作系统不同,文件的扩展名对 Linux 操作系统没有特殊的含义,换句话说,Linux 系统并不以文件的扩展名开分区文件类型。例如,dog.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行文件。

2.4 绝对路径和相对路径

有两种方法可以指定文件的位置,即绝对路径和相对路径。正如我们所知,Linux系统中的所有文件(目录)都被组织成一个以根目录“/”开始的倒置树结构,如图所示。

绝对路径必须从根目录/start写入。例如,使用绝对路径指示bin文件的位置。路径应写为/usr/bin。测试代码如下:

[root@localhost ~]# bin
bash:bin:command not found   <-- 没有找到
[root@localhost ~]# /usr/bin
bash: /usr/bin: is a directory   <-- 是一个文件

和绝对路径不同,相对路径不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起。使用相对路径表明某文件的存储位置时,经常会用到前面讲到的 2 个特殊目录,即当前目录(用 . 表示)和父目录(用 .. 表示)。

3 基础命令

3.1 使用mkdir创建目录

实例如下

3.2 Linux ls 命令

ls [-alrtAFR] [name...]
016575020@DESKTOP-F9IGROA MINGW64 /d/workspace/lake
$ ls -l
total 4
drwxr-xr-x 1 016575020 197121 0 11月 27 08:41 rtf/
drwxr-xr-x 1 016575020 197121 0 11月 26 17:00 rtf-lake/
  • drw:可读,可写,可执行
  • r-x:可读,可执行
  • 016575020 197121  :所有者,所属组,和其他人
  • 0:文件大小

参数

-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出

3.3 Linux touch命令

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。ls -l 可以显示档案的时间记录。语法:

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

参数说明

a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。

3.4 Linux cp 命令

Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。

cp [options] source dest

参数说明

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

实例

使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下,输入如下命令:

$ cp –r test/ newtest

3.5 Linux rm 命令

Linux rm(英文全拼:remove)命令用于删除一个文件或者目录。

rm [options] name...

参数

-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

实例

# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y  
# rm  homework  
rm: 无法删除目录"homework": 是一个目录  
# rm  -r  homework  
rm:是否删除 目录 "homework"? y

3.6 Linux mv 命令

Linux mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。

语法

mv [options] source dest
mv [options] source... directory

参数说明:

-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

实例

将文件 aaa 改名为 bbb :

mv aaa bbb

将 info 目录放入 logs 目录中。注意,如果 logs 目录不存在,则该命令将 info 改名为 logs。

mv info/ logs

再如将 /usr/runoob 下的所有文件和目录移到当前目录下,命令行为:

$ mv /usr/runoob/*  .

3.7 Linux find 命令

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数说明 :

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天内创建的文件
-mtime n : 在过去 n 天内修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。d: 目录c: 字型装置文件b: 区块装置文件
p: 具名贮列  f: 一般文件  l: 符号连结  s: socket

实例将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

# find . -name "*.c"

将当前目录及其子目录中的所有文件列出:

# find . -type f

将当前目录及其子目录下所有最近 20 天内更新过的文件列出:

# find . -ctime  20

查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;

查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

# find . -type f -perm 644 -exec ls -l {} \;

查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

总结

本文主要讲解了Linux常用的几个基础命令,当然日常开发运维中还需要学习更多的命令,学习主要还是举一反三,生命不息,学习不止。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论