linux 日常积累

linux 日常积累


目录结构

目录意义
/根目录
|
|-boot/启动文件,所有与系统有关的文件都保存在这里
|grub/Grub 引导器相关的文件
|
|-dev/设备文件
|-proc/内核与进程镜像
|
|mnt/临时挂载
media/挂载媒体设备
|
root/root用户 的 $HOME 目录
|-home/
| |-user/普通用户 的 $HOME 目录
| …/
|
|-bin/系统程序
|-abin/管理员系统程序
|-lib/刺痛程序库文件
|-etc/系统程序和大部分应用程序的全局配置文件
| |-init.d/SystemV 风格的启动脚本
| |-rcX.d/SystemV 启动脚本的链接,定义运行级别
| |-rc.d/BSD 风格的启动脚本
| |-rc.xxxBSD 风格启动脚本,定义运行级别
| |-network/网络配置文件
| |-X11/图形界面配置文件
|
|-usr/
| |-bin/应用程序
| |-abin/管理员应用程序
| |-lib/应用程序库文件
| |-share/应用程序资源文件
| |-src/应用程序源代码
| |-local/
| | |-soft/用户程序
| | …/通常使用单独文件夹
| |-X11R6/图形界面系统
|
|-var/动态数据
|
|-temp/临时文件

路径

绝对路径

绝对路径的起始点为根目录/, 例如/usr/bin/cp就是一个绝对路径。

相对路径

相对路径的起始点为当前路径… 假如用户当前目录为/home/zhengdongqi/,那么同样的文件cp,其实对路径为 …/…/usr/bin/cp。

相对路径和绝对路径在使用上各有差异,在使用时需要考虑实际的情况选择。

远程路径

在很多时候,我们会需要访问本机之外的资源,这个时候远程路径就有了用武之地了。

远程路径的一般表示方法为:协议://用户名:密码@位置/路径:端口

远程路径根据应用的不同,具体表示方法和所需要的参数都不太一致,从以上两个远程就可以看出。

软件

在Linux中, 软件并没有像注册表这样的概念

注册表:是window中的一个重要的数据库,用于存储系统应用程序的设置信息。

安装软件,理论上只需要拷贝相关文件,并执行其主程序就可以

通常,一个软件包含的内容会分别被拷贝到同级别的bin lib share 和/etc目录下

bin 存放程序的可执行文件,在系统环境变量中将改路径添加进去,就可以直接执行程序

lib 库文件集中存放,方便共享

share 存放程序需要的其它资源

/etc 配置文件存放路径,大部分的程序配置文件都可以在这个路径下找到。

配置方式

在Linux中,所有的配置操作都可以使用纯文本的配置文件来配置,为了方便使用,有很多程序都会提供命令接口供用户更加便捷来个性化的配置自己的系统。

/etc 基本上都是配置文件 

当然也可以直接用ifconfig命令来直接修改网络配置

ifconfig etch 172.17.211.123

这条命令把设备eth0 的地址更新

隐藏文件

..  表示家目录
.   表示此目录

配置文件

  • 系统初始化
/etc/inittab运行级别、控制台数量
/etc/timezone时区
/etc/inetd.conf超级进程
  • 文件系统
/etc/fstab开机时挂载的文件系统
/etc/mtab当前挂载的文件系统
  • 用户系统
/etc/passwd用户信息
/etc/shadow用户密码
/etc/group群组信息
/etc/gshadow群组密码
/etc/sudoersSudoer 列表
  • shell
/etc/shell可用于shell列表
/etc/inputrcReadline控件设定
/etc/profile用户首选项
/etc/bashrcbash 配置文件
  • 系统环境
/etc/environment环境变量
/etc/updatedb.conf文件检索数据库配置信息
/etc/issue发行信息
/etc/issue.net
/etc/screenrc屏幕设定
  • 网络
/etc/iftab网卡MAC地址绑定
/etc/hosts主机列表
/etc/hostname主机名
/etc/resolv.conf域名解析服务器地址
/etc/network/interfaces网卡配置文件
  • 用户配置文件
.bash_rc
.bash_profile
.bash_logout

文件类型

使用ll命令可以查看当前路径下所有文件的详细信息

该命令主要输出了七列内容,分别为:权限,文件数,所属用户,所属群组,文件大小,常见日期,文件名。

第一列权限,主要可以分为以下四个部分:文件类型,所属用户权限,所属组权限,其它用户权限。

以刚才执行的结果为例

文件类型所属用户权限所属群组权限其它用户权限
drwxr-xr-x
  • 第一部分文件类型 d,代表这个文件是一个目录(directory),目录是一种特殊文件;
  • 第二部分所属用户权限为 rwx, 代表该文件拥有者拥有可读(read), 可写(write),可执行(execute)的权限;
  • 第三部分所属组权限为r-x,代表该文件拥有者在一个群组的用户具有可读,可执行的权限,在这里-顶替了w的位置,代表没有写权限;
  • 第四部分其它用户权限同样为可读,可执行。

Linux中的文件类型出来目录d之外,总共有7种文件类型,在这里我们做一个简要的了解;

  • regular file 普通文件
  • d directory 目录
  • l link 链接
  • b block 块设备 存储数据以供系统存取的接口设备,也就是硬盘
  • c character 字符设备 串口设备, 键盘, 鼠标等
  • s socket 套接字
  • p pipe 管道

对于普通文件又可以分为以下三种:

纯文本文件

纯文本文件使用ASCII编码,这是Linux系统中最常见的一种文件类型,之所以成为纯文本文件,是因为这种类型的文件是我们可以直接读取的的内容,在Linux,几乎所有的配置文件都属于这种类型的。

二进制文件

二进制文件是系统中的可执行文件(不包括脚本),计算机只能认识并执行二进制文件,二进制文件不能使用 cat 等命令直接读出。

数据格式的文件

在一些程序运行过程中,需要读取待定格式的文件,这种文件被称为数据文件(data.file),这种文件通常也不能使用cat命令读出。但是可以使用last读取其中命令。

文件权限

在上节中我们已经提到了文件的权限包含3组(u 用户,g 群组, o 其它用户),每一组又包含三组具体的权限(r 读,w 写, x执行)。

对于文件权限,我们也可以用以下的方式来表示:

rwxrwxrwx
(2^2)4(2^1)2(2^0)1(2^2)4(2^1)2(2^0)1(2^2)4(2^1)2(2^0)1

也就是权限的每一组都由3个十进制的数字表示,该组的权限就可以简单的用着3个十进制的数字相加得到。

一个权限为 rwxr-xr-x 的文件下,则它的权限可以使用755来表示。

与文件权限有关的命令

chmod # 更改文件权限
chown # 更改文件所属用户
chgrp # 更改文件所属组

chmod 的用法

chmod a+x file # 给file文件都赋予执行的权限
chmod o-x file # 将file文件o减去执行权限
chmod 755 file # 设置file文件的权限为 rwxr-xr-x
chmod u=rwx, go=rx file # 设置file文件的权限为 rwxr-xr-x

chown 的用法

chown zhengdongqi:haizei file # 修改file的所属用户是zhengdongqi,所属组为haizei
chown -R zhengdongqi:haizei directory # 修改目录directory及目录下的所有文件的所属用户是zhengdongqi,所属组为haizei
chown zhengdongqi file # 修改file的所属用户为zhengdongqi

chgrp 的用法

chgrp root file # 修改file所属的组为root

用户权限

Linux有两种用户,分别是 root 和普通用户

  • 超级管理员:root

root 拥有系统的完全控制权,所以在使用Linux系统的时候,需要慎重使用root用户,更多的自由与权限同样也意味着更大的风险

实际上,有很多Linux系统在默认的情况下是不开放root用户的,这是出于安全方面的考虑。

  • 普通用户

普通用户拥有的权限就没有 root 用户那么大了,他只能做系统允许做的事,普通用户可以执行大部分的命令,但是root专有的命令却执行不了。

大小端模式

大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

这两种模式,泥瓦匠记忆宫殿:“小端低低”。这样就知道小端的模式,反之大端的模式

Linux帮助系统

在学习使用Linux的时候, 我们会遇到很多以前没有用过的命令和功能,这个时候最好的解决办法就是求助于man。

man 的使用方法很简单,例如查看 ls 的帮助手册,可以直接使用命令 man ls 即可产看 ls 的命令帮助。

代号代表的含义举例
1用户在shell环境下可以操作的命令或可执行文件man 1 ls
2系统内核可调用的函数和工具man 2 reboot
3一些常用函数与函数库,大部分C的函数库man 3 readdir
4设备文件的说明,通常是在 /dec 下的设备man 4 null
5配置文件或者某些文件的格式man 5 interfaces
6游戏man 6 lol
7惯例与协议等,例如Linux文件系统,网络协议等man 7 tcp
8系统管理员可用的命令man 8 reboot
9跟kernel有关的文件
o旧文档
n新文档
I本地文档

在man手册中,我们可以用到的快捷键如下:

快捷键功能快捷键功能
Ctrl+f (forward)向下翻一页Ctrl+d (down)向下翻半页
Ctrl+b(backward)向上翻一页Ctrl+u (up)向上翻半页
/查找q (quit)退出

bash通配符

通配符

  • 代表单个任意字符

    代表任意几个任意字符

除了*和?这两个通配符之外,Linux中还有下面几种通配符

通配符含义举例
[list]匹配list中任意单一字符a[xyz]b a与b之间有且只有一个字符,且只能是x或y或z,如:axb,ayb,azb。
[!list]匹配除list中的任意单一字符a[!0-9]b a与b之间有且只有一个字符,但不能是数字,如axb,aab,a-b等
[c1-c2]匹配c1-c2中的任意单一字符a[0-9]b a与b之间有且只有一个字符,该字符是0-9之间的数字, 如a0b, a1b, …, a9b。
{string1,string2,…}匹配string1或string2(或更多)其一字符串a {abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之一。

任务管理

  1. &

    在命令的后面加上 & 表示后台执行的意思

    command &
    
  2. ;

    在命令之间以 ;连接,表示顺序执行的意思

    command1;command2
    
  3. &&

    命令之间以 && 相连时,只有第一个命令成功执行,第二个命令才会执行。

    command1 && command2
    
  4. ||

    命令之间以 || 相连时, 如果前一个命令执行失败,则执行第二个命令

    command1 || command2
    
  5. ``

    命令中如果包含另一个命令,则用符号将它包括起来,在执行的时候系统将优先执行中的子命令,然后将其结果代入父命令继续执行。

    command1 `command2`
    
  6. ctrl + z

    在shell中执行命令时,同时按下ctrl + z可以将其暂时挂起

  7. bg

    执行bg命令,可以将挂起的命令后台运行

  8. fg

    执行命令fg可以将后台执行的命令转为前台执行

  9. jobs

    在Linux系统中,执行jobs命令可以查看所有在后台执行和挂起的任务以及任务编号

  10. pkill +命令名字

    杀掉进程

管道-重定向

在这里插入图片描述

转义符

在Linux中转义符’'的应用十分广泛,除此之外,转义符还包括""和\

字符说明
‘’硬转义,硬引用,其内部所有的shell元字符,通配符都会被关掉。注意,硬转义中不允许出现‘(单引号)。
“”软转义,软引用,其内部只允许出现特定的shell元字符($,',) $ 用与变量值替换,'用于命令替换,\用于转义单个字符
\反斜杠,转义,去掉其后紧跟的元字符或通配符的特殊意义

下表时对应转义字符对应表

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS),将当前位置移到前一列008
\f换页(FF),将当前位置移到下一行开头012
\n换行(LF),将当前位置移到下一行开头010
\r回车(CR),就爱过你当前位置移到本行开头013
\t水平制表(HT),(跳到下一个TAB位置)009
\v垂直制表(VT)011
\代表一个反斜线字符092
代表一个单引号字符039
"代表一个双引号字符034
?代表一个问号063
\0空字符(NULL)000
\nnn1到3位八进制数多代表的任意字符三位八进制
\xnnn1到3位十六进制多代表的任意字符三位十六进制

shell元字符

字符说明
=变量名=值,为变量赋值。注意=左右紧跟变量名和值,中间不能有空格。
‘’取命令的执行结果,与下文的$有相似之处
$变量名替换,$变量名替换为shell变量的值;为避免在文本连接时混淆,请使用 $(变量名);$0… 9 代表 s h e l l 文件的参数。 9代表shell文件的参数。 9代表shell文件的参数。()同’'; 限定变量名的范围; {}限定变量名的范围; 限定变量名的范围;[]整数计算
>prog > file 将标准输出重定向到文件
>>prog >> file 将标准输出追加到文件
<prog < file 从文件file中获取标准输入
<<
|管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输入
&后台运行命令,最大好处是无需等待命令执行结束,就可以在同一命令下继续输入命令
()在子shell中执行命令,在子进程中执行
{}在当前shell中执行命令,活用在变量替换的界定范围(例如上面的$(变量名)用法)。
[]字符通配,匹配括号内之一
命令结束符,例如p1;p2表示先执行p1,再执行p2
&&前一个命令执行完之后,才继续执行下一个命令。例:p1&&p2;若p1执行成功后,才执行p2反之,不执行p2;
||前一个命令执行失败后,才继续执行下一个命令。例:p1||p2;若p1执行成功后,不执行p2,反之, 才执行p2。
执行历史记录中的命令!731;匹配最近的一次命令!echo;取非 ls /dev/sda[!1]; 结果取反!echo ok; echo $?
%%1 相当于 fg 1
^取非,和!雷同;string1string2^将上一命令string1替换为string2
~home目录
#注释
*通配符,任意字符
?通配符,任一字符
.当前目录;source
-减号;上次工作目录
真值;空命令
\转义

系统信息

cat /proc/meminfo |grep MemTotal    # 内存信息
cat /proc/cpuinfo                   # cpu信息
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
cat /proc/cpuinfo | grep 'cores' |uniq

机器信息

# 查看物理CPU个数
cat /proc/cpuinfo | grep "physical id" | sort | uniq
# 查看每个物理CPU核数
cat /proc/cpuinfo | grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU型号
cat /proc/cpuinfo | grep name | sort | uniq

查询磁盘使用量

du -ah --max-depth=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值