LINUX基础知识
来源:互联网 发布:主机一定有域名吗 编辑:程序博客网 时间:2024/06/14 04:33
Linux学习基础知识札记
目录
1. 系统基本命令操作 2
1.1. 简单操作命令 2
1.2. 重要的热键 2
1.3. Man Page 2
1.4. 超简单文本编辑器:nano 3
1.5. 正确的关机方法 3
1.6. 忘记root密码 3
2. Linux文件权限与目录配置 3
2.1. 文件属性 3
2.2. 目录与文件的权限意义 4
2.3. Linux目录配置 4
2.3.1. /usr目录 4
2.4. Linux文件与目录管理 4
2.4.1. 目录与路径 4
2.4.2. 文件与目录管理 5
2.4.3. 文件内容查阅 6
2.4.4. 文件与目录的默认权限与隐藏权限 7
3. Linux账号管理 8
4. 而后居委会 8
5. 软件安装 8
5.1. 编译问题 8
5.2. 用make进行宏编译 8
5.2.1. Makefile的基本语法与变量 8
1. 系统基本命令操作
1.1. 简单操作命令
u 显示日期与时间的命令:date;
u 显示日历的命令:cal;
u 简单好用的计算器:bc;(quit退出计算器)
1.2. 重要的热键
u 【Tab】按键:“命令补全”及“文件补全”功能;
【Tab】接在一串命令的第一个命令的后面,则为“命令补全”;
【Tab】接在一串命令的第二个命令以后,则为“文件补全”。
u 【ctrl】+ c:中断目前程序。(比如,如果是正在编译某一个软件程序,此处按此组合键,便可中断编译过程!)
u 【ctrl】+ d:键盘输入结束。(直接离开文字输入界面!)
1.3. Man Page
1.4. 超简单文本编辑器:nano
u 命令:nano + 文件名称(可以是旧文本文件,也可以是新文件名称)
常见的“^”:表示【ctrl】的意思。
1.5. 正确的关机方法
u 查看网络的联机状态命令:netstat -a;
u 查看后来执行的程序命令:ps -aux;
u 将数据同步写入硬盘中的命令:sync;
u 惯用的关机命令:shutdown;
u 重启、关机:reboot, halt, poweroff。
1.6. 忘记root密码
2. Linux文件权限与目录配置
2.1. 文件属性
u ls -al :”list”所有的文件详细的权限与属性;
-rw-r--r--1 root root42304 sep 4 18:26 install.log
文件权限 连接数文件所有者文件所属用户组 文件大小文件最后被修改的时间文件名
其中文件权限分为:rw-(文件所有者的权限)r--(同用户组的权限)r--(其他非本用户组的权限)
第一个字符“-”代表这个文件:
1) 目录【d】;
2) 文件【-】;
3) 链接文件【l】;
4) 设备文件里面的可供存储的接口设备【b】;
5) 设备文件里面的串行端口设备【c】;
u 如果文件名之前多一个“.”,则代表这个文件为“隐藏文件”。
u 改变文件所属用户组:chgrp;
改变文件所属用户组的前提是:被改变的组名必需在/etc/group文件内存中,否则修改错误。
① chgrg [-R] 文件目录 ...: -R进行递归的持续更改,连同目录下的所有文件、目录;
② chgrg users install.log : 将install.log的所属用户组修改为“users”;
u 改变文件所有者:chown;
u 改变文件的权限:chmod;
r:4 w:2 x:1
chmod 777 install.log :将intall.log的三组权限全部改为rwx。
或者
chmod u=rwx,go=r,o=rx install.log :u——文件所有者go——文件所属用户组 o——其他非本用户组
u 复制文件:cp 源文件目标文件;(复制行为会复制执行者的属性与权限!)
2.2. 目录与文件的权限意义
u 能不能进入某一个目录,只与该目录的x权限有关;如果你拥有r权限但是不具备x权限是无法切换到该目录下,也就是无法执行该目录下的任何命令。
u 新建目录:makdir 目录(makdir testing);
u 新建空的文件:touch testing/testing;
u 切换身份:su - 用户名;
u 删除文件:rm 文件名;
2.3. Linux目录配置
u /etc :配置文件(该目录下的各文件属性是可以让一般用户查阅的,但是只有root有权利修改!)
u /usr :软件放置处
u /opt :第三方软件
u /boot : 开机与内核文件
u /var ——与系统运行过程有关 /var/mail ——用户邮件信箱 /var/run ——程序相关
/var/spool/news ——新闻组 /var/lock ——程序相关
u /dev ——任何设备与接口设备都是以文件的形式存在于该目录下
u /home ——系统默认的用户主文件(~:代表目前这个用户的主文件夹)
u /media ——“媒体”
u /mnt ——“用于挂载某些额外的设备”
u /sbin——“用来设置系统环境,里面包含了开机、修复、还原系统所需要的命令”
u /srv ——“网络服务启动之后,服务所需要取用的数据目录”
u /tmp ——“让一般用户或者正在执行的程序暂时放置文件的地方”
u /proc 、/sys ——“虚拟文件系统,不占有硬件物理内存”
u /bin ——“重要执行文件”
u /lib ——“执行文件所需的函数库与内核所需的模块”
2.3.1. /usr目录
ü /usr/local/:系统管理员在本机自行安装下载的软件(非distribution默认提供者),建议安装在此目录下。
ü /usr/src/:一般源码建议放置在这里,而内核源码则建议放置到/usr/src/linux/目录下。
2.4. Linux文件与目录管理
2.4.1. 目录与路径
u 写程序来管理系统的条件下,务必使用“绝对路径”的写法。
u 特殊目录:
① . 代表此层目录;
② .. 代表上一层目录;
③ - 代表前一个工作目录;
④ ~ 代表“目录用户身份”所在的主文件夹;
⑤ ~account 代表account这个用户的主文件夹(account是个账号名称)。
u 目录的相关操作:
① cd:切换目录;
② pwd:显示当前目录;
ü pwd 【-P】: -P参数,会不以连接文件的数据显示,而是显示正确的完成路径。
③ mkdir:新建一个新的目录;
ü -m:配置文件案的权限,直接设置,而不需要看默认权限;
ü -p: 帮助你直接将所需要的目录(包括上层目录)递归创建起来。(不建议使用该参数,因为如果在迭代创建目录时,即使某目录已经存在,系统也不会显示错误信息出来,会造成目录乱七八糟!)
④ rmdir:删除一个空的目录(rmdir仅能删除空的目录);
ü -p:连同上层“空的”目录也一起删除;
u 执行文件路径的变量:$PATH。
① echo $PATH :
ü echo : “显示、打印出”的意思
ü PATH前面加的$表示后面接的是“变量”。
2.4.2. 文件与目录管理
2.4.2.1. ls相关命令
u ls 【-aAdfhilnrRSt】目录名称
① -a:全部的文件,连同隐藏文件(开头位.的文件)一起列出来;
② -d:仅列出目录本身,而不是列出目录内的文件数据;
③ -l:列出长数据串,包含文件的属性与权限等数据。
u ls 【--color={never,auto,always}】目录名称
① nerver:不要依据文件特性给予颜色显示;
② always:显示颜色;
③ auto:让系统自行依据设置来判断是否给予颜色。
u ls 【--full-time】目录名称
① --full-time:以完成时间模式(包括年、月、日、时、分、秒)输出
② --time={atime,ctime}:输出访问时间或改变权限属性时间(ctime);而非内容更改时间。
2.4.2.2. cp相关命令
u cp 【-adfilprsu】源文件 目标文件
① -a:相当于-pdr的意思;
② -i:若目标文件已经存在时,在覆盖时会先询问操作的进行;
③ -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
④ -r:递归持续复制,用于目录的复制行为。
u cp 【属性】源文件1源文件2源文件3 ...目标目录
① 如果源文件有两个以上,则最后一个目的文件一定要是“目录”。
2.4.2.3. rm相关命令(移除文件或目录)
u rm 【-fir】文件或目录
① -f:force的意思,忽略不存在的文件,不出现警告信息;
② -i:互动模式,在删除前会询问用户是否操作;
③ -r:递归删除。最常用在目录的删除。(这是非常危险的参数)。
u touch ./文件名:这个命令可以创建空文件。
2.4.2.4. mv相关命令(移动文件与目录,或更名)
u mv 【-fiu】源文件 目标文件夹
① -f:强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
② -i:若目标文件已经存在时,就会询问是否覆盖;
③ -u:若目标文件已经存在,且“源文件”比较新,才会更新。
u mv mvtest mvtest2:将目录名mvtest重命名为mvtest2。(rename命令也是可以重命名的,但是该命令是专门进行多个文件名的同时重命名,并非对单一文件名的梗概,与mv不同。)
u mv 源文件1(文件或目录) 源文件2(文件或目录) 目标文件(此处一定要是目录)。
2.4.2.5. 取得路径的文件名与目录名称
u basename /etc/sysconfig/network ==>> network :(basename获取路径中的文件名);
u dirname /etc/sysconfig/network ==>> /etc/sysconfig:(dirname获取路径中的目录名)。
2.4.3. 文件内容查阅
2.4.3.1. 直接查看文件内容
u cat 【-AbEnTv】:(concatenate)
① -A:相当于-vET的整合参数,可列出一些特殊字符,而不是空白而已;
② -b:列出行号,仅针对非空白行做行号显示,空白行不标行号;
③ -n:打印出行号,连同空白行也会有行号,与-b参数不同;
④ -T:将【Tab】按键以^I显示出来;
⑤ -v:列出一些看不出来的特殊字符。
u tac 命令是和“cat”命令显示文本的顺序是相反的。
u nl 【-bnw】文件
① -b:指定行号指定的方式;
ü -b a:表示不论是否为空行,也同样列出行号;
ü -b t:如果有空行,空的那一行不列出行号。
② -n:列出行号表示的方法,主要有方式:
ü -n ln:行号在屏幕的最左方,且不加0;
ü -n rn:行号在自己字段的最右方显示,且不加0;
ü -n rz:行号在自己字段的最右方显示,且加0。
③ -w:行号字段占用的位数。
nl -b a -n rz -w 3 /etc/issue:表示打开该“/etc/issue”文件时,所有行(包含空行)显示行号,并且行号在自己字段的最右方显示,行号具有3位。
u more :(一页一页翻动查看文件内容,但是只能往后翻,不可往前翻);
u less:(一页一页翻动查看文件内容,可以前后翻)。
u head 【-n number】文件
默认情况下,没有-n参数的时候,是显示文件内容中的前10行。
u tail 【-n number】文件
默认情况下,没有-n参数的时候,是显示文件内容中的前10行。
u od 【-t type】文件:(读取二进制文件)
① -t a:利用默认的字符来输出;
② -t c:使用ASCII字符输出;
③ -t d[size]:利用十进制来输出数据,每个整数占用size bytes;
④ -t f[size]:浮点数输出数据;
⑤ -t o[size]:八进制输出数据;
⑥ -t x[size]:十六进制输出数据。
2.4.3.2. 修改文件时间或创建新文件
u Linux系统下的三种时间记录参数的不同意义:
① Modefilecation time (mtime):当文件的“内容数据”更改时,就会更新这个时间。内容数据更改是指文件的内容,而不是文件的属性和权限。
② Status time(ctime):当文件的“状态”改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间。
③ Access time(atime):当“该文件的内容被取用”时,就会更新这个读取时间。
u touch 【-acdmt】文件
① -a :仅修改访问时间;
② -c:仅修改文件的时间,若该文件不存在则不新建文件;
③ -d:后面可以接欲修改的日期而不用目前的日期,也可以使用--date=”日期或时间”;
④ -m:仅修改mtime;
⑤ -t:后面可以接欲修改的日期而不用目前日期,格式为【YYMMDDhhmm】。
2.4.4. 文件与目录的默认权限与隐藏权限
2.4.4.1. 文件默认权限:umask
u 目前用户在新建文件或目录时候的权限默认值由“umask”控制。
u 得知umask:
① umask;==>> 0002(只需要看后面三位数字即可,该分数指的是“该默认值需要减掉的权限”)
② umask -S; ==>>u=rwx,g=rwx,o=rx (与上面的分数是一致的,一样的含义。)
u 修改umask的值的命令:umask 002。(只需在后面加上去掉的分数便可!)
u 一般默认权限情况:
① “文件”默认权限:-rw-rw-rw-;(一般默认设置为无执行(x)权限)
② “目录”默认权限:drwxrwxrwx。(若用户新建“目录”,则由于“x”与是否可以进入此目录有关,因此默认为所有权限均开放。)
u 如此综合来说,如果默认umask == 0002:
① 新建文件时,在默认权限的基础之上,去掉other的“w”权限,则最终生成的文件的权限应该是:-rw-rw-rw-减去(--------w-)==> -rw-rw-r--;
② 新建目录时,则是drwxrwx减去(d-------w-) ==> drwxrwxr-x。
3. Linux账号管理
4. 而后居委会
5. 软件安装
5.1. 编译问题
u Linux默认是讲函数库放置在/lib与/usr/lib当中,如果在编译的时候,即使没有添加-L/lib和-L/usr/lib也是没有关系的。如果你需要的链接函数库并非放置在以上两个目录下,那么-L/path是非常重要的。
u -I/...的默认路径是/usr/include。
u Gcc或者g++编译的时候:-I/接include的路径;-L/接lib的路径。
5.2. 用make进行宏编译
5.2.1. Makefile的基本语法与变量
5.2.1.1. 基本语法
u 建立生成执行文件目标:
目标(target):目标文件1 目标文件2
<tab> gcc -o 欲新建的可执行文件 目标文件1目标文件2
u 清除原本所有的目标与可执行文件:
clean(目标):
<tab> rm -f main mian.o haha.o sin_value.o cos_value.o
5.2.1.2. 变量
Makefile格式:
/**********************************
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
main: ${OBJS}
<tab>gcc -o main ${OBJS} ${LIBS}
clean:
<tab>rm -f main ${OBJS}
***********************************/
u 变量的基本语法:
① 变量与变量内容以“=”隔开,同时两边可以具有空格;
② 变量左边不可以有<tab>,例如上面范例的第一行LIBS左边不可以有<tab>;
③ 变量与变量内容在“=”两边不能具有“:”;
④ 在习惯上,变量最好是以“大写字母”为主;
⑤ 运用变量时,以${变量}或$(变量)使用。
⑥ 在该shell的环境变量时可以被套用的,例如提到的GFLAGS这个变量;(不太明白意思)
⑦ 在命令行模式也可以定义变量。
u 环境变量取用的规则:
① Make命令行后面加上的环境变量为第一优先;
② Makefile里面指定的环境变量第二优先;
③ Shell原本具有的环境变量第三优先。
u $@:代表目前的目标
例如:
main:${OBJS}
<tab>gcc -o $@ ${OBJS} ${LIBS} ==>其中$@就是表示“main”。
5.2.1.3. 安装软件的注意事项
u 建议用户自行安装的软件则建议放置在/usr/local里面。
u 如果是源码,则建议放置在/usr/local/src下面。
u Tarball安装软件过程
① 确保解压缩文件到/usr/local/src目录下:
cd /usr/local/src //定位到/usr/local/src
tar -zxvf /root/ntp-4.2.4p7.tar.gz //解压软件到当前目录下
② 进入到解压后的软件文件夹下,检查configure支持参数,并生成makefile规则文件:
cd ntp-4.2.4p7
vi INSTALL
./configure --help|more //用于查询可用的参数有哪些
./configure --prefix=/usr/local/netp --enable-all-clocks --enable-parse-clocks //后面的三个参数是通过查询了上面的help得到的;(此步骤会产生makefile文件)
③ 开始编译与安装:
make clean; make
make check
make install
5.2.1.4. 将动态内存加载到高速缓存中
u 具体步骤:
① 在/etc/ld.so.conf里面写下想要读入高速缓存当中的动态函数库所在的目录,而不是文件。
② 利用ldconfig这个可执行文件将/etc/ld.so.conf的数据读入缓存当中。
③ 同时将数据记录一份在/etc/ld.so.cache这个文件当中。
u 具体操作实例:假设我的MYSQL数据函数库在/usr/lib/mysql当中,如何读入cach??
① vi /etc/ld.so.conf
② 新增“/usr/lib/mysql”
③ ldconfig
④ ??此处的上述步骤第三步步不见了??
u ldconfig 【-f conf】 【-C cache】
① -f conf:那个conf指的是某个文件名,即conf作为library函数库的取得路径,而不以/etc/ld.so.conf为默认值
② -C cahe:那个cache指的是某个文件名,即cache作为缓存暂存的函数库资料,而不以/etc/ld.so.cache为默认值
③ -p:列出目前的所有函数库数据内容(/etc/ld.so.cache内的数据)
u ldconfig 【-p】
5.2.1.5. 动态函数库的解析ldd
u 判断可执行的二进制文件含有什么动态函数库:ldd 【-vdr】文件名
① -v:列出所有内容信息
② -d:重新将数据丢失的link点显示出来!
③ -r:将ELF有关的错误内容显示出来。
5.2.1.6. MD5编码用于查询指纹编码是否被篡改。
6. 软件安装RPM等
6.1. RPM
6.2. DPKG
- Linux基础知识
- Linux基础知识
- Linux 基础知识
- Linux基础知识
- Linux基础知识
- Linux基础知识
- Linux基础知识
- Linux基础知识
- Linux基础知识
- LINUX基础知识
- Linux基础知识
- linux基础知识
- Linux基础知识
- Linux基础知识
- linux基础知识
- Linux基础知识
- LINUX基础知识
- linux基础知识
- js 把函数作为参数传递给另一个方法
- LeetCode笔记:189. Rotate Array
- AS出现Gradle's dependency cache may be corrupt错误的解决办法
- JavaScript学习笔记 CH.2 SEC.3 字符串
- 抓交通肇事逃犯
- LINUX基础知识
- jQuery的function(a){a=a||"text";}表示的意义
- FTP服务器日志解析
- 算法——分类目录
- LeetCode473: Matchsticks to Square
- npm设置下载路径
- 以实例全面讲解PHP中多进程编程的相关函数的使用,php函数
- ESRI公司研发GIS产品集合
- sendRawEth.c