0%

SMILI 安装说明

安装依赖

1
2
3
$ sudo apt install x11*
$ sudo apt install libxt-dev
$ sudo apt install libopenblas-dev

安装 OpenBLAS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Clone the current repository
git clone https://github.com/xianyi/OpenBLAS

# Compile and install
# macOS MacPorts users may not use USE_OPENMP=1 option, and need to omit it.
cd OpenBLAS
make USE_OPENMP=1 CC=gcc FC=gfortran
make PREFIX="~/local" install

# 确认是否安装正确
# 是否有输出
$ pkg-config --debug openblas

# 如果没有,增加pkg的path
export PKG_CONFIG_PATH=~/local/lib/pkgconfig:$PKG_CONFIG_PATH

安装FFTW3

1
2
3
4
5
$ apt install fftw*

# 确认是否安装正确
# 是否有输出
$ pkg-config --debug fftw3

安装 FINUFFT

1
2
3
4
# 下载源码
$ cd ~/local
$ git clone https://github.com/flatironinstitute/finufft
$ cd finufft

准备make.inc文件,内容如下:

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
# Compilers
CXX=g++
CC=gcc
FC=gfortran

# (compile flags for use with GCC are as in linux makefile)
CFLAGS +=

# If you're getting warning messages of the form:
# ld: warning: object file (lib-static/libfinufft.a(finufft1d.o)) was built for
# newer OSX version (10.13) than being linked (10.9)
# Then you can uncomment the following two lines with the older version number
# (in this example -mmacosx-version-min=10.9)
#
#CFLAGS += "-mmacosx-version-min=<OLDER OSX VERSION NUMBER>"

# if you are macOS homebrew users, uncomment this.
# (assuming that /usr/local is your homebrew's PREFIX)
#CFLAGS += -I src -I/usr/local/include
#LIBS += -L/usr/local/lib

# if you are macOS MacPorts users, uncomment this.
# (assuming that /opt/local is your MacPorts' PREFIX)
#CFLAGS += -I src -I/opt/local/include
#LIBS += -L/opt/local/lib

# Your FFTW3's installation PREFIX
CFLAGS += -I$HOME/local/include
LIBS += -L$HOME/local/lib

# You can keep them
FFLAGS = $(CFLAGS)
CXXFLAGS = $(CFLAGS) -DNEED_EXTERN_C

# OpenMP with GCC on OSX needs following...
OMPFLAGS = -fopenmp
OMPLIBS = -lgomp
# since fftw3_omp doesn't work in OSX, you need to uncomment this
#FFTWOMPSUFFIX=threads

开始编译库

1
$ make lib

新建finufft.pc文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# This is an example pkg-config file. Here is an brief instruction.
# (1) Please change finufftdir depending on your install directory.
# (2) please change its filename to finufft.sample.pc and
# copy to a directory specified in $PKG_CONFIG_PATH
finufftdir=$(HOME)/local/finufft
libdir=${finufftdir}/lib-static
includedir=${finufftdir}/include

Name: FINUFFT
Description: Flatiron Institute Nonuniform Fast Fourier Transform libraries
Version: github
Libs: -L${libdir} -lfinufft
Cflags: -I${includedir}

确认是否安装完毕

1
2
3
4
5
6
# 确认是否安装正确
# 是否有输出
$ pkg-config --debug finufft

# 如果没有,增加pkg的path
export PKG_CONFIG_PATH=~/local/finufft/:$PKG_CONFIG_PATH

安装SMILI

1
2
3
4
5
6
# Clone the repository
$ git clone https://github.com/astrosmili/smili
$ cd smili
# 通过conda创建虚拟环境,不然编译会有问题
$ ./configure
$ make install

我们编程吧 集锦

BOOK

目前共分享了** 19 ** 个技巧,详细参考: BOOK 集锦

C

目前共分享了** 116 ** 个技巧,详细参考: C 集锦

CPP

目前共分享了** 16 ** 个技巧,详细参考: CPP 集锦

GIT

目前共分享了** 105 ** 个技巧,详细参考: GIT 集锦

LINUX

目前共分享了** 417 ** 个技巧,详细参考: LINUX 集锦

MAC

目前共分享了** 2 ** 个技巧,详细参考: MAC 集锦

PGPLOT

目前共分享了** 86 ** 个技巧,详细参考: PGPLOT 集锦

PYTHON

目前共分享了** 60 ** 个技巧,详细参考: PYTHON 集锦

MATPLOTLIB

目前共分享了** 1 ** 个技巧,详细参考: MATPLOTLIB 集锦

QT

目前共分享了** 3 ** 个技巧,详细参考: QT 集锦

VIM

目前共分享了** 50 ** 个技巧,详细参考: VIM 集锦

后记

目前共分享了** 1040 个技巧,平均每天 0.17 **个。持续更新中,欢迎来访。

Summary Plot

Linux最有趣的几个命令

仅个人想法,会持续不间断更新和改进。

这次介绍一些好玩有趣的命令,不过说实话,实用性倒不是很大,纯粹好玩,给单调的命令行界面增加了一些童趣和欢乐。

命运的小火车sl

发现这个命令是在输入ls命令的时候,一不小心敲反了,直接命运的小火车开始跑了起来。

sl 是一个 “Steam Locomotive” 的缩写,它会显示一个老式的蒸汽火车在终端中穿梭。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ sl


( ) (@@) ( ) (@) () @@ O @ O @ O
@)




______ ___________
\__I_I_____===__|_________|
______/ | | =|___ ___| _________________
| | | ||_| |_|| _| \_____A
__--------------------| [___] | =| |
__|_____/[][]~\_______| | -| |
-I_____I [][] [] D |=======|____|________________________|_
=====O=====O\ ____Y___________|__|__________________________|_
|| || |_____/~\___/ |_D__D__D_| |_D__D__D_|
/ \__/ \__/ \_/ \_/ \_/ \_/ \_/


点亮终端的艺术之光figlet

在Linux的世界中,figlet是一个神奇的命令,可以将文字艺术化.

特别适合作为标题、口号或者问候语,还有很多软件程序的招呼语,也可以用这个来实现。

比如:

1
2
3
4
5
6
7
$ figlet HELLO          
_ _ _____ _ _ ___
| | | | ____| | | | / _ \
| |_| | _| | | | | | | | |
| _ | |___| |___| |__| |_| |
|_| |_|_____|_____|_____\___/

活灵活现的终端:发掘cowsay

cowsay顾名思义就是一头牛为你加持,一款让命令行界面生动有趣的工具。

cowsay 可说话、可思考,与fortune加持更可以变为一头睿智的牛。

该命令接受一个文本字符串,并输出一个牛说话的图形。

下面是一头牛在说它喜欢 Linux:

1
2
3
4
5
6
7
8
9
$  cowsay I love linux.
_______________
< I love linux. >
---------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

探索Linux世界的智慧——fortunes命令

在Linux中,有一条神奇的命令连接着智慧与幽默,那就是fortunes命令。

看似普通的指令,背后却藏匿着千言万语,无论是名人箴言还是妙趣横生的笑话,在这里都能找到它们的踪迹。

另外最重要的,还可以根据自己的需求进行增删,目前就用基于唐诗宋词的库。

fortune并非只是简单的一句话,而是承载着古今中外智慧的涌泉。

每次执行,它都会带来截然不同的感受。或许是一位哲人的深刻格言,或是一句调皮的笑话,或者唐诗,或者宋词,与先贤对话,岂不快哉。

最简单的方法就是把这个命令,加到.bashrc文件中,每次启动,总会有触动。

1
2
3
4
5
6
7
8
9
10
$ fortune 
何以称英雄?识以领其先

    - 清·袁枚
$ fortune
一件作品的固有力量从来不会被长期地埋没或禁锢。一件艺术品可能被时间遗忘,可能遭到查禁,可能被埋进棺材,但威力强大的东西总要战胜没有过大前途的东西。

    - 茨威格
$ fortune
Yow! We're going to a new disco!

缤纷绚烂的终端体验:探索lolcat

lolcat是一款让终端从黑白灰变得缤纷多彩的神奇工具。

通过将文字渲染成彩虹般的颜色,让你的终端充满欢乐与活力。

可以把这个命令替换掉cat,这样你的内容都灵动了起来

比如lolcat /etc/resolv.conf会生成如下信息:

进入数字的魔幻世界:探秘cmatrix

来到黑客帝国的命令cmatrix,这不仅仅是一串字符在终端中的运动,它仿佛是数字的舞蹈,变幻着无穷的图案。从绿色的数字雨到模拟Matrix电影的效果,cmatrix让我们进入了数字的奇妙世界。

显示系统风貌的screenfetch命令

screenfetch命令的神奇之处在于其简单而又直观的功能,该命令能够快速地收集系统信息并以一种富有个性的方式展示出来。

从使用的发行版到内核版本,再到处理器和内存,一目了然地展现系统的全貌。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ screenfetch
./+o+- oper@localhost
yyyyy- -yyyyyy+ OS: Ubuntu
://+//////-yyyyyyo Kernel: aarch64 Linux 6.4.16-linuxkit
.++ .:/++++++/-.+sss/` Uptime: 33m
.:++o: /++++++++/:--:/- Packages: 134
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.1.16
.:+o:+o/. `+sssoo+/ Disk: 32G / 59G (57%)
.++/+:+oo+o:` /sssooo. CPU: 12x Apple
/+++//+:`oo+o /::--:. RAM: 877MiB / 7844MiB
\+/+o+++`o++o ++////.
.++.o+++oo+:` /dddhhh.
.+.o+oo:. `oddhhhh+
\+.++o+o``-````.:ohdhhhhh+
`:o+++ `ohhhhhhhhyo++os:
.o:`.syhhhhhhh/.oo++o`
/osyyyyyyo++ooo+++/
````` +oo+++o\:
`oo++.

Linux最危险的几个命令

仅个人想法,会持续不间断更新和改进。

Linux系统中的命令最美妙也最危险。

如果几个操作系统(Windows/MacOSX/Linux)的危险水平有段位,那么Linux应该首当其冲。

如若使用不当,轻则伤筋动骨摔键盘,重则历年数据烟消云散。

本文本着大家熟悉其危险性,尽量避免一些误操作。

为什么Linux最危险呢?那主要是因为root 用户对系统具有绝对的操作权限,可以执行任何命令、任何操作,所以会产生任何后果。

所以在以 root 用户身份进行操作时,尤其一定要特别小心。

如果不确定命令的执行结果,可以在虚拟环境线操作一下,再在生产环境执行。

危险命令介绍

如果单纯按照熟悉或者段位来讲,rm首当其冲,轻则丢点数据,重则系统崩溃。目前看到的很多删库跑路的程序员大多就因为这个。

特别是rm -rf /,不要执行,不要执行,不要执行,重要的事情说三遍,这个命令会导致整个系统被毁坏

随后的应该就是chmod和chown,特别是对于重要的数据,一般建议对于新手而言,仅仅具备只读权限即可;

接下来的dd以及mkfs命令,可能不太常见,但是也具备一定的杀伤力。

fork炸弹暂且不表,总之随便来的命令不要随便执行。

删除文件和目录命令rm

rm 命令用于删除文件或者目录。官方定义为:

remove files or directories

删除当前目录下的所有文件及目录,命令行为:

1
$ rm  -r  * 

文件一旦通过rm命令删除,则无法恢复,所以必须格外一定切记小心地使用该命令。

因为发生过很多欲哭无泪的故事。。。

主要的痛点就在如果是在root账户权限下,rm无所不能呀

Linux 的 dd 命令

dd这个命令一直没有弄明白缩写的含义,这个命令应该归到Linux炫技里面,因为我也是很晚才用到,不过有些功能还可以尝试一下。

官方含义为:

dd - convert and copy a file

从官方含义来看,是不是定义为cc比较合适,^_^

dd命令用于复制文件,转换或者格式化文件,这里也是危险所在,如果使用dd对设备进行低级别的复制和转换操作时,如果命令行参数错误,可能导致数据丢失。

比如 dd if=/dev/random of=/dev/sda:这个命令将设备(例如硬盘)的内容重写为随机数据,导致设备上所有数据的永久丢失。

mkfs 格式化硬盘分区

万万不要制定了错误的硬盘,切记切记。

这个命令格式化的很彻底。

shutdown

在root账户下,可以直接立即关闭系统,很容易造成数据没有保存,一般需要延迟个1分钟,不要使用shutdown -h now来立即关闭系统。

> file

> file:这个命令会清空文件内容。若对关键的系统文件使用这个命令,可能会破坏系统。

linux终端中最漂亮的几款字体

.. note::
念去去,千里烟波,暮霭沉沉楚天阔。
柳永 《雨霖铃·寒蝉凄切》

仅个人想法,会持续不间断更新和改进。

对于长时间盯着终端来操作的拥趸而言,漂亮赏心悦目的字体是不可或缺的。

但编程字体的选择,看似简单,实则深藏玄机,不同的字体设计初衷各有千秋。

而编码阅读字体,追求的是流畅的感觉,轻松的识别和愉悦的体验。

不过,在编程的世界里,字体的功能性有点凌驾于美学之上。

这也是缘何程序员们偏爱等宽字体的原因,不易出bug。

所以结合功能性,兼具美术感,就是最佳的字体选择了。

举个最简单的例子,不易区分的1和I,不同宽度的W和I,给编程带来的体验是不同的。

这里整理的一些字体尽量能兼具以上的优点,规避一些缺点,助力书写代码新篇章。

Ubuntu 发行版是最开始用的,可是对终端下的字体一直不是很满意,今天终于找到了一些比较好看的终端字体,尤其是Droid sans mono字体,超爱,linux迷在Ubuntu下一直用的就是这款字体,很漂亮,极力推荐下面的几种字体:

Inconsolata 优雅漂亮的等宽字体

我最喜欢的等宽字体,免费。线条清晰,很适合长时间的阅读和编写代码。

偶遇它之后,很快就把原来的默认字体DejaVu Sans Mono抛弃了。真正适合任何字号的好字体。感谢它的创造者Raph Levien

programming-fonts-Inconsolata

monaspace 变成利器

Github出品的Monaspace字体家族,具有能够满足程序员挑剔需求的利器。

programming-fonts-monaspace

Ubuntu安装命令如下:

1
$ sudo apt-get install fonts-inconsolata

Monaco

Mac的默认字体,好像也只有Mac上有。小字号的时候表现不错,而且再大些也不寒碜。普遍被认为是写代码的专用字体。随后的Menlo字体也是相当的不错。

programming-fonts-Monaco

Profont

与Monaco类似的位图字体,你能够在Mac, Windows和Linux上面使用。小字号的时候表现好。非Mac平台上Monaco的最佳替代。喜欢小字号且不怕眼睛疲劳的同学可以考虑。

programming-fonts-ProFont

Envy Code R 具备复古风格

复古的风格,线条流畅,字母衔接自然,代码阅读更流畅。

programming-fonts-envycoder

Droid Sans Mono

开源字体,适合手机屏幕。是等宽字体中最突出的一个。可惜0和O区别不大。

安装命令:

1
$ sudo apt-get install ttf-droid

programming-fonts-DroidSansMono

DejaVu Sans Mono 很多Linux发行版的标配

我以前最喜欢的免费字体系列,以Vera为基础,但是比后者提供更多字符了。

适于任何字号,最重要的是无论终端窗口如何变化,始终能保持字体的清晰。

programming-fonts-DejaVu_Sans_Mono

安装命令如下:

1
$ sudo apt-get install fonts-dejavu-core

Terminus 机械感十足

机械感十足的字体,安装命令如下:

1
$ sudo apt-get install xfonts-terminus

programming-fonts-Terminus_Specimen

Fira Code 特别好的编程字体

Fira Code也是一款等宽字体,以其独特的编码连字和ASCII支持而闻名。

这款字体能够提供清晰、易读的文本,非常适合长时间在终端中工作。

programming-fonts--firacode

安装方法如下:

1
$ sudo apt-get install firacode

SourceCode Pro 优雅且剑指源码

SourceCode Pro单看这名字就知道剑指源码编辑,不过作为Adobe开发的字体,当然不仅仅为编码环境优化,清晰的线条和易读的字母,无论在何处使用,都能为你提供愉悦的体验。

更多详细的信息,可以参考官网:Source Code Pro (adobe-fonts.github.io)

programming-fonts-Source_Code

安装方法

对于MacOSX而言,其他很多字体都已经打包好了,以monaspace为例,执行下面的两个命令即可安装。

1
2
$ brew tap homebrew/cask-fonts
$ brew install font-monaspace

参考文献

Linux最常用的几个命令

​ Linux系统中的命令那是相当地丰富,不同的版本可能还有不同的命令,不过Linux核心自带的命令大概有几百个,这个不管是什么发行版一般都是共用的。

​ 如果希望探索Linux的所有命令,可能不太实际,因为这个数字可能达到惊人的万计。

​ 不过还好的是,Linux命令的入门只要掌握不到100个命令即可,而如果相对而言行云流水的话也就200个命令足矣。

​ 而如果准备试试Linux,可能只需要下面的几个实用频率最高、功能最关键、也最常用的命令也就基本可以完成日常的工作、学习需要了。

​ 忽然想用姓氏排序的方法,不过感觉不太行,索性就大概按照使用率来统计了。

​ 仅个人习惯,会持续不间断更新和改进。

ls 列出当前目录下的文件📃和文件夹📁列表

​ 个人感觉这个命令,属于名副其实用的最多的命令,我们进入Linux的第一个命令,可能除了输入用户名密码就属它了。

​ 工欲善其事,必先利其器,你欲使用Linux,必先了解当前的文件和内容。

不加任何参数

如果不加任何参数,默认列出当前目录的内容。

1
2
3
4
5
6
$ ls /etc/sysconfig/network-scripts
ifcfg-em1
ifcfg-em2
ifcfg-em3
ifcfg-em4
....

使用-l显示更多细节

-l 就是使用long listing format长格式,来显示更多的内容信息。

1
2
3
4
5
6
7
$ ls -l /etc/sysconfig/network-scripts
total 264
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4
......

使用-t按照时间排序

如果希望看到最近创建的文件,就需要用到-t参数了。

1
2
3
4
5
6
7
$ ls -lt /etc/sysconfig/network-scripts/
total 264
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
...

使用-r按照时间逆序

如果希望删除很早以前的文件,看到最早创建的文件,就需要用到-r参数了。

1
2
3
4
5
6
7
$ ls -ltr /etc/sysconfig/network-scripts/
total 264
...
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1

使用-S根据文件大小排序

1
2
3
4
5
6
7
$ ls -lS /etc/sysconfig/network-scripts/
total 264
...
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4

cd 改变当前的工作目录

这个命令可能估计能排在第二,类似于Winows的双击,在不同目录件徜徉。

在各个文件夹遍历是我们的习惯和倔强的证明。

cd命令没有太多参数,但是有一些技巧所在,可以N多人从来没有用过。

cd直接使用即可,技巧是下面几个:

进入刚才的目录

想要进入刚才进入的地方(目测没有很多人再用,但是真的很好用)运行:

1
$ cd

快速返回家目录

需要快速地回到你的家目录,输入cd即可,这里其实不用一级一级的进入

1
$ cd

进入某用户的家目录

这个需要你有root权限

1
cd ~username

进入username的家目录。

mkdir - 创建目录

说到cd到某个目录,就需要提高创建目录,也就新建文件夹。

参数不过,处理默认什么参数也不加,会一个-p递归创建文件夹即可。

创建一个空目录

1
$ mkdir hello

递归创建多个目录

1
$ mkdir -p a/b/c/d/e/f/g

rm - 删除文件

rm 命令用于删除文件或者目录。

这个命令其实我不想把它归为最常用的命令,因为它也是最危险⚠️的命令之一,文件一旦通过rm命令删除❌,则无法恢复,所以必须格外一定切记小心地使用该命令。因为发生过很多欲哭无泪的故事。。。

文件如果少,可以使用-i 删除前逐一询问确认,确认时比较好用;

而下面的两个参数十分残暴,除非百分之两百确认,否则慎用:

  • -f 即使原档案属性设为唯读,也直接删除,无需逐一确认,是force的意思。
  • -r 将目录及里面的子文件逐一删除。

cp - 复制文件

cp可以实现文件和目录的复制,如果你只会cp a b,或者加上-r来递归目录,那么你还需要挖掘很多呀,比如只复制不存在或者更新的文件。

以下就是cp常用的选项如下所示:

  • i : 覆盖一个已经存在的文件前,提示用户进行确认
  • r:递归地复制目录及其内容,复制目录的时候必须使用这个参数
  • u:只复制不存在或者更新的文件
  • v:复制文件时,显示复制信息

组合rv - 可以拷贝文件或文件夹

这个在显示复制信息的时候,也可以复制目录

1
2
3
4
5
$ cp -rv dir1/* dir2/
‘dir1/a’ -> ‘dir2/a’
‘dir1/b’ -> ‘dir2/b’
‘dir1/c’ -> ‘dir2/c’
‘dir1/d’ -> ‘dir2/d’

拷贝时提示确认

这个参数在使用rm的时候已经记得使用,不然就像rm -rf /一样,一个公司没有了。

1
2
3
4
$ cp -i dir1/* dir2/
cp: overwrite ‘dir2/a’? y
cp: overwrite ‘dir2/b’? y
cp: overwrite ‘dir2/c’? y

这个选项在文件超级多时候,慎用!!

只拷贝不存在或更新的文件

u表示update,也就是从一个目录拷贝到另外一个目录时,只会复制那些不存在或者目标目录相应文件的更新文件。

执行下面的命令:

1
$ cp -u dir1/* dir2/

可以得到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ ll *
dir1:
total 0
-rw-rw-r-- 1 user user 0 Jul 20 21:23 a
-rw-rw-r-- 1 user user 0 Jul 20 21:23 b
-rw-rw-r-- 1 user user 0 Jul 20 21:23 c
-rw-rw-r-- 1 user user 0 Jul 20 21:23 d

dir2:
total 0
-rw-rw-r-- 1 user user 0 Jul 20 21:29 a
-rw-rw-r-- 1 user user 0 Jul 20 21:25 b
-rw-rw-r-- 1 user user 0 Jul 20 21:29 c
-rw-rw-r-- 1 user user 0 Jul 20 21:25 d
-rw-rw-r-- 1 user user 0 Jul 20 21:25 e

如何用cp拷贝指定序号的文件

现在有文件夹filename,内有文档,名字是从1.txt, 2.txt, 3.txt 一直到9999.txt,10000.txt,现在希望从第N组数据即N.txt到第M组数据M.txt的文件拷贝到别的文件夹中,方法如下:

1
$ cp {N..M}.txt   newfilename/

这个方法可是相当的赞呀(≧▽≦)/,基本可以秒掉大多数的GUI程序了。

mv - 文件移动或者叫重命名

如果mv的命令还停留在重命名一个文件或者文件夹,那么就花3分钟看一下。

mv能做的还很多。

比如为了防止误删,mv可以提前做个备份;比如为了防止覆盖,可以考虑只有文件较新的时候才移动。

详细如下:

mv几个比较常用的选项如下:

  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份,文件后缀用~表示;
  • -i或–interactive: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作,一般而言,对于不确定的时候可以用此选项,不过文件或文件夹居多时,最好不要用
  • -f或–force: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件,强制的意思force
  • -n或–no-clobber: 不要覆盖任何已存在的文件或目录。
  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

常规操作

1
2
3
4
5
6
7
$ ls
a.txt

$ mv a.txt b.txt

$ ls
b.txt

直接移动或者叫做重命名,文件夹也类似的操作。

覆盖前备份

1
2
3
4
5
6
7
$ ls
a.txt a.txt~

$ cp -b ../a.txt a.txt

$ ls
a.txt a.txt~

可以看到此时多了一个备份文件

增量更新

1
$ cp -u a b	

此时的操作为,只有a比b更新或者b不存在的时候,才会进行更新,否则失败。

这个用法多用在:当横向对比两个文价夹有无重要更新的时候才会用到。

交互提示

1
2
$ cp -i b.txt a.txt
cp:是否覆盖"a.txt"

在文件存在的时候,-i选项会进行提示,此时需要输入y才能覆盖,而输入n就会取消这个操作。

pwd - 查看目录所在的命令

pwd命令的作用是查看当前目录,没有参数,输入后回车即可显示当前绝对路径, 所以pwdPrint Working Directory第一个字的缩写。

唯二需要了解的参数如下:

  • -L, --logical:打印逻辑路径,与pwd一致
  • -P, --physical:打印物理路径,这里可以从超级链接直达原处

实例展示

此时比如我们进入一个目录,然后在打印出来,如下:

1
2
3
4
$ cd /etc/sysconfig/network-scripts/

$ pwd
/etc/sysconfig/network-scripts

可以看到pwd将输出完全路径

逻辑与物理路径

比如如下:

1
2
3
4
5
6
7
$ pwd
/opt/test

$ ls -l
总用量 1
lrwxrwxrwx 1 root root 14 Jan 15 2012 dir -> source/dir
drwxrwxrwx 1 root root 14 Jan 15 2012 source

可以看到此时的路径在/opt/test/里面有两个目录sourcedir,其中dir链接到source里面的dir。

接下来对比一下-L和-P的区别。

1
2
3
4
5
6
7
8
9
10
$ cd dir

$ pwd
/opt/test/dir

$ pwd -L
/opt/test/dir

$ pwd -P
/opt/test/source/dir

从上面的输出可以发现,-P参数会显示文件最原始的路径;而-L则是逻辑上的路径。

Linux入门命令汇总

从2021年8月19日开始分享以前陆陆续续汇总的一些小技巧,截止到今天(2021年11月29)为止,100天,100个技巧。

Bingo,第一个小汇总顺利完成。

从发送的顺序上来看,100个命令的链接如下所示,PDF汇总文件根据这个顺序,或者字母表顺序,或者分类顺序来进行阅读。具体参考公众号商店

  1. ls
  2. cd
  3. cat
  4. file
  5. less
  6. more
  7. whatis
  8. apropos
  9. man
  10. mkdir
  11. cp
  12. mv
  13. rm
  14. rmdir
  15. df
  16. du
  17. pwd
  18. ln
  19. chmod
  20. chown
  21. su
  22. sudo
  23. tail
  24. head
  25. free
  26. touch
  27. stat
  28. ping
  29. ifconfig
  30. ip
  31. wall
  32. write
  33. tracepath
  34. date
  35. useradd
  36. userdel
  37. passwd
  38. tty
  39. uname
  40. whoami
  41. who
  42. w
  43. id
  44. top
  45. dd
  46. echo
  47. kill
  48. wget
  49. ps
  50. wc
  51. last
  52. time
  53. find
  54. scp
  55. rsync
  56. grep
  57. uniq
  58. sort
  59. which
  60. tar
  61. history
  62. alias
  63. diff
  64. curl
  65. usermod
  66. cal
  67. sleep
  68. ssh
  69. locate
  70. split
  71. hostname
  72. lscpu
  73. lspci
  74. tr
  75. tree
  76. bc
  77. pstree
  78. tac
  79. xargs
  80. pgrep
  81. pkill
  82. env
  83. chgrp
  84. whereis
  85. tee
  86. nice
  87. shutdown
  88. reboot
  89. poweroff
  90. halt
  91. fdisk
  92. join
  93. ulimit
  94. traceroute
  95. zip
  96. unzip
  97. login–
  98. logname—
  99. logout–
  100. arp–
  101. locatedb
  102. glob(3)
  103. telnet—
  104. netconfig–
  105. nc—
  106. minicom—
  107. mesg—
  108. netstat—
  109. talk—
  110. tcpdump—
  111. get–
  112. mcopy—
  113. ftp—
  114. fsck–
  115. hdparm–
  116. sync–
  117. exit–
  118. finger–
  119. suspend–
  120. rsh–
  121. rlogin–
  122. pstree–
  123. screen–
  124. chsh—-
  125. whois—
  126. skill—
  127. reset–
  128. clear–
  129. bind–
  130. chroot–
  131. clock–
  132. dmesg—
  133. export—
  134. rpm—
  135. set—
  136. resize—
  137. setenv—
  138. chkconfig—
  139. unalias—
  140. ar—
  141. dump–
  142. gzip–

而从分类来讲,主要包括了大概N个类别

文件管理类

  1. ls
  2. cat
  3. tac
  4. file
  5. less
  6. more
  7. tail
  8. pwd
  9. echo
  10. ln
  11. chmod
  12. chown
  13. chgrp
  14. tee

时间

  1. date
  2. cal

磁盘管理类

  1. cd
  2. df
  3. du
  4. mkdir
  5. rmdir
  6. pwd
  7. stat
  8. find
  9. locate

文档编辑类

  1. grep
  2. join
  3. sort
  4. wc
  5. uniq
  6. diff
  7. split
  8. pgrep/pkill

帮助类

  1. whatis
  2. apropos
  3. man
  4. which
  5. whereis

文件传输类

  1. cp
  2. mv
  3. scp
  4. rsync
  5. rcp—
  6. mcopy—
  7. ftp—
  8. tftp—
  9. ncftp—
  10. ftpshut—
  11. ftpwho–

磁盘维护类

  1. dd
  2. fsck–
  3. hdparm–
  4. sync–

文件传输

  1. wget
  2. curl

网络通信类

  1. telnet—
  2. netconfig–
  3. nc–
  4. minicom—
  5. wall
  6. netstat—
  7. talk—
  8. traceroute
  9. tty—
  10. write
  11. tcpdump—

系统管理类

  1. adduser–
  2. useradd
  3. exit–
  4. finger–
  5. sleep
  6. suspend–
  7. groupadd—
  8. groupdel–
  9. groupmod–
  10. kill
  11. last
  12. halt
  13. login–
  14. logname—
  15. logout–
  16. ps
  17. nice
  18. top
  19. reboot
  20. poweroff
  21. rsh–
  22. rlogin–
  23. pstree–
  24. screen–
  25. shutdown
  26. sudo
  27. uname
  28. chsh—
  29. userdel
  30. usermod
  31. who
  32. whoami
  33. whois—
  34. su
  35. skill—
  36. w
  37. id
  38. free

系统设置类

  1. reset–
  2. clear–
  3. alias
  4. bind–
  5. chroot–
  6. clock–
  7. crontab–
  8. dmesg—
  9. export—
  10. rpm—
  11. insmod—
  12. lsmod—
  13. set—
  14. passwd
  15. resize—
  16. rmmod—
  17. modinfo—
  18. time—
  19. setup—
  20. setenv—
  21. ulimit
  22. chkconfig—
  23. hwclock—
  24. unalias—

压缩备份类

  1. ar
  2. cpio–
  3. dump–
  4. gzip–
  5. tar
  6. zip
  7. unzip

炫技类

  1. awk–
  2. xargs

炫技 - 快速执行上一条命令

第一种方法:在终端输入两个感叹号,然后回车就可以快速地执行上一条命令了。

1
$ !!

其他

  1. history
  2. ssh
  3. tree

危险命令

  • rm
  • chmod
  • chown
  • hostname
  • reboot
  • poweroff
  • halt
  • shutdown

硬件

  • lscpu
  • lspci
  • reboot
  • poweroff
  • halt
  • shutdown

Linux入门命令汇总

从2021年8月19日开始分享以前陆陆续续汇总的一些小技巧,截止到今天(2021年11月29)为止,100天,100个技巧。

Bingo,第一个小汇总顺利完成。

从发送的顺序上来看,100个命令的链接如下所示,PDF汇总文件根据这个顺序,或者字母表顺序,或者分类顺序来进行阅读。具体参考公众号商店

  1. ls
  2. cd
  3. cat
  4. file
  5. less
  6. more
  7. whatis
  8. apropos
  9. man
  10. mkdir
  11. cp
  12. mv
  13. rm
  14. rmdir
  15. df
  16. du
  17. pwd
  18. ln
  19. chmod
  20. chown
  21. su
  22. sudo
  23. tail
  24. head
  25. free
  26. touch
  27. stat
  28. ping
  29. ifconfig
  30. ip
  31. wall
  32. write
  33. tracepath
  34. date
  35. useradd
  36. userdel
  37. passwd
  38. tty
  39. uname
  40. whoami
  41. who
  42. w
  43. id
  44. top
  45. dd
  46. echo
  47. kill
  48. wget
  49. ps
  50. wc
  51. last
  52. time
  53. find
  54. scp
  55. rsync
  56. grep
  57. uniq
  58. sort
  59. which
  60. tar
  61. history
  62. alias
  63. diff
  64. curl
  65. usermod
  66. cal
  67. sleep
  68. nice–
  69. halt–
  70. login–
  71. logname—
  72. logout–
  73. reboot–
  74. arp–
  75. xargs–
  76. telnet—
  77. netconfig–
  78. nc—
  79. minicom—
  80. mesg—
  81. netstat—
  82. talk—
  83. traceroute—
  84. write—
  85. tcpdump—
  86. chgrp—
  87. split—
  88. join–
  89. whereis—
  90. get–
  91. mcopy—
  92. ftp—
  93. fsck–
  94. hdparm–
  95. mkfs.xfs—
  96. sync–
  97. fdisk–
  98. exit–
  99. finger–
  100. suspend–
  101. groupdel–
  102. groupmod–
  103. rsh–
  104. rlogin–
  105. pstree–
  106. screen–
  107. chsh—-
  108. whois—
  109. skill—
  110. groupadd—
  111. reset–
  112. clear–
  113. bind–
  114. chroot–
  115. clock–
  116. dmesg—
  117. export—
  118. rpm—
  119. set—
  120. resize—
  121. setenv—
  122. ulimit—
  123. chkconfig—
  124. unalias—
  125. ar—
  126. dump–
  127. gzip–
  128. zip—

而从分类来讲,主要包括了大概N个类别

文件管理类

  1. ls
  2. cat
  3. file
  4. less
  5. more
  6. tail
  7. pwd
  8. echo
  9. ln
  10. chmod
  11. chown
  12. chgrp—
  13. split—

时间

  1. date
  2. cal

磁盘管理类

  1. cd
  2. df
  3. du
  4. mkdir
  5. rmdir
  6. pwd
  7. stat
  8. find

文档编辑类

  1. grep
  2. join–
  3. sort
  4. wc
  5. uniq
  6. diff

帮助类

  1. whatis
  2. apropos
  3. man
  4. which
  5. whereis

文件传输类

  1. cp
  2. mv
  3. scp
  4. rsync
  5. rcp—
  6. mcopy—
  7. ftp—
  8. tftp—
  9. ncftp—
  10. ftpshut—
  11. ftpwho–

磁盘维护类

  1. dd
  2. fsck–
  3. hdparm–
  4. mkfs.xfs—
  5. sync–
  6. fdisk–

文件传输

  1. wget
  2. curl

网络通信类

  1. telnet—
  2. netconfig–
  3. nc—
  4. ifconfig
  5. ip
  6. minicom—
  7. wall
  8. netstat—
  9. ping
  10. talk—
  11. traceroute—
  12. tty—
  13. write
  14. tcpdump—

系统管理类

  1. adduser–
  2. useradd
  3. exit–
  4. finger–
  5. sleep
  6. suspend–
  7. groupdel–
  8. groupmod–
  9. kill
  10. last
  11. halt–
  12. login–
  13. logname—
  14. logout–
  15. ps
  16. nice–
  17. top
  18. reboot–
  19. rsh–
  20. rlogin–
  21. pstree–
  22. screen–
  23. shutdown–
  24. sudo
  25. uname
  26. chsh—
  27. userdel
  28. usermod
  29. who
  30. whoami
  31. whois—
  32. su
  33. skill—
  34. w
  35. id
  36. groupadd—
  37. free

系统设置类

  1. reset–
  2. clear–
  3. alias
  4. bind–
  5. chroot–
  6. clock–
  7. crontab–
  8. dmesg—
  9. export—
  10. rpm—
  11. insmod—
  12. lsmod—
  13. set—
  14. passwd
  15. resize—
  16. rmmod—
  17. modinfo—
  18. time—
  19. setup—
  20. setenv—
  21. ulimit—
  22. chkconfig—
  23. hwclock—
  24. unalias—

压缩备份类

  1. ar
  2. cpio–
  3. dump–
  4. gzip–
  5. tar
  6. zip—

炫技类

  1. awk–
  2. xargs–

其他

  1. history

危险命令

  • rm
  • chmod
  • chown