Linux
UNIX/Linux 本身是没有图形界面的,我们通常在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件。通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,并且为了能在一个窗口中完成用户输入和显示输出,提供了一个叫做终端模拟器的程序(Terminal),实现了终端的桌面环境有多个。
Terminal和Console(控制台)是有区别的,Linux 默认提供了 6 个纯命令行界面的 “terminal”,可以通过使用[Ctrl]
+[Alt]
+[F1]~[F6]
进行切换,按下[Ctrl]
+[Alt]
+[F7]切回图形界面。
Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)。普通意义上的 Shell 就是可以接受用户输入命令的程序。Shell 既是用户交互的界面,也是控制系统的脚本语言。
Ubuntu 终端默认使用的Shell类型是 bash,默认的桌面环境是 GNOME 或者 Unity。
Linux命令行输入查看命令后会输出内容,如果只是执行不会有输出,错了才会显示错在哪。
基本命令
几个十分有用、必需掌握的小技巧:
Tab键来进行补全命令,补全目录、补全命令参数,当忘记的时候可以只输入开头按下Tab就可以得到提示帮助补全。
Ctrl+c强制终止当前不可控程序恢复可控状态。
↑↓
恢复之前输入过的命令
其他一些常用快捷键:
按键 | 作用 |
---|---|
Ctrl+d |
键盘输入结束或退出终端 |
Ctrl+s |
暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z |
将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a |
将光标移至输入行头,相当于Home 键 |
Ctrl+e |
将光标移至输入行末,相当于End 键 |
Ctrl+k |
删除从光标所在位置到行末 |
Alt+Backspace |
向前删除一个单词 |
Shift+PgUp |
将终端显示向上滚动 |
Shift+PgDn |
将终端显示向下滚动 |
通配符主要有星号(*)和问号(?),用来对字符串进行模糊匹配,只能出现在参数值里,命令还是用Tab补全,查找文件用。
$ touch love_{1..10}_linux.txt创建“love_1_linux.txt,love_2_linux.txt,... love_10_linux.txt”多个文件
Shell 常用通配符:
字符 | 含义 |
---|---|
* |
匹配 0 或多个字符 |
? |
匹配任意一个字符 |
[list] |
匹配 list 中的任意单一字符 |
[!list] |
匹配 除list 中的任意单一字符以外的字符 |
[c1-c2] |
匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} |
匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} |
匹配 c1-c2 中全部字符 如{1..10} |
man 命令调用在线文档手册页寻求帮助(通常英文),man 命令名 查看介绍,按q退出
--help知道命令作用查看某个参数作用 命令名 --help
用户
查看用户信息
Linux 是一个可以实现多用户登陆的操作系统,他们共享一些主机的资源,但也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。
who i am查看当前登陆用户名和伪终端名,whoiam只查看当前用户名
who
命令其它常用参数:
参数 | 说明 |
---|---|
-a |
打印能打印的全部 |
-d |
打印死掉的进程 |
-m |
同am i ,mom likes |
-q |
打印当前登录用户数及用户名 |
-u |
打印当前登录用户登录信息 |
-r |
打印运行等级 |
创建用户
在 Linux 系统里, root
账户拥有整个系统至高无上的权利,比如 新建/添加 用户。所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限。
su user可以切换到用户 user,不过要输入密码。
sudo 命令以特级权限运行命令,需要用户属于sudo 组且输入密码
#创建一个用户 $ sudo adduser lindaman #linux下输入密码不显示 #使用刚创建胡账户登陆,并输入刚设置胡密码 $ su -l lindaman #退出用户 Ctrl+d
添加用户组
Linux 里面每个用户都有一个归属(用户组),它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,你的兄弟姐妹(不同的用户)属于同一个家(用户组),你们可以共同拥有这个家(共享资源),爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。
groups 用户名 查看用户属于哪个用户组,每次新建用户如果不指定用户组的话,就会默认自动创建一个与用户名相同的用户组
usermod 可以为用户添加用户组,使用时需要root权限
#用 lindaman 用户执行 sudo 命令将 lilei 添加到 sudo 用户组拥有root $ su lindaman $ groups lilei $ sudo usermod -G sudo lilei $ groups lilei #显示的lilei就在sudo用户组中了
删除用户
$ sudo deluser lilei --remove-home
文件权限
查看文件权限
ls -l
Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev
目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket
:网络套接字,。pipe
管道,这个东西很重要。软链接文件
:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,而软链接等同于 Windows 上的快捷方式)。
cat 文件名 读取文件内容,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件
ls 一些其它常用的用法:
ls -A 显示除了 .
(当前目录)和 ..
(上一级目录)之外的所有文件,包括隐藏文件
ls -dl 目录名 查看某一个目录的完整属性
ls -AsSh 显示所有文件大小,小 s 为显示文件大小,大 S 为按文件大小排序,也可按其他方式排序
变更文件所有者
假设目前是 lindaman 用户登录,新建一个文件,命名为 “ iphone6 ”:
$ touch iphone6 $ ls -l #查看文件权限所有者是Lindaman $ su lilei #切换到lilei用户 #使用以下命令变更文件所有者为 lilei $ cd /home/lidaman $ ls iphone6 $ sudo chown lilei iphone6 #现在查看文件所有者是lilei
修改文件权限
如果有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:
1.二进制数字表示
每个文件的三组权限(拥有者,所属用户组,其他用户)对应一个 " rwx ",也就是一个 “ 7 ”
所以如果要将文件“ iphone6 ”的权限改为只有我自己可以用那么就这样:
$ chmod 700 iphone6
2.加减赋值操作
$ chmod go-rw iphone6
g
、o
还有 u
分别表示 group、others 和 user,+
和 -
分别表示增加和去掉相应的权限。
adduser
和 useradd
的区别?
答:useradd 只创建用户,创建完了用 passwd lindaman去设置新用户的密码。adduser 会引导创建用户,创建目录,创建密码一系列的操作。useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
有趣的命令
banner输出图形字符
#安装 $ sudo apt-get update $ sudo apt-get install sysvbanner #命令 $ banner lindaman