前言
记得一开始入门Linux是因为在windows中安装ros太折腾了,虽然最终安装ok了(后来却没有去学习),但过程很不爽,一气之下就转战了ubuntu(2018年夏),真的时间不等人啊,使用这个系统,基本上就是工作在一个黑框下,配置着绿色的字体(嗯,原谅绿), 当然,为了简化日常操作,通过oh-my-zsh配置了自己的zsh(说好的折腾呢?),下面是自己的插件,plugins=(git zsh-autosuggestions wd extract z) ,就说一个extract吧,一个x基本就能解压所有压缩格式了,是不是。。。很方便?感兴趣的自己去搜搜吧,插件不要太多,就像vim一样,插件太多了,会适得其反。 当然值得一提的还是zsh-autosuggestions, 自知记性不太好,有的时候只是知道个模糊的开头,这个工具就可以大大的简化自己的日常操作,很是过瘾啊。 扯个题外话,git是非常值得拥有的工具,可以将自己的本地的文本免费的托管到github,即使换其他的电脑也不耽误事,很是方便。 也许多年之后返回来看一些东西,别有另一番的感觉呢?
另外值得推荐的工具就是you-get 了, 要学习很多视频,很多视频是值得收藏与学习的,用you-get可以从命令行中下载自己想要的视频,是不是很过瘾呢,感兴趣的自己搜一下吧,如果想下载其他的alias这个工具也是不错的。 突然又想到了个事,文件的权限问题,有时不要乱给文件赋予高级权限(比如随手sudo chmod +777 给一个文件,早晚得吃亏),万一那个文件是间谍咋整。。。。。
偶尔会去调试别人发布在github中的python程序(好奇心的驱使),安装需要依赖的包的时候以及管理python环境时anconda是个非常不错的选择。主要是方便管理环境,貌似在Windows里面不只是要把bin文件目录添加到环境变量中,还有其他的东西要添加,比较折腾. 还有比如you-get这类工具是对python的环境是有依赖的,所以了解ananconda还是能节省些时间,总不想在配置环境的时候就耽误很多时间吧。
远程ssh
ssh用起来是非常方便的,下面搬运yangbingdong博客里的内容。安装ssh
sudo apt install ssh |
查看启动成功: ps -e|grep ssh
, 如果看到sshd
那代表成功了, 如果没有, 执行:
sudo/etc/init.d/ssh start |
ssh的配置文件位于/etc/ssh/sshd_config
, 修改后需要重启ssh:
sudo /etc/init.d/ssh resart |
生成SSH密钥和公钥,在这里说明一点为什么要生成密钥和公钥(用自己的看法),如果经常远程操作一台电脑的话,每次都要输入密码,这个就比较费事,如果将这个公钥写入~/.ssh/authorized_keys中,就可以免密码登入了。生成SSH密钥和公钥可用如下指令
ssh-keygen -t rsa -C "your_email@youremail.com" |
默认的RSA
长度是2048位, 如果非常注重安全, 那么可以指定4096位的长度,剩下的基本一路Enter.
ssh-keygen -b 4096 -t rsa -C "your_email@youremail.com" |
说明
1, linux内核是操作系统的核心,分进程管理,储存管理,文件管理,设备管理和网络管理。进程管理:进程控制、进程同步、进程通信、死锁处理、处理机调度等。内存管理:内存分配、地址映射、内存保护与共享、虚拟内存等。 文件管理:文件存储空间的管理、目录管理、文件读写管理和保护等。设备管理:完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。
2, 用 / 代替 cd / ;用 .. 代替 cd .. ;用 …. 代替 cd ../..;用 ~ 代替 cd ~。复制ctrl shift c
3, 远程传输文件可以用scp指令,将文件/文件夹 从远程服务器拷至本地(,这里采用默认的端口,换端口用-P指令就行)
scp -r username@192.168.0.1:/home/username/remotefile.txt |
4, 找到重复文件并进行相关处理的工具rdfind,使用命令rdfind ∼/Downloads,结果存储到当前工作目录下一个名为 results.txt的文件中。可以在 results.txt 文件中看到可能是重复文件的名字。删除重复文件,就运行: rdfind -deleteduplicates true ∼/Downloads。
5, tree 工具。它能够以一种美观的方式展示目录、子目录及其中的文件。如果需要了解目录结构,尤其是在删除目录之前,这款工具正好能派上用场(自己的系统中无,需要安装)。
6, 递归下载抓取整个网站内容wget -r -p -k -np -p
: 下载所有用于显示 HTML 页面的图片之类的元素,-k: 在转换文件 X 前先将它备份为
X.orig,-np
: 不追溯至父目录。
7, df 和 du 这两个指令可以方便的查看磁盘或者是文件的的空间大小。
8, ‘>’会覆盖原有文件的内容,而’>>’会追加在文件的后面,比如添加一个新的路径,用了’>’然后source ~/.zshrc后,等着哭吧.
9, 使用ctrl-r搜索命令历史记录,反复按ctrl-r循环切换更多匹配,按Enter键执行找到的命令。当然,如果安装了 autosuggestions 这个插件,会自动显示出来,所以说是个非常推荐的zsh插件。
10, 使用ctrl-w删除最后一个单词;使用ctrl-u将当前光标中的内容删除回行的开头;ctrl -a将光标移动到行首;ctrl -e将光标移动到行尾;ctrl -k删除到行尾,ctrl -l 清除屏幕。
11, 返回到上一次的文件夹中可以使用cd -指令, 对于进程的树状形式可以使用指令pstree -p, 查看哪些用户在此电脑上一个w就O了,如果嫌一个指令太长,可以将那个指令通过alias简化,并输入到SHELL配置文件中(.bashrc,.zshrc)。
12, 超快的文件搜索工具Ag,并在vim的配置文件中输入let g:ackprg = ‘ag —vimgrep’, 这样搜索片段的时候会快的很多。
13, touch 创建多个文件比如 touch test_{1..100}.txt, 配合着seq命令使用,有很好的效果,比如 touch $(seq -f ‘vel%g.txt’ 1 10), 或者是中间加一个间隔touch $(seq -f ‘vel%g.txt’ 1 2 10),这个对于自己在做实物测试数据的时候起到了不少的帮助。
14, 常见的Linux顶层虚拟目录名及其内容
展开
\begin{table} |
这种分类,给自己编程带来了很多的便利,当然,写一两个函数时候当然无所谓,当函数比较多的时候,就有一点费劲了,将一些函数分类,比如专门存放输出数据的放在一起,方便后续编程来处理这些数据等等.
top 指令根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。显示的结果代表的意思:
展开
\begin{itemize} |
结束进程指令kill,kill 命令可通过进程ID(PID)给进程发信号。默认情况下, kill 命令会向命令行中列出的全部PID发送一个 TERM 信号。
展开
\begin{table} |
当然使用kill的一种好的方法就是配合着 ps 与grep, 通过查找特定进程来将程序关闭。
一般在Linux中绘制流程图会使用plantUML, 当然 ,还是为了提高些效率 ,记不得之前在哪写过关于这方面的东西了, 先不管了, 如果嫌弃自带的分辨率太低的话, 可以使用如下方式更改其分辨率的大小, 比如
scale x*y |
入手了MBP后,仍旧想使用自己的老年机(没错,快上大学的时候买的), 于是就想办法怎么去格式化启动盘,下面给出一种方式,在命令行下复制如下代码( 使用diskutil后发现自己的启动盘名称为disk2,其中U盘分了两个区,要不也不会有这段内容了, disk2前面就是格式化完成后的名字了), 话说这个还走了不少弯路。。。。
sudo gpt remove -i 1 disk2 |
这样的话,就可以把EFI分区给合并了。 然后再对其格式化后,输入如下的指令
sudo dd if=/Users/lsqyRobot/Downloads/archlinux-2020.01.01-x86_64.iso of=/dev/disk2 bs=1m |
其中 if 后面跟的是文件的下载路径,后面的就是挂载的u盘了,bs代表着写入的时间。 至于为什么这样做,肯定是有原因的,这个就是为老年机安装了linux mint后,又突发奇想,用了那么久的linux mint 自然想换换口味,就选择arch linux吧,至于分区挂载什么的,之前安装破解一些软件的时候就很熟了,所以想必对自己也不是什么难事。
SHELL 脚本编程
许多程序要求对shell脚本中的命令施加一些逻辑流程控制。有一类命令会根据条件使脚本跳过某些命令。这样的命令通常称为结构化命令(structured command)。
if-then 语句
最基本的结构化命令就是if-then语句。if-then语句有如下格式。
if command |
bash shell的if语句会运行if后面的那个命令。如果该命令的退出状态码(参见第11章)是0 (该命令成功运行),位于then部分的命令就会被执行。如果该命令的退出状态码是其他值, then 部分的命令就不会被执行,bash shell会继续执行脚本中的下一个命令。fi语句用来表示if-then 语句到此结束。
鉴于shell脚本不是一两句话就能写完的, 以后专门用一篇或几篇文章记录一下一些shell脚本的编写和使用;