Linux基础

2019/08/15

其他一些常用快捷键

按键 作用
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home
Ctrl+e 将光标移至输入行末,相当于End
Ctrl+k 删除从光标所在位置到行末
Ctrl+u 清除当前命令
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动

软链接与硬链接

参考文章

  • 硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。删除其中一个,另一个还在,占用2倍内存。
  • 软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。相当于Windows的快捷方式,Mac OS 的替身。删除原本文件,软链接失效。

软链接

ln -s /Users/<username>/<myfile> /Users/<username>/<link>/<soft>
ln -s ~/<myfile> ~/<link>/<soft>

若不在同级目录下,写绝对路径

应用场景

  • 在进行环境变量设置的时候,原路径过于复杂,采用软链接进行简化
  • 将不同路径下的文件统一到同一目录进行访问,方便查询访问

硬链接

TODO:待完善

ln ~/<myfile> ~/<link>/<hard>

img

系统目录结构

系统根目录用/表示

用户主目录用~表示

Linux 目录

Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图:

image-20190816100759803

/home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/<user>,可以用~表示

Unix目录

以下为Unix通用目录

目录 功能
/bin 传统unix命令的存放目录,如ls,rm,mv等。
/sbin 传统unix管理类命令存放目录,如fdisk,ifconfig等等
/usr 第三方程序安装目录
/dev 设备文件存放目录,如何代表硬盘的/dev/disk0。
/usr/bin, /usr/sbin, /usr/lib 其中/usr/lib目录中存放了共享库(动态链接库).
/etc 标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接
/tmp 临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接
/var 存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接

Mac OS目录

Mac OS 目录 = Unix 系统通用目录 + 独有目录

以下为独有目录

目录 功能
/Applications 应用程序目录,默认所有的GUI应用程序都安装在这里
/Library 系统的数据文件、帮助文件、文档等等
/Network 网络节点存放目录
/System 只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件等等。
/Users 存放用户的个人资料和配置。每个用户有自己的单独目录。
/Volumes 文件系统挂载点存放目录。
/cores 内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
/private 里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。

Mac OS的用户主目录为/Users/<username>,可以用~表示

hosts文件实际在/private/etc/hosts, 软链接为/etc/hosts

查看文件

cat 查看文件内容

cat 1.txt

more/less逐页查看文件内容

  • -s 若有多个空行,只显示一行空白行
more 1.txt
more -s 1.txt

常用操作

符号 描述
= 输出当前行的行号及百分比
q 退出 more
空格键 向下滚动一屏
b 返回上一屏

more 和 less的区别:

  • less不必读整个文件,加载速度会比more更快
  • less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容

head查看文件前几行(默认10)

head -n <filename>

tail查看文件后几行(默认10)

tail -n <filename>

ssh

SSH是安全的加密协议,用于远程连接另一台机器

ssh远程登录

ssh <username>@<ipaddress>

eg:

ssh root@172.16.90.100

touch 创建文件

创建一个文件

touch 1.txt 

批量创建文件

touch {0..9}.txt

mkdir 创建文件夹

创建一个文件

mkdir dir

批量创建文件

mkdir dir{0..9}

rm 删除文件

删除文件

rm 1.txt

删除文件夹

rm -rf dir0

cp 复制

cp [可选参数] file_source file_target 

参数:

  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

复制文件到多个文件夹(待完善)

echo A B | xargs -n 1 cp -r -v test1 # 复制test1文件到A、B文件夹下

scp 远程文件传输

进行远程文件拷贝/传输

scp是 secure copy的缩写

scp [可选参数] file_source file_target 
  • 从本地复制到远程
scp local_file <remote_username>@<remote_ipaddress>:remote_file

eg: 复制~/Desktop/Tasks/目录下的所有文件,不包括Tasks目录

# -r: 递归复制整个目录
scp -r ~/Desktop/Tasks/* root@172.16.90.100:/web/users/<username>/systemd-vnc-py3-nter-ml-c-0.1.0
  • 从远程复制到本地
scp <remote_username>@<remote_ipaddress>:remote_file local_file

eg: 复制~/Desktop/Tasks/目录下的所有文件,不包括Tasks目录

# -r: 递归复制整个目录
scp -r root@172.16.90.100:/web/users/<username>/systemd-vnc-py3-nter-ml-c-0.1.0 ~/Desktop/Tasks/

diff 比较文件异同

Linux diff命令用于比较文件的差异。

diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

eg: 比较两个文件

diff 1.txt 2.txt

并排格式输出

diff 1.txt 2.txt -y -W 50
  • -y或–side-by-side  以并列的方式显示文件的异同之处。
  • -W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
  • -r或–recursive  比较子目录中的文件。
  • -q或–brief  仅显示有无差异,不显示详细的信息。

查看Linux本机ip

ifconfig

127.0.0.1 本机IP,localhost

端口号

IP就像一个班,端口号对应每一个同学。

每一个应用程序对应一个端口号。

grep 文本搜索

grep 命令用于查找文件里符合条件的字符串。

grep abc *txt # 查找后面含有txt字样的文件中包含abc的文件,并打印出该字符串的行
grep -i abc 1.txt # 查找1.txt文件中是否含有abc,不区分大小写

参考文档

  • -i 或 –ignore-case : 忽略大小写
  • -r或–recursive:查找子目录中的文件。

若要查找目录,建议使用rg命令。

  • -n: 显示结果所在行号
  • -c: 统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数
  • -o: 只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
  • -v: 输出不带关键字的行(反向查询,反向匹配),v: reverse
  • -w: 匹配整个单词,如果是字符串中包含这个单词,则不作匹配,w:word
  • -Ax: 在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A: after
  • -Bx: 在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B: before
  • -Cx: 在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C: context上下文
  • -e: 实现多个选项的匹配,逻辑or关系
  • -q: 静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?”查看是否匹配到,0表示匹配到,1表示没有匹配到。q: quite。
  • -P: 表示使用兼容perl的正则引擎。
  • -E: 使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep。

find 查找文件

find path -option "要查找的内容"

. :当前目录

~:用户主目录

/: 根目录

在当前目录及子目录中markdown文件

find . -name '*.md'

base64 加密

base64 test.txt > test_code.txt
base64 -D test_code.txt # 解密,Mac为-D,linux为-d

Search

    Post Directory