优雅的使用Linux

系统安装

启动盘制作

通过rufus烧制官网镜像,注意根据自己系统的引导模式选择相应模式,不确定的,可以在windows中通过Win + R 快捷键调出“运行”对话框,输入“msinfo32”,确定,打开“系统信息”窗口查看。

分区

如果windows的引导正常,安装时可以选择与windows共存。如果未出现该选项,可以这么分区:

  1. 挂载点/;主分区;安装系统和软件;大小为30G;分区格式为ext4;
  2. 挂载点/home;逻辑分区;相当于“我的文档”;越大越好; 分区格式ext4;
  3. swap;逻辑分区;充当虚拟内存;根据内存情况判断,小内存就按等大分,16G及以上4G足矣;分区格式为swap
  4. /boot;引导分区;逻辑分区;一般推荐200M,但我建议800,可以不用频繁的去删除旧内核释放空间;分区格式为ext4;

bug处理

wifi/蓝牙失效

安装完成后WiFi和蓝牙没有显示,这是因为联想的锅,linux在硬件上关闭了wifi和蓝牙.可以如此施为:

rfkill list all
结果为:

Hard blocked:yes石锤了,由于硬件阻塞无法干预,而下方的模块2和3分别为可用的蓝牙和无线网卡模块。所以只要我们将上方的ideapad模块移除并加入黑名单就可以一劳永逸了。

sudo modprobe -r ideapad_laptop #移除被硬件关闭的无线模块
sudo gedit /etc/modprobe.d/ideapad.conf #为了一劳永逸,将刚刚移除的模块加入黑名单

在打开的文件中输入blacklist ideapad_laptop

最后别忘了无线网卡的还软件阻塞着呢,所以需要启用它:

大功告成。

:::tips

我在使用过程中出现了双系统无线模块丢失的情况,一番折腾后发现了解决办法:

开闭下bios中的无线开关即可解决问题。具体是:重启进bios,找到无线开关,无论当前状态,改变后保存退出,重启后重复一次。

:::

显卡驱动/无法关机

集显的锅,禁用集显,安装独显驱动即可

  1. 卸载掉原来的nvidia驱动

    sudo apt-get autoremove --purge nvidia-*

  2. 打开配置文件,禁用nouveau

    sudo gedit /etc/modprobe.d/blacklist.conf

  3. 禁用nouveau第三方驱动,在最后一行添加

    blacklist nouveau

  4. 执行或者重启后执行,没有输出就ok

    lsmod | grep nouveau

之后有两种方式进行安装:

  • 打开软件与更新->附加驱动进行驱动安装,较为受限,可选驱动与勾选的源有关,往往看不到较新的驱动。
  • 通过终端直接添加驱动对应源进行安装
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-410
  1. 重启后查看当前显卡驱动版本:

    cat /proc/driver/nvidia/version

开机报错处理

日常开机都会报几个无伤大雅的错,既然解决不了,干脆屏蔽了。

sudo gedit /etc/default/apport
# enabled=1改为enabled=0

常规配置

更换软件源

  • 安装完成后的第一件事就该是更换软件源。
  • 打开系统设置->系统->软件和更新->Ubuntu软件,根据最佳服务器的测试结果选择,不过一般选择清华或者阿里云的即可,博主根据实际情况选择的cn99的源。

关闭时等待更新软件信息完毕即可。

  • 如果出现更新源失败,点开细节查看错误提示。首次更新源报错大概率是更新的源有问题,编辑/etc/apt/sources.list,把开头有cdrom://的那行前面加上#注释掉,同时在软件和更新->其他软件中取消勾选cdrom的源。如果还有问题,那就根据错误提示进终端取得root权限将/etc/apt/sources.list.d中对应源删除。
  • 参考:下载仓库信息失败

输入法

下载搜狗输入法

通过super+A组合键呼出应用列表,选择fcitx配置,将键盘-汉语调整至第一位,搜狗拼音放在第二位。其他删除。

fcitx配置的优先级是高于搜狗自己的设置的,所以,如果你发现自己在搜狗里的设置没有生效,可以进fcitx配置里看看是不是冲突了。比如我在搜狗里设置了按shift切换中英文,但fcitx配置里默认是按shift切换输入法,于是....

快捷键设置

  • 长按super键(微软的徽标键)会显示常用快捷键。
  • Ctrl+Alt+方向键可以快速切换窗口

进入系统设置->硬件->键盘->快捷键进行设置,如果设置后尝试无效,可能是该快捷键已被占用。

代理配置

采用shadowsocks+chrome的proxy插件方案。

shadowsocks安装

sudo apt-get update
sudo apt-get install python-pip #安装pip
sudo pip install shadowsocks #出现警告就加上-H参数重试

喜欢图形化界面的可以将shadowsocks替换为shadowsocks-qt5:

sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

配置shadowsocks

在/home路径下新建配置文件,qt5类似。

sudo gedit shadowsocks.conf

添加如下信息

{
"server":"server_IP", #服务器IP
"server_port":server_port,#服务器监听端口
"local_address":"127.0.0.1",
"local_port":1080,
"password":"ss_pswd",#服务器ss设置的密码
"timeout":300,
"method":"RC4-MD5" #服务器ss加密的方式
}

运行客户端ss服务,start表示开启服务,stop表示关闭服务

sudo sslocal -c /home/shadowsocks.conf -d start

注:报错的话检查配置文件的路径是否正确。比如在我的电脑上就应该是:

sudo sslocal -c /home/eastzzp/shadowsocks.conf -d start

每次服务器变动,都需要将服务先关闭再开启

proxy插件配置

  1. 下载chrome插件Proxy SwitchyOmega,由于此时还没有代理,所以我们通过github下载

    链接
  2. chrome打开chrome://extensions/.将下载的插件拖进去安装
  3. 在菜单栏找到插件按钮,点击选项按钮,在情景模式中添加socks5代理,添加本地代理服务器127.0.0.1,代理端口1080.
  4. 遇到需要代理的网址,点击右上角插件按钮,然后选择刚刚添加的情景模式,同时添加条件,方便下次自动代理.
  5. ubuntu服务器端配置参考:Ubuntu 16.04下Shadowsocks服务器端安装及优化

全局代理

完成以上步骤已经可以用浏览器代理上网了。但是用终端时还是直接连接,要实现终端也进行代理,一般有两种方式,一种是使用polipo,一种是使用proxychains。本文使用的是后者。

  • 安装proxychains

    sudo apt-get install proxychains

  • 配置proxychains.conf

    sudo vim /etc/proxychains.conf

:::info

将文件内容末尾的socks4 127.0.0.1 9050 前面加上井号# 注释,然后在下面加上socks5 127.0.0.1 1080 ,保存并退出。

完成,之后在执行需要代理上网的命令时都在前面加上proxychains。

:::

参考:Ubuntu实现全局代理

舒适区

ieaseMusic

网易云第三方客户端,不是原版胜似原版。

下载工具

uget

sudo apt-get install uget

占用率插件安装

Indicator sysmonitor是在顶栏显示CPU和内存使用一个有用的工具。它还显示栏的各种温度传感器。它也允许用户运行有自己的命令展会上的顶栏的输出。Indicator sysmonitor可以与GNOME(ubuntu18)面板和Unity(Ubuntu16)正常工作。

安装

sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor

启动

  • 通过终端,Ctrl C退出后即可后台

    indicator-sysmonitor &
  • 通过app

    通过super键呼出搜索框,输入system,即可看到System Monitor Indicator,点击即可运行

配置
在顶栏插件位置右键点击Preference,General处勾选开机自动运行,Advanced处自定义显示效果。结束后保存。

全局呼出

安装Albert

按键重映射

xkeysnail
安装后,在用户目录新建xkeysnail.py,打开后输入以下内容:

from xkeysnail.transform import *

define_keymap(None, {
# Ctrl+Alt+j/k to switch next/previous tab
K("M-h"): K("left"),
K("M-j"): K("down"),
K("M-k"): K("up"),
K("M-l"): K("right"),
})

该方案是将Alt+HJKL映射为左下上右四个方向键。

剪贴板增强

copyQt

安装后进行如下配置:

  • 剪贴板功能勾选

  • 快捷键设置

截图增强

  • 安装

Flameshot,该软件可以在截图后完成相应的编辑。

sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/Vitzy/xUbuntu_16.04/ /' > /etc/apt/sources.list.d/home:Vitzy.list"
sudo apt-get update
sudo apt-get install flameshot
  • 配置

将默认的Prtsc设为Flameshot的快捷键。
到Settings -> Devices -> Keyboard ,右側捲動到最下面有個+號,按下後

  1. Name: flameshot
  2. Command: /usr/bin/flameshot gui
  3. Shortcut: 點選Set Shortcut...按鈕後,按下鍵盤上的PrtSc鍵

安装mac主题

参考:

打造完美的 Ubuntu16.04

不美翻怎么开发!Ubuntu 16.04 LTS深度美化!

Linux基础

可以参考菜鸟教程:
Linux文件与目录管理
Linux用户管理
Linux磁盘管理
常见的shell命令都可以在里面找到。

目录结构

根目录

Linux的根目录在shell中一般用 / 来表示,包含我们在安装系统时划分的所有分区。

  • 显示根目录下所有目录/分区:

  • 显示所有分区信息(Linux):

  • 根目录的磁盘视图:

:::info

从分区信息的最后一列挂载点可以看出,所有的分区都是挂载在根目录下 / 下。同时根目录下的目录列表也包含了所有分区的二级挂载点。
在Linux的磁盘视图中,根目录就是 计算机 。

:::

用户区域

用户的默认活动区域,软件的默认安装位置也是这里,shell中一般用 ~ 表示。值得注意的是,用户区域是 home 的子目录,然而在Linux的磁盘视图中,用户文件夹的标注是这样的:

这是误导性的,左上角的“Home”改为当前用户的用户名更为合适。

打印用户区域的目录结构,以我的系统为例:


:::info

我的用户名是eastzzp,这两种方式列出的文件目录与上面的磁盘视图也是吻合的。

:::

Shell基础

SHELL 基本命令汇总

终端

  • show default shell: echo $SHELL
  • list all available shell: cat /etc/shells
  • select default shell: chsh
eastzzp@eastzzp-pc:~$ chsh
# Enter the new value, or press ENTER for the default
# Login Shell [/bin/sh]:
# switch to bash
eastzzp@eastzzp-pc:~$ /bin/bash
  • switch to bash: exec bash
  • switch to zsh: exec zsh

ls

list directory

  • show root directory: ls /
  • show user directory: ls ~
  • show current directory: ls . or ls

which

show where the thing is

磁盘管理

  • 打印分区容量信息
eastzzp@eastzzp-pc:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hdc2 9.5G 3.7G 5.4G 41% /
/dev/hdc3 4.8G 139M 4.4G 4% /home
/dev/hdc1 99M 11M 83M 12% /boot
tmpfs 363M 0 363M 0% /dev/shm
  • 打印目录容量信息
eastzzp@eastzzp-pc:~$ du -h ~/图片
76M /home/eastzzp/图片/wallpapers
64K /home/eastzzp/图片/local_pic
76M /home/eastzzp/图片

:::info

-h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;详见磁盘管理所附链接。

:::

  • 磁盘操作

fdisk:分区表操作
mkfs:磁盘格式化
mount:磁盘挂载与卸除
详见菜鸟教程链接。

source

也称"点命令",也就是一个点符号 . ,是bash的内部命令。它的作用是使shell读入指定的shell文件并依次执行文件中的所有语句。通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

一般而言,以下三个命令的效果是相同的,但存在细微的差别

  • source filename

等价于 . filename 。简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

  • sh filename

重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

  • ./filename

./filename是因为当前目录没有在PATH中,所以”.”是用来表示当前目录的。当待执行的文件具备执行权限时, sh filename 与 ./filename 的效果是一样的的。

apt/apt-get

apt是apt-get的替代者,基本上能用apt-get的地方都可以用apt。

  • 包管理

安装包:sudo apt-get install package 
自动卸载不需要的包:sudo apt autoremove 
重新安装包:sudo apt install package - - reinstall
修复安装:sudo apt -f install
删除包:sudo apt remove package
删除包,包括删除配置文件等:sudo apt remove package - - purge
清理无用的包:sudo apt clean && sudo apt autoclean
检查是否有损坏的依赖:sudo apt-get check
搜索包:apt-cache search package
获取包的相关信息,如说明、大小、版本等:apt-cache show package
了解使用依赖:apt-cache depends package
查看该包被哪些包依赖:apt-cache rdepends package

  • 更新源

更新源:sudo apt-get update
更新已安装的包:sudo apt-get upgrade
升级系统:sudo apt-get dist-upgrade
使用 dselect 升级:sudo apt-get dselect-upgrade

环境变量管理

Ubuntu下的环境变量配置文件

  • /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
  • /etc /environment:在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。
  • ~/.profile :  在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
  • /etc/bashrc : 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
  • ~/.bashrc : 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 

    :::tips

    上面的bashrc等文件是为bash服务的,如果你的终端是zsh,那么需要修改就是home中的 .zshrc 文件

    :::

环境变量的设置方法

  • 用户主目录下的.profile或.bashrc文件(推荐)
# 登录到你的用户(非root),在终端输入:
$ sudo gedit ~/.profile(or .bashrc)
# 可以在此文件末尾加入PATH的设置如下:
export PATH=”$PATH:your path1:your path2 ...”
# 保存文件,注销再登录,变量生效。

该方法添加的变量仅对当前用户生效。

  • 系统目录下的profile文件(谨慎)
# 在系统的etc目录下,有一个profile文件,编辑该文件:
$ sudo gedit /etc/profile
# 在最后加入PATH的设置如下:
export PATH=”$PATH:your path1:your path2 ...”
# 该文件编辑保存后,重启系统,变量生效。

该方法添加的变量对所有的用户都有效。

  • 系统目录下的 environment 文件(谨慎)

在系统的etc目录下,有一个environment文件,编辑该文件。在 PATH="<......>" 中添加自己的path即可,比如 PATH="<......>:your path1:your path2 …"  。
重启对所有用户生效。

  • 终端临时修改
sudo export PATH="$PATH:your path1:your path2 …"

立即生效,但用户注销或系统重启后设置变成无效,适合临时变量的设置。 

:::info

方法二和三的修改需要谨慎,尤其是通过root用户修改,如果修改错误,将可能导致一些严重的系统错误。因此推荐使用第一种方法。

:::

系统备份

参考博客:Ubuntu系统备份
参考博客:为以下代码来源

# 备份
$ sudo su
$ cd /
$ tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/media /
# 还原
# 删除该根目录下的所有文件
$ sudo rm -rf /media/磁盘名称/分区名称*
将备份文件”backup.tgz”拷入该分区;
$ sudo cp -i backup.tgz /media/磁盘名/分区名sdaX
进入分区并将压缩文件解压缩,参数x是告诉tar程序解压缩备份文件。
$ sudo tar xvpfz backup.tgz
重新创建那些在备份时被排除在外的目录;
$ sudo mkdir proc lost+found mnt sys media

生产环境配置

anaconda安装

  • 下载

百度云盘链接:  提取码: j9sa,anaconda3-5.3.1-Linux-64.sh
科大源下载

  • 安装

由于是sh文件,所以通过bash或者sh可以直接安装。一路yes,最后会安装在home中。

  • 添加环境变量
# 将anaconda的bin目录加入PATH
echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc # 更新bashrc以立即生效
source ~/.bashrc
  • 检验

可以通过 conda --version 或 python --version 检验安装是否正确。

  • 更换conda源

由于清华园未获授权已停止更新,所以建议更换为科大的源。

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

pycharm

优雅的使用Linux的更多相关文章

  1. 如何优雅地删除 Linux 中的垃圾文件

    不知道大家是否也跟我一样,是一只要把的自己电脑文件安排的条理有序,把没用的文件会及时删掉的程序猿呢?如果是的话,那么我们可以愉快地探讨下文章的内容.如果不是的话,你也可以留下来凑凑热闹嘛(>-& ...

  2. 最佳 Linux 发行版汇总

    Linux入门UbuntuUbuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统.他是世界上最流行的发行版之一,每次发行,它都有提升.最新发行版为桌面.移动及其桌面 ...

  3. 优雅退出在Golang中的实现

    背景 为什么需要优雅关停 在Linux下运行我们的go程序,通常有这样2种方式: 前台启动.打开终端,在终端中直接启动某个进程,此时终端被阻塞,按CTRL+C退出程序,可以输入其他命令,关闭终端后程序 ...

  4. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  5. Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里

    这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争.最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间.学习吧又不想学习,看电视娱乐吧也 ...

  6. linux下如何优雅的挂载一个外界设备(比如优盘)

    最近从事linux,实验室一个破服务器,能连上网,但是输入这样的命令:        yum -y install gcc yum -y install gcc-c++ ,居然说是没有这样的镜像,也罢 ...

  7. Linux 桌面玩家指南:06. 优雅地使用命令行及 Bash 脚本编程语言中的美学与哲学

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  8. Linux系统下如何优雅地关闭Java进程?

    资料出处: http://www.sohu.com/a/329564560_700886 https://www.cnblogs.com/nuccch/p/10903162.html 前言 Linux ...

  9. 在 Linux 如何优雅的统计程序运行时间?恕我直言,你运行的可能是假 time

    最近在使用 time 命令时,无意间发现了一些隐藏的小秘密和强大功能,今天分享给大家. time 在 Linux 下是比较常用的命令,可以帮助我们方便的计算程序的运行时间,对比采用不同方案时程序的运行 ...

随机推荐

  1. 解决python3 pip安装、更新及yaml安装

    问题:python3.6版本使用pip安装第三方库时总是报错 电脑中存在多个python版本写成对应pip版本 解决:pip3 install pyOpenSSL -i http://pypi.dou ...

  2. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句

    BIML 101 - BIML 快速入门教程 第一节 连接数据库执行SQL语句 本小节将用BIML建一个简单的可以执行的包. 新建一个biml文件,贴入下面的代码 1 <Biml xmlns=& ...

  3. JAVA项目中文件重命名方式

    可以直接改类名,之后eclipse会报错: 点击×号会给出解决方案: 注意:不能通过右击servlet文件直接重命名.否则运行之后程序会报错(文件路径不对之类的)

  4. 2018-2019-2 网络对抗技术 20165321 Exp3 免杀原理与实践

    1. 实践内容(4分) 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellco ...

  5. 快速排序 之添加复合插入排序和原始序列取中值左pivot

    quicksort中,当n小于一定值时,排序效率就比直接插入排序底了,所以,此时就不要再递归下去了,直接插入排序好了:快速的原理就是因为折半递归,所以初始pivot应该有个好一点的选择,这里在原序列左 ...

  6. live Templates 活动模板. 配置完之后,就可以快速编码-代码块

    配置:live Templates 活动模板. 配置完之后,就可以快速编码-代码块. 输入startflask敲回车:   就会生成代码:   怎么做到的呢? 如下:   注意第七步: 原本不是cha ...

  7. C#中类成员的执行顺序

    先进行细分: 类的成员分为:字段.属性.方法.构造方法 成员的修饰符:静态成员.实例成员 层次结构:父类.子类 先不考虑继承关系,执行顺序为: 静态字段静态构造方法实例字段实例构造方法属性和方法是在调 ...

  8. spring boot入门小案例

    spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...

  9. oracle - 查询某些表是空白,需要提升权限后,才可查询出数据

    begin fnd_global.apps_initialize(user_id => 1150 ,resp_id => 50738 ,resp_appl_id => 660 ); ...

  10. C++ cout格式化输出

    表1:C++ 流操纵算子 流操纵算子 作  用 *dec 以十进制形式输出整数 常用 hex 以十六进制形式输出整数 oct 以八进制形式输出整数 fixed 以普通小数形式输出浮点数 scienti ...