Linux学习笔记一
基础
Linux基础Ctrl相关操作常用按键
按键 | 作用 |
---|---|
Ctrl D | 键盘输入结束或退出终端 |
Ctrl S | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl Z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl a | 将光标移至输入行头,相当于Home键 |
Ctrl e | 将光标移至行末,相当于End键 |
Ctrl k | 删除从光标所在位置到行末 |
Alt Backspace | 向前删除一个词 |
Shift PgUp | 将终端显示向上滚动 |
Shift PgDn | 将终端显示向下滚动 |
Ctrl C | 终止程序运行 |
历史输入命令
使用键盘键盘上的 ↑ 就能恢复之前输入过的命令。
使用通配符
通配符是一种特殊语句,主要由星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名或参数名)。在查找文件夹时,可以使用它来代替一个或多个真正字符;在不知道真正字符或者懒得输入完整名字时,通常可以使用通配符代替一个或多个真正字符。
注
:终端里输入的通配符是由 Shell 处理的,并不是由所涉及的命令语句处理的。
在具体操作时,进入到某个目录中:
1 | cd 目录 |
然后使用touch
命令创建文件,后缀为.txt
1 | touch file1.txt file2.txt |
但假若过了很长时间,已经忘记了这两个文件,现在又想在一大堆文件中找到这两个文件,就可以使用通配符来寻找。
1 | ls *.txt |
不仅如此,在创建文件时也可以使用通配符来批量操作,比如:
1 | touch file_{1..5}.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} |
在命令行中使用帮助
在Linux环境中,使用man
命令,全称为Manual pages
,这是UNIX操作系统中在线软件文档的一种普遍的形式,内容包括计算机程序(包括库和系统调用)、正式的标准和惯例。甚至是抽象的概念。
1 | man <command_name> |
一个有趣的例子
一个可以输出图形字符的命令banner
,具体操作如下:
首先使用如下命令安装:
1 | sudo apt-get update |
用户以及权限管理
Linux是一个可以实现多用户登录的操作系统,多用户可共享一些主机资源,但分别有自己的用户空间,用于存放各自的文件。实际上这些用户的文件都是存放在同一个物理磁盘上甚至是同一个逻辑分区或者目录上的,由于Linux的用户管理和权限机制,不同的用户不可以轻易的查看或修改彼此的文件。
在终端输入命令 :
1 | who am i |
输出的第一列表表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用whoami
),第二列的pts/0
中的pts
表示伪终端,所谓的伪是相对于/dev/tty
设备而言的,第三列则表示当前伪终端的启动时间。
但要注意的是有些环境中使用who am i
或who mom likes
并不会输出任何内容,因为当前的SHELL不是登录时的SHELL,并没有用户与who的stdin相关联,因此不会输出任何内容。只需要在打开一个登录SHELL的终端如Tmux
或者通过ssh
登录到本机,再在新的终端里执行命令。
who
命令其他常用参数
参数 | 含义 |
---|---|
-a | 打印能打印的内容 |
-d | 打印死掉的进程 |
-m | 同am i ,mom likes |
-q | 打印当前登录用户以及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
创建用户
在Linux系统里,root
账户拥有整个系统最高的权限,比如新建和添加用户。
一般登录系统时都是以普通账户的身份登录的,要创建用户需用root
权限,就要用到sudo
命令。前提是:一,要知道当前登录用户的密码;二,当前用户必须在sudo
用户组。
su <user>
: 切换到用户组,输入时需要输入目标用户的密码
sudo <cmd>
: 以特权级别运行cmd命令,需要当前用户属于sudo用户组,且需要输入当前用户的密码
su - <user>
: 命令也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变目标用户所对应的。
操作如下
1 | sudo adduser name |
根据提示来设置用户名密码以及有关操作。而且该命令不但可以添加用户到系统,同时也会默认为新用户在/home目录下创建一个工作目录:
1 | ls /home |
该命令可以查看到当前用户状态,现在已经创建好一个用户,并且可以使用创建的用户登录,使用以下命令来切换登录用户:
1 | su -l name |
按照提示输入密码即可。
退出当前用户和退出终端一样,可以使用exit
命令或者使用快捷键Ctrl D
。
用户组
在Linux里面每个用户都有一个归属(用户组),用户组简单地理解为就是组用户的集合,共享一些资源和权限,同时拥有私有资源。
使用groups
命令
1 | groups name |
冒号之前表示用户,后面表示该用户所属的用户组。默认情况下载sudo用户组里的可以使用sudo命令获得root权限,用户也可以使用sudo命令,可以查看/etc/sudoers.d/用户名
文件,在/etc/sudoers.d
目录下创建了这个文件,从而给用户赋予了sudo权限。
查看/etc/group
文件
1 | cat /etc/group | sort |
cat
命令用户读取指定文件的内容并打印到终端输出。| sort
表示将读取的文本进行一个字典排序再输出。
不仅如此,还可以使用grep
命令过滤掉一些不想看到的内容。
1 | cat /etc/group | grep -E 'content' |
/etc/group
文件格式说明
该格式的内容包括用户组(group)、用户组口令、GID(组ID)以及该用户组所包含的用户user,每个用户组一条记录。格式如下:
- group_name:password:GID:user_list
讲其他用户加入到sudo用户组
默认情况下创建的用户时不具有root权限的,也不再sudo用户组,可以让其加入到sudo用户组从而获取权限:
1 | su -l name |
此操作后会提示name不在sudoers文件中,意思就是name不在sudo用户组中,使用usermod
命令可以为用户添加用户组,但使用该命令需要有root权限。
可以通过sudo passwd shiyanlou
进行设置,操作如下:
1 | groups name |
这个时候用户name就可以使用sudo获取root权限。
删除用户和用户组
删除用户较为简单,
1 | sudo deluser name --remove-home |
使用--remove-home
参数在删除用户时会一并将该用户的工作目录一并删除。如果不使用则系统会自动在/home
目录为该用户保留工作目录。
1 | sudo deluser name |
删除用户组可以使用groupdel
,命令,若群里包含某些用户,则先删除这些用户后才能删除群组。
文件权限
所谓文件权限就是文件的访问控制权限,即那些用户和群组可以访问文件以及可以执行什么样的操作。
Linux系统是一个典型的多用户系统,不同的用户处于不同的状态,也就有不同的访问权限。
查看文件权限
ls
命令可以列出并显示当前目录下的文件,使用较长格式列出文件:
1 | ls -l |
注:
Linux里面一切皆文件。
设备文件(/dev
目录下有各种设备文件),socket
网络套接字,pipe
是管道,软连接文件
:链接文件分为两类,另一类是硬链接,软连接类似于windows的快捷方式。
文件权限
读权限,使用cat <file name>
命令用来读取某个文件的内容;写权限,表示可以对某个文件进行编辑和修改;执行权限,指可以运行的二进制或者脚本文件,如同windows的exe
后缀的文件,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。
文件大小
以inode结点大小为单位来表示文件的大小,可以给ls加上-lh
参数来直观的查看文件大小。
ls -lh
ls -a(all)
1 | ls -lh |
变更文件所有者
切换到name用户,然后在/home/name
目录新建一个文件,并命名为iPhone13
1 | su - name |
修改文件权限
文件的有两种:
方式一:二进制数字表示
每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户。文件的读写执行对应字母rwx
,以二进制表示就是111
,用十进制表示就是7
,权限表示为rwx-rwx-rwx-
。
修改权限操作:
1 | chmod 600 filename |
方式二:加减赋值操作
1 | chmod go-rw filename |
g、o、u
分别表示group(用户组)、others(其他用户)和user(用户),+、-
分别表示增加和去掉相应的权限。
更多
adduser
和useradd
的区别是什么
useradd
只创建用户,不会创建用户密码和工作目录,创建玩了需要使用passwd <username>
去设置新用户和密码。
adduser
在创建用户的同时,会创建工作目录和密码(提示设置)。