Linux 基础问题
1.su、su-与sudo之间的区别
su
Note:
- sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
- su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
- su - root 输入root密码后切换之root用户但是pwd目录/root
tips:
- sudo -i 直接运行sudo命令加-i参数 要求执行该命令的用户必须在sudoers中才可以
- sudo su 运行sudo命令给su命令提权,运行su命令。 要求执行该命令的用户必须在sudoers中才可以
- sudo -i 运行结果 PWD=/root
- sudo su 运行结果 PWD=/home/用户名(当前用户主目录)
2.目录文件权限格式
更改文件可读可写可执行权限时用chmod指令
命令:
chmod 777 1.c
格式:
chmod 权限数字 文件名
node
可读 r read 4
可写 w write 2
执行操作权限 x execute 1
之所以是3位数字是因为分别对应【owner权限】 【group权限】 【others权限】
修改权限简介
在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
-- ------------0
3.vim使用命令
① vim三种状态:
命令行模式、插入模式和底行模式。其中点击esc可进入命令行模式
② 基本命令:
在命令行模式下,按一下:冒号键进入底行模式,例如:
: w filename (输入w filename将文章以指定的文件名filename保存)
: wq (输入wq,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
③ 输入及删除命令:
按「i」切换进入插入模式,按"i"进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
「x」:每按一次,删除光标所在位置的"后面"一个字符。
「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行
4.管道
管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:
-
其本质是一个伪文件(实为内核缓冲区)
-
由两个文件描述符引用,一个表示读端,一个表示写端。
-
规定数据从管道的写端流入管道,从读端流出。
管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。
管道的局限性:
① 数据自己读不能自己写。
② 数据一旦被读走,便不在管道中存在,不可反复读取。
③ 由于管道采用半双工通信方式。因此,数据只能在一个方向上流动。
④ 只能在有公共祖先的进程间使用管道。
在命令行中用到的为匿名管道
1| ls -al /etc | less
通过管道将ls -al的输出作为 下一个命令less的输入,方便浏览。
选取命令: cut 、grep
排序命令:sort、wc、uniq
双向重定向命令:tee(在数据流的处理过程中将某段信息保存下来,使其既能输出到屏幕又能保存到某一个文件中。)
字符转换命令:tr,col,join,paste,expand