linux常用
通过实验楼学习Linux的笔记~
另外推荐up主 莫烦python主要讲解机器学习
vim
用ubuntu自带的vim编辑器
vim 文件名 打开或新建文本
在vim中 点击 i 进入
esc:q 退出vim
esc:wq 保存更改退出vim
esc:q!不保存更改退出vim
快捷键
按键 | 作用 |
---|---|
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补全)。当 Shell 在“参数值”中遇到了通配符时,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 <command_name>
如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用–help参数,大部分命令都会带有这个参数,如:
$ ls --help
用户管理
1.查看伪终端用户的用户名
$ who am i
#或者
$ who mom likes
还有一点需要注意的是,在某些环境中 who am i 和 who mom likes 命令不会输出任何内容,这是因为当前使用的 SHELL 不是登录时的 SHELL,没有用户与 who 的 stdin 相关联,因此不会输出任何内容。例如我在本地的 Ubuntu 系统上输入这个命令就不会有提示。
查看当前登录用户的用户名
$ whoami
who 命令其它常用参数
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 同am i,mom likes |
-q | 打印当前登录用户数及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
2.创建用户
新建用户需要root权限,用sudo命令
一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。
su,su- 与 sudo
需要注意 Linux 环境下输入密码是不会显示的。
su <user># 切换到用户 user,执行时需要输入目标用户的密码
su - <user># 也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变成目标用户所对应的。
sudo <cmd># 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。
设置密码
sudo passwd <user>
创建用户
sudo adduser <user>
添加用户到系统,同时也会默认为新用户在/home目录下创建一个工作目录
$ ls /home
现在你已经创建好一个用户,并且你可以使用你创建的用户登录了,使用如下命令切换登录用户:
su -l <user>
退出当前用户
$ exit
adduser
和 useradd
的区别是什么
useradd
只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd <username>
去设置新用户的密码。adduser
在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。其实 useradd
、userdel
这类操作更像是一种命令,执行完了就返回。而 adduser
更像是一种程序,需要你输入、确定等一系列操作。
3.用户组
每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组(差不多就相当于家长的意思)。
查看用户组
法一:使用groups文件
$ groups <user>
法二:查看/etc/group文件
$ cat /etc/group | sort
cat 命令用于读取指定文件的内容并打印到终端输出
| sort 表示将读取的文本进行一个字典排序再输出
/etc/group 文件格式说明
/etc/group 的内容包括用户组(Group)、用户组口令、GID(组 ID) 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
你看到上面的 password 字段为一个 x,并不是说密码就是它,只是表示密码不可见而已。
这里需要注意,如果用户的 GID 等于用户组的 GID,那么最后一个字段 user_list 就是空的,这里的 GID 是指用户默认所在组的 GID,可以使用 id 命令查看。比如 shiyanlou 用户,在 /etc/group 中的 shiyanlou 用户组后面是不会显示的。lilei 用户,在 /etc/group 中的 lilei 用户组后面是不会显示的。
可以使用grep命令过滤掉一些不想看的结果
$ cat /ect/group | grep -E "user"
将其他用户加入sudo用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限
$ su -l <user>
$ sudo ls
使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo
命令获取权限来执行该命令。
#切换到sudo用户组的用户
$ su - <user>
或者直接打开一个新的终端
加入sudo组
$ sudo usermod -G sudo <user>
$ groups <user>#查看用户组
切换到该用户,用sudo
获取root权限
$ su - <user>
$ sudo ls /
4.删除用户和用户组
$ sudo deluser <user> --remove-home
使用 --remove-home 参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。删除用户组可以使用 groupdel
命令,倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组
文件权限
1.查看文件权限
ls(list)
查看当前路径下的文件
$ ls
显示当前路径下的文件及其全部信息
$ ls -l # l for long
— 软链接等同于windows上的快捷方式
— 一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息
—链接数: 链接到该文件所在的 inode 结点的文件名数目链接相关知识
—文件大小: 以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小
ls命令的其他常见用法
显示除了 .(当前目录)和 …(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。
$ ls -a # a for all
当然,你可以同时使用 -a 和 -l 参数:
$ ls -al
查看某一个目录的完整属性,而不是显示目录
里面的文件属性:
$ ls -dl <目录名>
显示所有文件大小,并以普通人类能看懂的方式呈现:
$ ls -asSh #h for human 以人类能看懂的方式呈现
其中小 s 为显示文件大小,大 S 为按文件大小排序
若需要知道其它功能,可以使用 man ls
命令查询或ls --help
2.变更文件所有者
在user1下创建文件
$ touch iphone11
查看文件属性
$ ls -alh iphone11
切换user2下之后再操作
$ cd /home/uesr1
$ ls
$ sudo chown user2 iphone11
一次性创建多个文件,love_1_linux.txt, love_2_linux.txt,…,love_10_linux.txt
$ touch love_{1..10}_linux.txt
两个点
3.修改文件权限 chmod(change mode)
文件权限的两种表示方式
方式一:二进制数字表示
每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,记住这个顺序是固定的。文件的读写执行对应字母 rwx
,以二进制表示就是 111
,用十进制表示就是 7
。例如我们刚刚新建的文件 iphone11 的权限是rw-rw-rw-
,换成对应的十进制表示就是 666
修改权限(改成只有拥有者可以读写)
$ chmod 600 iphone11
方式二:加减赋值操作
$ chmod go-rw iphone11
g
、o
还有 u
、a
分别表示 group(用户组)、others(其他用户) 和 user(用户)all (全部用户),+
和 -
分别表示增加和去掉相应的权限。
切换路径 cd(change directory)
去到其他目录
$ cd Documents/
$ cd /home/Documents/ #/开头,返回到绝对路径,去往电脑的任何地方
返回上一级目录
$ cd ..
$ cd ../../ #返回上上级目录
返回上一次的目录
$ cd -
创建文件 touch
copy cp
此时如果有文件与file1copy
重名,会覆盖,且不会报错
cp file1 file1copy
此时如果有文件与file1copy
重名,会报错
cp -i file1 file1copy # i for interactive
复制文件到文件夹中
cp file1 folder1/
复制文件夹到文件夹中
cp -r folder1/ folder2/ # r for recursion 把文件一个一个复制到文件夹中
复制一些文件到文件夹中
cp file* folder1/
cp file1 file2 folder1/
剪切 mv(move)
用法同cp
重命名
mv file1 filerename
创建文件夹 mkdir(make directory)
创建文件夹
mkdir folder3
mkdir folder3/folder4
移除文件夹 rmdir(remove directory)
移除文件 rm(remove)
只能移除空文件夹
rmdir folder3
rmdir folder3/folder4
移除文件
rm file1
rm * # 移除目录下所有文件
rm / # 移除计算机中所有文件
rm -i file1 # 移除文件的时候会询问
rm -I file1 # 移除三个以上文件时会询问
rm -r folder1 # 把文件夹中的文件都删掉
修改文件1 nano
类似于编辑器
touch t.py
nano t.py
下面有命令提示
^是ctrl,退出后选保存,回车确认
运行python文件
python3 t.py
直接执行文件,需要有执行权限,python文件中开始要有#!/usr/bin/python3
./t.py
修改文件2 cat
显示里面的内容
cat t.py
把一个脚本中的内容放到另一个新创建的里面去
cat t.py > t1.py
把两个脚本合并放到另一个新创建的里面去
cat t.py t1.py > t2.py
把一个脚本加到另外一个脚本内容的后面
cat t3 >> t2
#查看当前路径pwd