1、用户相关:

[ 新建: useradd ]

新建用户命令
$ useradd [选项] 登陆名

  • -u:指定用户的 UID
  • -g:指定 GID
  • -c:指定 注释信息
  • -d:指定用户的 家目录, ```bash $ sudo useradd zhang // useradd userName

$ passwd zhang //passwd userName 给已创建的用户设置密码

// 说明 新创建的用户需要额外的参数在 /home/ 下创建对应的家目录

$ userdel zhang //userdel userName 删除用户userName $ rm -rf /home/zhang //删除用户 zhang 所在目录

  1. 创建新用户后, 同时在 etc/ 目录下的 passwd 文件中添加新用户的相关信息
  2. [ `用户管理` ]
  3. | `$ useradd [选项] 用户名` | 创建用户<br />无参数<br /> **会创建与用户名同名的组**,并且默认在_/home目录下创建与用户名同名的目录作为该用户主目录_
  4. -g:创建用户 and 指定用户组<br /><br />-d 用户主目录:创建用户并指定用户主目录<br /><br />-s /etc/shell:创建用户并指定用户登录后所使用的shell<br /><br />-c 备注:加上备注文字,备注保存在 passwd 的备注栏 <br /><br />**-d** 登入目录:指定用户登入时的启始目录<br /><br />-g 群组:指定用户所属的群组<br /><br />**-m**: 自动建立用户的登入目录<br /><br />-M:不要自动建立用户的登入目录<br /><br />-n:取消建立以 用户名称为名的 群组<br /><br />-u:指定用户的 id | 相对复杂, 自由度高<br /><br />如果单纯的<br />`$ useradd zhang`<br />会创建一个**_三无用户_**:<br />- 无用户家目录<br />- 无指定 shell 版本<br />- 无密码<br /><br /> |
  5. | --- | --- | --- |
  6. | `**_$ adduser userName_**` | 用法简单,例如 sudo adduser zhang //其实是一个 perl 脚本, 底层调用 useradd 命令<br /><br />adduser 会自动创建 用户家目录, 指定 shell 版本<br /><br />默认的 shell 是 /bin/sh 所以:<br />会有创建新用户之后 shell 无法自动补全或者基本的 shell 命令无法使用, tab 键无法自动补全<br /><br />解决:使用 root 查看** passwd 文件把默认的/etc/sh 修改为 /etc/bash** 就可以 | <br /><br /><br /><br /><br /> |
  7. | | | |
  8. demo
  9. ```bash
  10. [root@/home/mi]# sudo useradd tt -m
  11. [root@/home/mi]# passwd tt
  12. 新的 密码:
  13. 无效的密码: WAY ??????
  14. 无效的密码: 是回文
  15. 重新输入新的 密码:
  16. passwd:已成功更新密码
  17. [root@/home/mi]# cd /home/
  18. [root@/home]# ls
  19. data lost+found mi test tt
  20. [root@/home]# sudo vim /etc/passwd
  21. [root@/home]#
  22. mi:x:1000:1000:,,,:/home/mi:/bin/bash
  23. sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
  24. zhang:x:1001:1001::/home/zhang:/bin/sh
  25. zh:x:1002:1002::/home/data/:/bin/bash
  26. tt:x:1003:1003::/home/tt:/bin/sh

指定用户所使用的 shell
**$ useradd -s /etc/shell userName** // 则新建用户 userName 使用的shell 是 /etc/shell

**adduser 演示demo:**

  1. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home$ sudo adduser zh
  2. 正在添加用户"zh"...
  3. 正在添加新组"zh" (1002)...
  4. 正在添加新用户"zh" (1002) 到组"zh"...
  5. 创建主目录"/home/zh"...
  6. 正在从"/etc/skel"复制文件...
  7. 新的 密码:
  8. 无效的密码: WAY ??????
  9. 无效的密码: 是回文
  10. 重新输入新的 密码:
  11. passwd:已成功更新密码
  12. 正在改变 zh 的用户信息
  13. 请输入新值,或直接敲回车键以使用默认值
  14. 全名 []:
  15. 房间号码 []:
  16. 工作电话 []:
  17. 家庭电话 []:
  18. 其它 []:
  19. 这些信息是否正确? [Y/n]
  20. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home$ ls
  21. data lost+found mi test zh
  22. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home$
  23. adduser 命令会直接创建 用户家目录

[ 用户信息修改 ]

场景: 用 useradd 或 adduser 命令添加用户如果不小心填错用户信息,后期修改
method 1:
使用 vim 直接手动修改涉及用户信息的相关文件
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow

比如 /etc/passwd 文件
image.png

method 2:
使用 usermod 命令:

$ usermod [ 选项 ] 用户名
选项:

  • **-c**: 用户说明, 修改用户的说明信息,即 修改 /etc/passwd 文件的目标用户的 第 5 个字段
  • -d:修改用户的主目录, 也就是修改 /etc/passwd 文件的目标用户信息的 第 6 个字段
    • 但是: 这里的 路径一定要是 绝对路径
  • **-s shell**:修改用户的登录 shell, 默认是 /bin/bash
  • -g:组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID)
  • -u:UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
  • -e:日期:修改用户的失效曰期,格式为 “YYYY-MM-DD”,即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
  • **-G 组名**:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
  • **-I 用户名**:修改用户名称;

demo:

  1. // -c 使用
  2. yufu@ubuntu:/home$ sudo usermod -c zhanguse yufu

image.png
对应的 关于 yufu 用户的说明信息就改了

比如把 yufu 加入到 root 组

加之前:
yufu@ubuntu:/home$ **sudo vim /etc/group**
image.png

把用户 yufu 添加到 root 组
**$ usermod -G root yufu**

image.png

[

](http://c.biancheng.net/view/849.html)


[ 删除: userdel ]

删除用户:

  1. $ userdel zhang //userdel userName 删除用户userName
  2. $ rm -rf /home/zhang //删除用户 zhang 所在目录
  3. or
  4. $ userdel -r zh // 同时删除用户的家目录

[ 用户和用户组 ]

linux 是真正的 多用户操作系统,所以可以在 linux 系统中建若干用户user
系统的超级管理员 root : 可以管理当前操作系统 os 中的用户和用户组

用户: 使用操作系统的人 user
用户组: 具有相同 系统权限的一组用户 group
家目录: 也称 主目录,
image.png
$ **cat /etc/group** 查看存储当前系统中所有用户组的信息

  1. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ cat /etc/group
  2. root:x:0:
  3. mi:x:1000:
  4. zhang:x:1001:
  5. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$

注解:
该文件内容的 每一行都代表一个用户组, 每个用户组信息格式固定
Group : x : 123 : abc,def,xyz
组名称 组密码占位符 组编号 组中用户名列表

  • 用户手动创建的用户组编号从500开始,一般分配的是大于等于500并且未被使用的最小组号

[ 超级用户 ]

Linux系统中的 root 账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限

大多数 linux 中 不推荐直接使用 root 账号登陆系统

$ **su - userName** // 切换用户 ex: su - zhang 切换到用户 zhang 登陆
$ **su -** or $** su** 切换回 root 目录

useradd -c

  1. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home/mi# useradd -c 常用 zh
  2. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home/mi# cat /etc/passwd
  3. root:x:0:0:root:/root:/bin/bash
  4. daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  5. zhang:x:1001:1001::/home/zhang:/bin/sh
  6. zh:x:1002:1002:常用:/home/zh:/bin/sh
  7. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home/mi#

useradd -d

  1. -d 用于指定用户的家目录, 也就是用户登陆时所进来的目录
  2. // -d /home/data 就是指定用户的家目录是 /home/data
  3. 通常-d选项与-m选项一起使用,-m选项的作用是,如果指定目录不存在时,则自动创建。
  4. -s 指定用户的默认 shell
  5. // 如果不设定的话, 默认版本是 /bin/bash
  6. 所以最常用的 创建用户的经典命令:
  7. $ sudo useradd userName -m -d /home/data -s /bin/bash
  8. 最好将它留在系统上的文件也删除掉,可以使用“userdel -r 用户名”来实现

demo:

  1. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home# useradd zh -m -d /home/data/ -s /bin/bash
  2. useradd:警告:此主目录已经存在。
  3. 不从 skel 目录里向其中复制任何文件。
  4. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home# ls
  5. data lost+found mi test
  6. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home# su - zh
  7. zh@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ ls
  8. lost+found mi

用户密码设置:
命令: $ passwd [ 选项 ] 用户名 // ex: passwd root 修改 root 用户的密码

为创建的新用户添加 root 权限:
method: 修改 文件 /etc/sudoers
[mi@ ~/snap]$ sudo vim /etc/sudoers
image.png
这样修改完之后, 用 zh 用户登陆再用 sudo 命令 就可以获得 root 权限进行操作operate

另外的赋予 用户 root 权限的方法:
直接修改 /etc/passwd 文件,找到如下行, 把用户 ID 修改为0,用户 ID 为x 后面的那个数字

  1. [zh@ ~]$ sudo vim /etc/passwd
  2. [sudo] zh 的密码:
  3. hplip:x:117:7:HPLIP system user,,,:/var/run/hplip:/bin/false
  4. geoclue:x:118:122::/var/lib/geoclue:/usr/sbin/nologin
  5. pulse:x:119:123:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
  6. gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false
  7. gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
  8. mi:x:1000:1000:,,,:/home/mi:/bin/bash
  9. sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
  10. zhang:x:1001:1001::/home/zhang:/bin/sh
  11. zh:x:1002:1002::/home/data/:/bin/bash
  12. tt:x:1003:1003::/home/tt:/bin/sh
  13. // 修改为
  14. zh:x:0:1002::/home/data/:/bin/bash

对于 passwd 文件的字段显示:
第一个字段: 保存的是 用户名
第二个字段: “X” 代表有密码, 这个字段称为 密码标识
第三个字段: 用户ID(UID),

注意:如果用户的 uid =0, 则表示这个账号是管理员账号,
普通用户升级管理员, 只需要把对应的 uid 改为 0 就可以

uid: 1-499 是系统用户( 伪用户) , 不可以登陆系统
————-1-499用来运行系统或服务, 1-99是系统保留,系统自动创建;100~499 是预留给用户创建账号的。

500-65535:普通用户UID。建立的普通用户的UID从500开始,最大到65535


查看用户信息:
$ cat /etc/passwd | grep 用户名
$ id zh // 查看用户 zh 的 uid 和 gid 信息

  1. [zh@~]$ id zh
  2. uid=1002(zh) gid=1002(zh) 组=1002(zh)

[ su 和 su - ]

结论: 有区别//
虽然都可以获得 root 权限

sudo su 是切换到 当前账号的 root 权限

而 su - 是直接切换到 root 超级管理员用户

su 只是切换了 root 身份, 但是 shell 环境仍然是 普通用户的shell而后者 su - 是连同用户和 shell 环境 一起切换成了 root 身份,只有切换了 shell 环境才不会出现 PATH 环境变量错误,su - 之后 pwd 应该为 /root~~~~�

修改终端前缀:
默认的 linux 终端前缀
image.png
查看 默认终端的前缀变量: $**PS1**

  1. root@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/home# echo $PS1
  2. \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
  3. 符号含义:
  4. \H:完整的主机名字
  5. \h:任取主机的第一个名字
  6. \v bash 的版本信息
  7. \w:完整的工作目录
  8. \W:列出最后一个目录
  9. \$:提示字符, 普通用户$ root用户#
  10. \u:代表用户

修改 PS1 变量即可达到自定义的效果:

  • 只对当前用户有效
    • 修改 ~/.bashrc
  • 对所有用户有效
    • 修改 /etc/profile

image.png

  1. export PS1='[\u@\w]\$ '

$ source /etc/profile //使得配置立即生效

image.png
继续自定义配置颜色

image.png

  1. export PS1='\[\e[0;31m\][\u@\w]\$\[\e[0m\] '

颜色设置参数:
在 PS1 中设置字符颜色的格式为:
[\e[ F;Bm] 其中 F 为字体颜色, 编号为 30 ~ 37 , B 为背景颜色, 编号为 40 ~ 47

颜色对照表:

F B
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

ex: 要设置命令行格式为 绿色黑底 [\e[32;40m]

如果显示主机的 账号名称 \u 主机的第一个名字 \h 完整的工作目录 \w 24小时格式时间 \t

  1. PS1='[\[\e[32;40m\]\u@\h \w \t]$ '
  2. 实践之后觉得合适的:
  3. $ PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@ \[\e[36;40m\]\w\[\e[0m\]]\\$ "

关于命令行输入闪烁的问题

参数 说明 备注
0m 无特殊效果 以示例PS1中的\w\[\e[0m\]]\\\$ 为说明
1m 字体变粗
2m 颜色变化,部分字体变细
3m 颜色变化,部分字体倾斜
4m 颜色变化,加下滑线
5m 颜色变化,文字闪动
6m
9m 颜色变化,加删除线
8m 黑色文字,

示例:
PS1=”[\e[37;40m][[\e[32;40m]\u[\e[37;40m]@\h [\e[36;40m]\w[\e[0m]]\\$ “


文件权限查看:

  1. [zh@ /home/data]$ ls -l
  2. 总用量 20
  3. drwx------ 2 root root 16384 6 7 23:04 lost+found
  4. drwxr-xr-x 2 mi mi 4096 6 7 23:05 mi
  5. d:文件类型
  6. rwxr-xr-x:文件权限
  7. 2:硬链接数 目录包含的文件数
  8. mi:文件所有者
  9. mi:文件所有者所在的用户组
  10. 4096:文件长度
  11. 上次修改时间
  12. 文件名
  13. 解析:
  14. 权限一共 10
  15. 1 位代表文件类型, d 表示目录 - 表示非目录
  16. 后面 9 位可以拆分为 3 组来看, 分别对应不同的用户,2-4位代表所有者 user 的权限说明
  17. 5-7 位代表组 group 的权限说明
  18. 8-10 位代表其他人 other 的权限说明
  19. // r 代表 read 可读
  20. // w 代表 write 可写
  21. // x 代表 execute 可执行
  22. "drwxrwxrwx”表示所有用户都对这个目录有可读可写可执行权限。

修改权限: 用 **chmod** 命令
作用:修改文件、目录的权限

格式:chmod 操作对象 操作符号 访问权限 文件或目录名

  • u: 用户user,表现文件或目录的所有者
  • g: 用户组group,表现文件或目录所属的用户组
  • o: 其他用户other
  • a: 所有用户all

操作符 +添加权限 -减少权限 =直接给定一个权限
常用: sudo chmod a+x

$ sudo chmod -R 777 /var/www
就是给“/var/www”这个目录赋予所有人可读可写可执行权限

r对应4
w对应2
x对应1
rwx =4+2+1 = 7

-rw-rw-rw- 666 每个人都可以读取和写入文件


question:
新建的 zh 用户无法在 root 创建的目录下创建文件

  1. [zh@ /home]$ ls -l
  2. 总用量 32
  3. drwxr-xr-x 2 root root 4096 7 6 08:09 data
  4. drwx------ 2 root root 16384 7 3 04:05 lost+found
  5. drwxr-xr-x 20 mi mi 4096 7 6 08:08 mi
  6. drwxr-xr-x 2 zhang zhang 4096 8 20 2020 test
  7. drwxr-xr-x 2 tt tt 4096 7 5 18:17 tt
  8. [zh@ /home]$ sudo chmod 777 ./data/
  9. [zh@ /home]$ ls -l

3、软件 install
3.1 搜狗输入法
https://pinyin.sogou.com/linux/?r=pinyin

  1. // install vim
  2. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get install vim -y
  3. // install git
  4. [zh@ ~]$ sudo apt-get install git -y
  5. // install gcc
  6. [root@ /home/data]# apt-get install gcc -y
  7. [mi@:~/桌面]$ sudo apt-get install vim -y

2、相关配置

[ ssh配置 ]

  1. // 下载 net-tools : 从而使用 ifconfig
  2. [zh@ /home]$ sudo apt-get update
  3. [zh@ /home]$ sudo apt-get install net-tools -y
  4. [zh@ /home]$ sudo apt-get install openssh-server -y
  5. // 查看是否开启 ssh
  6. [zh@ /home]$ ps -ef | grep ssh
  7. root 3978 1 0 705 ? 00:00:00 /usr/sbin/sshd -D
  8. zh 15690 15147 0 08:16 pts/5 00:00:00 grep ssh
  9. // 重新启动 ssh 服务
  10. [zh@ /home]$ sudo /etc/init.d/ssh restart
  11. [ ok ] Restarting ssh (via systemctl): ssh.service.
  12. [zh@ /home]$ ps -ef | grep ssh
  13. root 15717 1 0 08:17 ? 00:00:00 /usr/sbin/sshd -D
  14. zh 15737 15147 0 08:17 pts/5 00:00:00 grep ssh
  15. // or 手动启动 /etc/init.d/ssh start
  16. 之后就可以远程通过 ssh 进行登陆了
  17. 比如: $ ssh mi@10.234.201.174

windows 下好用的 ssh 工具: **mobaxterm** 、 putty、 xshell

[ 免密访问 ssh key]

免密访问 github:
step1:创建公钥

  1. [mi@:~/.ssh]$ ssh-keygen -t rsa // 一路回车
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/home/mi/.ssh/id_rsa):
  4. Enter passphrase (empty for no passphrase):
  5. Enter same passphrase again:
  6. Your identification has been saved in /home/mi/.ssh/id_rsa
  7. Your public key has been saved in /home/mi/.ssh/id_rsa.pub
  8. The key fingerprint is:

step2:查看并复制公钥

  1. [mi@:~/.ssh]$ cat ~/.ssh/id_rsa.pub

step3:把复制的公钥保存在 github 上

github 页面右上角头像点击设置setting
图片.pngstep4: 测试
git clone 无需输入密码
// 需要先下载并配置 git
随便找一个 仓库,复制 ssh 链接
图片.png

  1. [mi@:~/work/mycode/gitclone]$ git clone git@github.com:laoyufu1/myDocsify.git
  2. 正克隆到 'myDocsify'...
  3. The authenticity of host 'github.com (52.74.223.119)' can't be established.
  4. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
  5. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
  6. Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
  7. remote: Enumerating objects: 3, done.
  8. remote: Counting objects: 100% (3/3), done.
  9. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
  10. 接收对象中: 100% (3/3), 完成.
  11. [mi@:~/work/mycode/gitclone]$

// 发现没有输入密码, 代码就 clone 下来了, 测试 successfully


[ 开发环境 ]

[ java ]

[ golang ]

[ cpp ]

[ python ]

验证电脑上没有 python 环境

  1. [mi@:~/work/micode/k7a-r-stable]$ python
  2. Command 'python' not found, did you mean:
  3. command 'python3' from deb python3
  4. command 'python' from deb python-is-python3
  5. // 下载安装 python3

[

](https://www.python.org/downloads/source/)

[ android ]

  • Android Studio:Google 发布的亲儿子级别 Android 开发 IDE
  • JDK:Java语言的软件开发工具包,包含Java的运行环境、工具集合、基础类库等内容。
  • Android SDK:Google提供的Android开发工具包,开发Android程序时,需要通过引入该工具包使用Android相关的API。

开发语言:

  • java
  • kotlin

step:

  1. // 1、下载 java jdk , 选择 jdk8
  2. // jdk 的存放目录一般在 /opt 目录下
  3. // 下载连接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
  4. // 解压到指定文件夹 , oracle 下载需要登陆, 可以通过我上传的链接下载
  5. [zh@ /home/data]$ ls
  6. [zh@ /home/data]$ sudo cp /home/mi/下载/jdk-8u291-linux-x64.tar.gz /opt
  7. [sudo] zh 的密码:
  8. [zh@ /home/data]$ cd /opt/
  9. [zh@ /opt]$ ls
  10. jdk-8u291-linux-x64.tar.gz
  11. [zh@ /opt]$ sudo tar -zxvf jdk-8u291-linux-x64.tar.gz
  12. [zh@ /opt]$ ls
  13. jdk1.8.0_291 jdk-8u291-linux-x64.tar.gz
  14. [zh@ /opt]$ cd jdk1.8.0_291/
  15. [zh@ /opt/jdk1.8.0_291]$ pwd
  16. /opt/jdk1.8.0_291
  17. // 配置环境变量
  18. [zh@ /home/data]$ vim ~/.bashrc
  19. #配置 zh 用户下的 java jdk 环境变量
  20. export JAVA_HOME="/opt/jdk1.8.0_291"
  21. export PATH="$JAVA_HOME/bin:$PATH"
  22. [zh@:/home/data$] source ~/.bashrc
  23. [zh@:/home/data]$ java -version
  24. java version "1.8.0_291"
  25. Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
  26. Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
  27. [zh@:/home/data]$
  28. // 当下配置的是 zh 下的 ~/.bashrc 用户环境, 不是全局的

image.png

[ 配置AndroidStudio ]

Android Studio 国内社区下载地址: http://www.android-studio.org/image.png下载之后

  1. [zh@:/home/data]$ sudo cp /home/mi/下载/android-studio-ide-191.5977832-linux.tar.gz /opt && cd /opt
  2. [sudo] zh 的密码:
  3. [zh@:/opt]$ ls
  4. android-studio-ide-191.5977832-linux.tar.gz jdk-8u291-linux-x64.tar.gz
  5. jdk1.8.0_291
  6. [zh@:/opt]$ sudo tar -zxvf android-studio-ide-191.5977832-linux.tar.gz
  7. [zh@:/opt]$ ls
  8. android-studio jdk1.8.0_291
  9. android-studio-ide-191.5977832-linux.tar.gz jdk-8u291-linux-x64.tar.gz

可以通过运行 [zh@:/opt/android-studio/bin]$ sh studio.sh 启动运行 android studio

// 创建 android studio 的桌面快捷启动方式

linux 的软件快捷方式在 /usr/share/applications/ 目录下:

  1. [zh@:/opt/android-studio/bin]$ cd /usr/share/applications/
  2. [zh@:/usr/share/applications]$ sudo vim AndroidStudio.desktop
  3. [sudo] zh 的密码:
  4. // 写入以下内容:
  5. [Desktop Entry]
  6. Name=AndroidStudio
  7. Comment=Firefox
  8. Exec=/opt/android-studio/bin/studio.sh %f
  9. Icon=/opt/android-studio/bin/studio.png
  10. Terminal=false
  11. Type=Application
  12. Categories=Network;WebBrowser;
  13. 可执行文件和图标位置:
  14. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/opt/android-studio/bin$ ls
  15. appletviewer.policy idea.properties log.xml studio.png
  16. format.sh inspect.sh printenv.py studio.sh
  17. fsnotifier libdbm64.so restart.py studio.vmoptions
  18. fsnotifier64 lldb studio64.vmoptions

然后在软件里就可以看到了
进取之后提醒 update, 点击更新版本

image.png解决:
这个报错说明 当前用户没有操作/opt这个目录的权限
chown 命令, 是change owner 的缩写
sudo chown -R $USER:$USER /opt/android

  1. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/opt$ ls -al
  2. 总用量 897948
  3. drwxr-xr-x 4 root root 4096 7 6 10:05 .
  4. drwxr-xr-x 24 root root 4096 7 5 14:39 ..
  5. drwxrwxr-x 7 root root 4096 10 31 2019 android-studio
  6. -rw-r--r-- 1 root root 774539586 7 6 10:04 android-studio-ide-191.5977832-linux.tar.gz
  7. drwxr-xr-x 8 10143 10143 4096 4 8 03:26 jdk1.8.0_291
  8. -rw-r--r-- 1 root root 144935989 7 6 08:49 jdk-8u291-linux-x64.tar.gz
  9. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/opt$ sudo chown -R zh:zh /opt/android-studio
  10. [sudo] mi 的密码:
  11. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/opt$ ls -al
  12. 总用量 897948
  13. drwxr-xr-x 4 root root 4096 7 6 10:05 .
  14. drwxr-xr-x 24 root root 4096 7 5 14:39 ..
  15. drwxrwxr-x 7 zh zh 4096 10 31 2019 android-studio
  16. -rw-r--r-- 1 root root 774539586 7 6 10:04 android-studio-ide-191.5977832-linux.tar.gz
  17. drwxr-xr-x 8 10143 10143 4096 4 8 03:26 jdk1.8.0_291
  18. -rw-r--r-- 1 root root 144935989 7 6 08:49 jdk-8u291-linux-x64.tar.gz
  19. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:/opt$

选择 **custom **自定义安装图片.png

https://www.yuque.com/starkwang/frontend/gudly8 整理

[ 常用环境 ]

  1. // git
  2. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get install git -y
  3. // gcc
  4. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get install gcc -y
  5. // 配置 ssh 远程连接, 见上述的 ssh 配置
  6. // repo
  7. // gerrit
  8. // jdk java 开发环境配置
  9. // 配置 公钥免密登录
  10. // mysql
  11. // adb fastboot 详见 android 开发环境搭建

[ git配置 ]

第一次使用 git 时需要先完成相关配置

  1. // 先配置 用户名和邮箱地址 设为 --global 全局
  2. // 因为每一个 git 的提交都会使用这些信息, 它们会写入到你的每一次提交中, 且不可更改
  3. [mi@:~/.ssh]$ git config --global user.name "zhanghao"
  4. [mi@:~/.ssh]$ git config --global user.email "snowzhang183@126.com"
  5. [mi@:~/work/micode]$ git config --global color.ui true
  6. // 设置自动颜色方案
  7. // 检查查看配置信息, 使用命令 git config --list

[ repo 配置 ]

  1. // 1、下载 repo
  2. [mi@:~]$ mkdir ~/bin
  3. [mi@:~]$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
  4. Command 'curl' not found, but can be installed with:
  5. snap install curl # version 7.76.1, or
  6. apt install curl # version 7.68.0-1ubuntu2.5
  7. See 'snap info curl' for additional versions.
  8. [mi@:~]$ sudo apt-get install curl
  9. curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
  10. // 2、配置 repo 的环境变量
  11. // /etc/profile 或者 ~/.bashrc 中添加如下内容
  12. export PATH=~/bin:$PATH
  13. export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
  14. 然后使用 source 命令刷新配置
  15. [mi@:~]$ sudo vim ~/.bashrc
  16. [mi@:~]$ source ~/.bashrc
  17. // 3、配置本地 gerrit 添加自己的信息
  18. 修改 ~/.gitconfig
  19. // 4、要注意有可能 repo init 时报错权限不够
  20. 需要 sudo chmod 755 ~/bin/repo 赋予执行权限

图片.png
repo init 报错
图片.png

  1. [mi@:/usr/bin]$ sudo apt-get install python -y

[ shell 终端界面 ]

1、先查看 linux 支持的 shell

  1. [zh@ ~]$ cat /etc/shells
  2. # /etc/shells: valid login shells
  3. /bin/sh
  4. /bin/bash
  5. /bin/rbash
  6. /bin/dash
  7. [zh@ ~]$

默认 ubuntu/centos/macos 使用的都是 **bash**

// 关于 linux 环境变量的解释:

source命令:

  • 修改配置文件后, 必须注销重新登陆才能生效
  • 使用 source 命令可以立即使得 环境变量配置文件生效

命令demo: $ source ~/.bashrc

环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量
常见的环境变量:

/etc/bashrc:

/etc/profile:

~/.bashrc:

~/.bash_profile:

/etc/profile.d/*.sh:

~/.bash_logout:

优先级:
/etc/profile —-> ~/bash_profile ——> ~/.bashrc —-> /etc/bashrc —-> 命令提示符

// 登陆 shell, 指的就是当用户登陆系统时所取的 那个shell, 登陆shell属于交互式shell

登陆shell将查找 4 个不同的启动文件来处理其中的命令, bash shell 的处理文件顺序如下:
1、 etc/profile
2、 /etc/profile.d
3、 $HOME/.bash_profile
4、 $HOME/.bash_login
5、 $HOME/.profile

**/etc/profile** 是bash shell在系统上的主默认启动文 件,系统上 每一个用户在登陆时都将执行此文件。

/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。

/etc /environment:在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。

~/.profile: 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

/etc/bashrc /etc/bash.bashrc :为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

一般情况下,用户的配置信息写入 ~/.bashrc 中

vimrc : https://blog.51cto.com/hah11yn/1783679

https://www.bnskd.com/9434.html

wiki: https://wiki.n.miui.com/#all-updates

https://www.jb51.net/article/141748.htm

https://www.cnblogs.com/kaerxifa/p/11334604.html

android compile https://zhuanlan.zhihu.com/p/97070446

https://www.cnblogs.com/jiqing9006/p/8279289.html

https://www.yuque.com/kenguba/bqb30x/gnpkw2

https://www.yuque.com/mygod/bhwzdi/gg9q9u#4dae6c38

https://www.yuque.com/zerlee/ox3lcg/ydtwxg

https://www.runoob.com/linux/linux-user-manage.html

gerrit:
keji:
wiki:

3、ubuntu 相关

[ ubuntu 升级 ]

安装完 ubuntu 之后
// 需要设置一下 root 的密码, 可以设置为 1, 用来作超级管理员

  1. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo passwd root
  2. [sudo] mi 的密码:
  3. 对不起,请重试。
  4. [sudo] mi 的密码:
  5. 新的 密码:
  6. 无效的密码: WAY ??????
  7. 无效的密码: 是回文
  8. 重新输入新的 密码:
  9. passwd:已成功更新密码
  10. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$

18.04 —> 升级 20.04

  1. 1、系统软件包升级到最新
  2. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get update
  3. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get upgrade
  4. // 删除不再需要的安装包
  5. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt autoremove
  6. 2、升级完成后,重新引导系统
  7. ubuntu 附带了一个 do-release-upgrade 的命令使用程序
  8. 用于将 ububtu 操作系统升级到最新
  9. 只需安装 update-manager-core 即可
  10. $ sudo apt-get install update-manager-core -y
  11. 执行 $ sudo do-release-upgrade
  12. 可能会有问题:
  13. 正在检查新版 Ubuntu
  14. Please install all available updates for your release before upgrading.
  15. 列出没有更新的包 手动升级
  16. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ apt list --upgradable
  17. 然后利用如下命令将各个包手动更新:
  18. sudo apt-get install {your package name}
  19. 之后执行,提醒要 reboot 重启
  20. 正在检查新版 Ubuntu
  21. You have not rebooted after updating a package which requires a reboot. Please reboot before upgrading.
  22. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo do-release-upgrade
  23. 执行:
  24. 桌面版本的话:
  25. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo do-release-upgrade -m desktop
  26. 然后所有的提示都输入 y 回车就好,等待更新完成

在 ubuntu20.04 中发现没有 应用商店
需要手动安装

  1. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get install gnome-software -y
  2. // 安装后, 更新软件
  3. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo apt-get update

[ ubuntu 软件 ]

[ 截图 flameshot ]

**Flameshot** : 开源

  • flameshot 支持快捷键

更推荐命令行install , 商店安装的是纯英文

  1. // 这样下载的是汉化的版本
  2. $ sudo apt-get install flameshot -y

右键点击右上角的 flameshot 图标, 选择信息
image.png
快捷键呢?
mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ flameshot gui
命令行输入 flameshot gui 即可进行截图, 可见只需要配置 这个命令的快捷键

界面右上角,系统设置/键盘快捷键/+/添加自定义
image.png
image.png

  • markdown:typora:https://www.typora.io/#linux
  • 网盘:百度网盘
  • 图床 sm.ms + picgo:
    • picgo 下载:https://github.com/Molunerfinn/PicGo/releases //linux 下载 xxxx.AppImage
    • sm.ms:https://sm.ms/ ```bash [mi@:~/work/tools]$ mkdir picgo [mi@:~/work/tools]$ cd picgo/ [mi@:~/work/tools/picgo]$ sudo cp /home/mi/下载/PicGo-2.3.0-beta.6.AppImage ./ [sudo] mi 的密码: [mi@:~/work/tools/picgo]$ l PicGo-2.3.0-beta.6.AppImage [mi@:~/work/tools/picgo]$ sudo chmod a+x PicGo-2.3.0-beta.6.AppImage [mi@:~/work/tools/picgo]$ ./PicGo-2.3.0-beta.6.AppImage

// 注意一样要先 chmod 赋予执行权限

// 另外 picgo 依赖 xclip, 需要先 install xclip [mi@:~/桌面]$ sudo apt-get install xclip

  1. ---
  2. linux 磁盘分区与挂载:<br />原理:
  3. - linux 下,无论有几个分区,归根结底都只有一个根目录 就是 /
  4. 所以 linux 中的每个分区都是用来组成文件系统的一个部分
  5. 挂载 mount _通过挂载的机制, 将硬盘分区和文件目录联系起来_
  6. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12940199/1625561172440-78b33295-5a24-4260-b640-771a7f29d154.png#clientId=ud377ffcd-7935-4&from=paste&height=299&id=u827c388d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=299&originWidth=625&originalType=binary&ratio=1&size=91754&status=done&style=none&taskId=u09c8c35d-eec3-42a3-96b4-05382dfb68e&width=625)<br />在系统中进入到目录就 相当于是访问到对于的分区
  7. 区别:<br />windows 先分物理地址, 再在分区上建立目录 [ 每次重装系统需要分区 ]
  8. linux 先有目录, **再将物理地址 映射到目录上**
  9. linux下:
  10. linux 默认有三个分区
  11. - /:
  12. - /boot
  13. - swap
  14. 磁盘使用情况查询 df -h
  15. 查看所有设备的 挂载情况: $ lsblk/lsblk -f
  16. 解释:
  17. > linux中的所有设备必须挂载后才能使用。如果硬盘相当于房间,挂载相当于配钥匙的过程,挂载之后才能使用。linux的目录由根目录向下延申,但根目录的子目录可以单独分区(如/boot)。**同一目录下的文件也可能在不同的分区中。**
  18. ```bash
  19. // 取消 机械硬盘在 data 的挂载 ---> 用 sudo umount
  20. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~/桌面$ df -h
  21. 文件系统 容量 已用 可用 已用% 挂载点
  22. udev 16G 0 16G 0% /dev
  23. tmpfs 3.2G 1.9M 3.2G 1% /run
  24. /dev/nvme0n1p3 175G 7.5G 159G 5% /
  25. tmpfs 16G 0 16G 0% /dev/shm
  26. tmpfs 5.0M 4.0K 5.0M 1% /run/lock
  27. tmpfs 16G 0 16G 0% /sys/fs/cgroup
  28. /dev/sdb1 916G 387M 869G 1% /home
  29. /dev/sda1 3.6T 89M 3.4T 1% /home/data
  30. /dev/loop14 51M 51M 0 100% /snap/snap-store/547
  31. /dev/loop15 384K 384K 0 100% /snap/gnome-characters/550
  32. /dev/loop16 2.5M 2.5M 0 100% /snap/gnome-calculator/748
  33. /dev/loop17 2.3M 2.3M 0 100% /snap/gnome-system-monitor/148
  34. tmpfs 3.2G 84K 3.2G 1% /run/user/1000
  35. /dev/loop19 261M 261M 0 100% /snap/kde-frameworks-5-core18/32
  36. 可知是 /dev/sda1
  37. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo umount /dev/sda1
  38. // 使用 lsblk 命令查看磁盘使用情况
  39. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ lsblk
  40. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  41. loop0 7:0 0 55.3M 1 loop /snap/core18/1885
  42. loop1 7:1 0 61.7M 1 loop /snap/core20/1026
  43. loop2 7:2 0 55.5M 1 loop /snap/core18/2074
  44. loop3 7:3 0 243.9M 1 loop /snap/gnome-3-38-2004/39
  45. loop18 7:18 0 78.3M 1 loop
  46. loop19 7:19 0 260.7M 1 loop /snap/kde-frameworks-5-core18/32
  47. sda 8:0 0 3.7T 0 disk
  48. └─sda1 8:1 0 3.7T 0 part // 发现此时 sda1 已经没有挂载了
  49. sdb 8:16 0 931.5G 0 disk
  50. └─sdb1 8:17 0 931.5G 0 part /home
  51. nvme0n1 259:0 0 238.5G 0 disk
  52. ├─nvme0n1p1 259:1 0 487M 0 part /boot/efi
  53. ├─nvme0n1p2 259:2 0 59.6G 0 part [SWAP]
  54. └─nvme0n1p3 259:3 0 178.4G 0 part /
  55. 重新挂载到 mi 用户的 /home/mi 目录
  56. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ sudo mount /dev/sda1 /home/mi/
  57. mi@mi-HP-ProDesk-680-G6-PCI-Microtower-PC:~$ lsblk
  58. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  59. loop0 7:0 0 55.3M 1 loop /snap/core18/1885
  60. loop1 7:1 0 61.7M 1 loop /snap/core20/1026
  61. loop17 7:17 0 2.2M 1 loop /snap/gnome-system-monitor/148
  62. loop18 7:18 0 78.3M 1 loop
  63. loop19 7:19 0 260.7M 1 loop /snap/kde-frameworks-5-core18/32
  64. sda 8:0 0 3.7T 0 disk
  65. └─sda1 8:1 0 3.7T 0 part /home/mi // mount successfully
  66. sdb 8:16 0 931.5G 0 disk
  67. └─sdb1 8:17 0 931.5G 0 part /home
  68. nvme0n1 259:0 0 238.5G 0 disk
  69. ├─nvme0n1p1 259:1 0 487M 0 part /boot/efi
  70. ├─nvme0n1p2 259:2 0 59.6G 0 part [SWAP]
  71. └─nvme0n1p3 259:3 0 178.4G 0 part /

这样其实后来会发现一个问题:

  • 重启后 mount 挂载就会实效,又变回原来的 /home/data 目录了

解决方法:
写入 /etc/fstab 文件:

关于 /etc/fatab 文件:
磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。

关于挂载的限制:
1、根目录 / 是必须挂载的, 而且是优先于其他的 mount point 被挂载, 因为其他所有目录都是由根目录 / 衍生出来的

2、挂载点必须是 已经存在的目录

/etc/fstab 文件参数
图片.png
一共有 6 列
第一列: Device:
磁盘设备文件 或者该设备的 label 或 uuid

  • Label就是分区的标签,在最初安装系统是填写的挂载点就是标签的名字。

例如我们要查看 ** /dev/sda1 **这个设备的 uuid 和 label name
**_$ sudo dumpe2fs -h /dev/sda1 _**

**_mound 的 目标目录一定要是空的, 否则会直接崩~~~_**