ubuntu使用

本文最后更新于:5 小时前

Linux基础

img

快捷键:

tab 自动补全

ctrl + l 清理终端显示

ctrl + c 终止当前操作

新建mkdir a.txt

touch a.py

查看

​ 目录:ls

pwd

​ 文件内容:cat a.txt

切换cd /home

cd -

cd ~

编辑vi a.py

a/i 编辑模式

w 写入

q 退出

!强制

显示:至终端:echo “666”

​ 写入文件:echo "666" > /a

复制cp a.py /a/ 移动

cp a.py /a/b.py 移动并改名

cp -r 复制目录

cp -p 复制文件并保持属性不变

cp -a 相当于 -pdr 的意思(保留权限,复制软链接本身,递归复制 )

​ 备份文件加后缀.bak

剪切mv /home/Desktop/a /tmp/a

删除rm

-r 删除目录

-f 取消提示

查找find /tmp/ -type f -name "*.txt" 找出所有以 .txt 结尾的文件

​ which:查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。

1
2
3
4
5
6
7
8
9
语法
which 【参数】【文件】

参数:

-n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w  指定输出时栏位的宽度。
-V  显示版本信息。

alias:别名

seq:seq命令用于产生从某个数到另外一个数之间的所有整数。

1
2
3
4
5
6
7
8
语法
seq [选项]... 尾数
seq [选项]... 首数 尾数
seq [选项]... 首数 增量 尾数
参数
-f, --format=格式 使用printf 样式的浮点格式
-s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n)
-w, --equal-width 在列前添加0 使得宽度相同

scp:Linux scp命令用于Linux之间复制文件和目录。scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

1
2
3
4
5
6
7
8
9
10
11
语法
scp 【可选参数】 本地源文件 远程文件标记
参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
实例
#复制远程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/

du:Linux du命令用于显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。

1
2
3
4
用法
du 【参数】【文件或目录】-s 显示总计-h 以k,M,G为单位显示,可读性强
#什么都不跟,代表显示当前目录所有文件大小
du

top:inux的top指令用于实时显示process的动态

head、tail

1
2
3
4
head显示文件前几行,默认前10行
tail显示文件后几行,默认后10行
#显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21

grep:全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

1
2
3
4
5
6
7
语法:
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择
--color = auto : 给关键词部分添加颜色

管道命令:Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。

sh:命令启动shell(.sh文件)脚本,避免./运行无权限(没有配置在环境变量(PATH)中)

==xargs==:给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

-e flag 注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。

-t 表示先打印命令,然后再执行。

-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
实例

xargs 用作替换工具,读取输入数据重新格式化后输出。

定义一个测试文件,内有多行文本数据:

# cat test.txt

a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z

多行输入单行输出:

# cat test.txt | xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z

-n 选项多行输出:

# cat test.txt | xargs -n3

a b c
d e f
g h i

-d 选项可以自定义一个定界符:

# echo "nameXnameXnameXname" | xargs -dX

name name name name

结合 -n 选项使用:

# echo "nameXnameXnameXname" | xargs -dX -n2

name name
name name

xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

# cat arg.txt | xargs -I {} ./sk.sh -p {} -l

-p aaa -l
-p bbb -l
-p ccc -l

参考:菜鸟教程

sed

参考:菜鸟教程

awk

参考:菜鸟教程

==Shell特殊变量==:Shell $0, $#, $*, $@, $?, $$和命令行参数

参考:博客园

一、换源

  1. 首先需要使用root用户
1
sudo -s
  1. 进行源码备份.
1
cp /etc/apt/sources.list /etc/apt/sources.list.bak
  1. 进行源列表的修改
1
vi /etc/apt/sources.list

将sources.list中的内容提换如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ubuntu 18.04

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
  1. 执行更新列表
1
sudo apt-get update

6.如出现以下问题,把软件源里的https改成http就行了

image-20220309132822788

成功如图所示

image-20220309133018142

二、vim编辑器使用

第一、升级Python 3.6 至 3.7

1、更新镜像

1
2
sudo apt update
sudo apt install software-properties-common

Select Code

Copy

2、将Deadsnakes PPA添加到源列表

1
sudo add-apt-repository ppa:deadsnakes/ppa

Select Code

Copy

3、安装Python3,7

1
sudo apt install python3.7

Select Code

Copy

实际上已经安装到新版本的3.7,我们可以看看是不是:

1
python3.7 --version

Select Code

Copy

4、将Python 3.6和Python 3.7添加到替代项

1
2
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

Select Code

Copy

5、更新指向

1
sudo update-alternatives --config python3

Select Code

Copy

然后我们再去检查就是已经是Python3.7新版本默认。

第二、直接安装Python3.7并设置默认

1、升级包索引和软件

1
apt update -y

Select Code

Copy

2、安装编译需要的软件包

1
apt install build-essential zlib1g-dev libbz2-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev -y

Select Code

Copy

3、下载版本和编译安装

目前最新版本是3.9,但是我们还是不要用到最新版本,比如常用的就是3.7或者3.8.

1
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz

Select Code

Copy

然后解压

1
tar -zxvf Python-3.7.9.tgz

Select Code

Copy

编译安装

1
2
3
4
cd Python-3.7.9
./configure --prefix=/usr/local/src/python37
sudo make
sudo make install

Select Code

Copy

4、建议软连接

1
2
ln -s /usr/local/src/python37/bin/python3.7 /usr/bin/python3.7
ln -s /usr/local/src/python37/bin/pip3.7 /usr/bin/pip3.7

Select Code

Copy

如果我们希望替代之前的

1
2
rm -rf /usr/bin/python3
ln -s /usr/local/src/python37/bin/python3.7 /usr/bin/python3

三、更改python版本

修改Python软链接

1.查看使用的版本

1
$ python --version

2.查看当前所使用版本的位置

1
2
3
$ which python
$ whereis python
查看所有python版本所在位置

3.如果第二步结果是

1
$ /usr/bin/python

则直接删除即可

1
$ sudo rm /usr/bin/python

如果不在以上文件夹中,则修改名字,不要删除,如下

1
$ sudo mv /home/ustc/anaconda3/bin/python /home/ustc/anaconda3/bin/python3.6.4

4.创建新的软链接

1
$ sudo ln -s /usr/bin/python2.7 /usr/bin/python

5.查看结果

1
$ python --version

四、root权限

一、获得永久root权限

1.为root设置初始密码

(1)登录系统,打开终端,输入命令:

1
2
$ sudo passwd root
为root用户设置密码

(2)设置root密码(建议简单点,没必要那么复杂);

(3)重复root密码;

2.修改/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf文件内容

终端输入:

1
sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

打开文件,在文件末尾加入如下两行,完成后保存并关闭(注意这一步,千万不要删除文件中原本的两行内容);

1
2
greeter-show-manual-login=true
all-guest=false

img

3.进入/etc/pam.d文件夹下,修改gdm-autologin和gdm-password文件内容(参考第2步的命令):

gdm-autologin文件注释掉auth required pam_success_if.so user!=root quiet_success这一行

gdm-password文件注释掉auth required pam_success_if.so user!=root quiet_success这一行

说明:注释只需要在这一行前加"#"即可,例如:

1
#auth required pam_success_if.so user!=root quiet_success

4.修改/root/.profile文件

终端输入:

1
sudo gedit /root/.profile

打开文件,将最后一行改为以下:

1
tty -s && mesg n || true

保存并关闭,重启,重启之后选择“未列出”输入账号root和密码;

二、临时root权限

法一

1
$ sudo su

法二

1
2
3
$ sudo passwd
更新密码
$ su

五、报错处理

(一)Could not get lock /var/lib/dpkg/lock-frontend

使用apt安装时报错:

image-20220309135156957

解决方案:

法一:

1
2
找到apt进程
$ ps -A|grep apt

如果显示

1
5873 ?    00:00:01 apt-get

就执行

1
2
3
4
kill掉找到的进程
$ sudo kill -9 processnumber(进程号)

$ sudo kill 5873

法二:执行

1
sudo killall apt apt-get

如果提示没有apt进程:

apt: no process found
apt-get: no process found

依次执行删除lock文件:

1
2
3
4
5
6
7
# 移除 /var/lib/dpkg/ 文件夹下的锁定文件
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
# 强制重新配置软件包
sudo dpkg --configure -a
sudo apt update