1、Linux系统目录结构

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般以用户的账号命名
/opt:这是主机额外安装软件所摆放的目录,默认为空
/etc:存放所有系统管理所需要的配置文件和子目录
/lib:存放系统最基本的动态连接共享库,作用类似于windows的dll文件,几乎所有的程序都要用到这些共享库
/root系统管理员目录,也称作超级权限用户主目录
/tem:存放临时文件
/media:类似windows的其他设备,U盘。光驱等。识别后放在这个目录下
/mnt:临时挂载别的文件系统,可以将光驱挂载在这里,进入该目录就可见了

命名规则

1、除了/之外,其他字符都合法,但是如果包含特殊字符,访问时需要用引号括起来
2、文件名或目录名长度最多256个字符
3、区分大小写
4、避免使用+ -或者.作为普通文件名的第一个字符
5、通过文件的头部信息来读取文件类型,不区分后缀名

绝对路径和相对路径

绝对路径:以根目录/开始的文件名或者目录名,到查找对象(目录或文件)所必须经过的每个目录的名字,是文件位置的完整路标。任何情况下都可以使用绝对路径找到所需的文件
相对路径:不以/开始,从当前目录开始,到查找对象所必须经过的每个目录的名字

环境变量

全局变量和局部变量

局部变量只适用于当前shell,环境变量是全局的,适用于所有shell及其派生出来的任意子进程

环境变量

变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值。在Linux中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录home,bash解释器的提示符PS1

定义环境变量

环境变量配置文件~/.bashrc,修改后刷新才能使改动在本次登录生效,可执行的命令添加进PATH变量,相当于Windows的快捷方式

2、Linux常用命令

Linux命令基本格式

命令 [选项] {参数] command [options] [arguments]
arguments:命令的作用对象
options:调整命令执行行为的开关
短选项:-h/-l/-s
使用-引导,当有多个短选项时,各选项之间使用空格隔开
可组合使用,用一个-就可
也有些不带-,BSD风格,ps aux
有的选项需要带参数
长选项:--help/--list
基本都是完整单词,通常不能组合,长选项的参数需要=,比如--size=1G

学会使用命令帮助

whatis:某个命令的简要说明
info:更详细的介绍
which:查看可执行文件在哪个位置
man:命令的具体参数及使用方法

文件及目录管理

1、创建和删除

mkdir 创建 -p 递归创建所有目录 -m 手动设置创建目录权限
touch:用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来
或者可以创建新的空文件
image.png
删除文件 rm file
rm ab* 类似 find ./name '*log'-exec rm{}
通配符匹配,*匹配任意多各字符,?匹配一个字符
删除非空目录 rm -rf folder
-r/-R #递归处理,将指定目录下的所有文件与子目录一并处理
-f #强制删除文件或目录
-i #删除已有文件或目录之前先询问用于(写入.bashrc防止误操作 alias rm = 'rm -i'
rmdir #删除空目录 -p 递归的删除

移动文件、目录,重命名文件
mv src dst #重命名
-b #当文件存在时,覆盖前,为其创建一个备份
-f #若目标文件或目录与现有的文件或目录重读,则直接覆盖现有的文件或牡蛎
-i #交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件,用户输入y表示同意,n表示取消。避免误操作将文件覆盖
-u #当源文件比目标文件新或者目标文件不存在时,才执行移动操作

cp #将一个或多个源文件或者目录赋值到指定的目的文件或目录
-a #效果和同时指定‘-dpR’参数相同
-d #当复制符号连接时,把目标文件或者目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-f #强行赋值文件或目录,不论目标文件或目录是否已存在
-i #覆盖既有文件之前先询问用户
-l #对源文件建立硬链接,而非复制文件
-p #保留源文件或目录的属性
-R/r #递归处理,将指定目录下的所有文件与子目录一并处理
-s #对源文件建立符号连接,而非复制文件
-u #使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件
-b #覆盖已存在的文件目标前将目标文件备份
-v #详细显示命令执行的操作

2、硬链接和软链接

软链接:快捷方式,文本文件,记录另一个文件的路径名,源文件移动后就失效了,可跨不同的文件系统之间,可连接文件夹、文件ln -s name1 name2
硬链接:对文件Inode引用,链接和源文件Inode相同,修改一个文件,另一个文件随之改动。不能在不同的文件系统之间做硬链接,不能对目录文件做硬链接。如果删除硬链接对应的源文件,硬链接文件仍然存在且保留了原有的内容
ls -i src
ln name1 name2

3、目录切换

cd #change dir(切换工作目录)
pwd #print working directory 显示用户当前所处的工作目录 -p 软连接的时候可以看到绝对路径
ls #多列显示
-l #单列显示,显示目标列表 文件名、文件类型、权限模式、硬链接数、所有者、组、文件大小和文件最后修改时间等
-a #显示隐藏文件
-rl #按文件名反序
-tl #按时间排序
-trl #按时间反序
-slh #按文件大小排序,GB/MB/KB
ls file* #通配符

4、列出目录项

tree #以树状图列出目录结构

  1. -a #显示所有文件和目录
  2. -A #使用ASNI绘图字符显示树状图而不是ASCII字符组合
  3. -C #在文件和目录清单加上色彩,便于区分各种类型
  4. -d #显示目录名称而不是内容
  5. -D #列出文件或目录的更改时间
  6. -f #在每个文件或目录之前按,显示完整的相对路径名称
  7. -g #列出文件或目录的所属群组名称,没有则显示群组识别码
  8. -i #不以阶梯状列出文件或目录名称
  9. -L #level限制目录显示层级
  10. -l #如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
  11. -n #不在文件和目录清单加上色彩
  12. -N #直接列出文件和目录名称,包括控制字符
  13. -p #列出权限标示
  14. ...

5、查看文件内容

cat #连接文件并打印到标准输出设备上,经常用来显示文件的内容
-n/-number #由1开始对所有输出的行数编号
-b/--number-nonblank #和-n类似,不过对空白行不编号
-s/--squeeze-blank #当遇到有连续两行以上的空白行,就代换为一行的空白行
-A #显示不可打印字符,行尾显示‘$’

less more #用来浏览文字档案的内容,more只能向前浏览
head #显示文件的开头的内容

6、处理文本文件

  1. sort # 排序 sort lines of text files 对文件的数进行排序(默认ASCII表升序排列)
  2. # sort -k 2 -n -r file
  3. cut # 提取列,可以以列(字段)为单位处理数据 cut -f 2,3 file
  4. wc # 计数
  5. grep # 筛选
  6. uniq # 去冗余
  7. awk # 切割
  8. tr,sed # 替换
  9. cat,paste # 合并,补齐
  10. echo #打印字符

7、文件目录权限修改

owner(u) group(g) other(o)
chgrp # 改变文件或目录所属的用户组
chown # 改变某个文件或目录的所有者和所属的组
chmod # 变更文件或目录的权限
-R #递归
image.png

8、管道和输出重定向

>,1> # 标准输出重定向
>> # 追加输出
2> # 标准错误重定向
2 >& 1 # 同时重定向stdout和stderr
| # 管道,将前一个命令的stdout作为输入给后面一个命令

9、压缩 解压缩

tar # 只打包,不压缩
zip/gzip/bzip2 # 压缩zip/gz/bz2

10、shell执行多个命令

1、命令行间隔开
各命令的执行结构,不会影响其他命令的执行。即,各个命令都会执行,但不保证每个命令都会执行成功
2、命令行间**&&**隔开
若前面的命令执行成功,才会去执行后面的命令。即,可以保证所有的命令执行完毕后,执行过程都是成功的
3、命令行**||**隔开
||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止

11、避免过长时间占用命令行交互界面

待补充