Linux基础

Posted keepma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础相关的知识,希望对你有一定的参考价值。

常用快捷键:
Tab:使用Tab键来进行命令补全,补全目录、补全命令参数
Ctrl+c键来强行终止当前程序
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home键
Ctrl+e 将光标移至输入行末,相当于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。

创建多个文件:touch love_{1..10}_keep.txt
创建新用户:sudo adduser 自定义用户名
切换用户:su -l 自定义用户名
删除用户: sudo deluser 自定义用户名 --remove-home

FHS标准:FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准)。
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等
使用 cd 命令可以切换目录

进入上一级目录:cd ..
进入home目录:cd ~
查看当前路径:pwd
绝对路径:简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录


相对路径:也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如: usr/local/bin (这里假设你当前目录为根目录)。
# 绝对路径
$ cd /usr/local/bin
# 相对路径
$ cd ../../usr/local/bin

文件基本操作
新建空白文件:使用 touch 命令创建空白文件

新建目录:使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用) 如:mkdir -p father/son/grandson

复制文件:使用 cp(copy)命令复制一个文件到指定目录,如:cp test father/son/grandson

复制目录:cp 加上 -r 或者 -R 参数,表示递归复制 如:cp -r father family

删除文件:使用 rm(remove files or directories)命令删除一个文件 如:rm 文件名
强制删除:rm -f 文件名
删除目录:跟复制目录一样,要删除一个目录,也需要加上 -r 或 -R 参数
如:rm -r family
移动文件:使用 mv(move or rename files)命令移动文件(剪切)如:将文件“ file1 ”移动到 Documents 目录 , mv file1 Documents
重命名文件:如:将文件“ file1 ”重命名为“ myfile ”:mv file1 myfile

批量重命名:rename 

如:
# 使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt
# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename ‘s/.txt/.c/‘ *.txt
# 批量将这 5 个文件,文件名和后缀改为大写:
$ rename ‘y/a-z/A-Z/‘ *.c


查看文件:使用 cat,tac 和 nl 命令,前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。
如:cat 文件名 加-n 参数显示行号
nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令。
这里简单列举它的常用的几个参数:
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
使用 head 和 tail 命令查看文件,只查看文件的头几行
只看一行, 加上 -n 参数,后面紧跟行数。
tail 命令,不得不提的还有它一个很牛的参数 -f,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的。
查看文件类型:file命令

 

变量:要解释环境变量,得先明白变量是什么,准确的说应该是 Shell 变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。通常变量与值是一对一的关系,可以通过表达式读取它的值并赋值给其它变量,也可以直接指定数值赋值给任意变量。为了便于运算和处理,大部分的编程语言会区分变量的类型,用于分别记录数值、字符或者字符串等等数据类型。Shell 中的变量也基本如此,有不同类型(但不用专门指定类型名),可以参与运算,有作用域限定。

使用 declare 命令创建一个变量名为 tmp 的变量:
$ declare tmp
读取变量的值,使用 echo 命令和 $ 符号($ 符号用于表示引用一个变量的值)
注意:并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。

环境变量:
set:显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
env:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
export:显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。
按变量的生存周期来划分,Linux 变量可分为两类:
永久的:需要修改配置文件,变量永久生效;
临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。
.profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。
变量删除:
unset 命令删除一个环境变量

相关的命令常用的有 whereis,which,find 和 locate
whereis 简单快速:whereis 只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)
locate 快而全:
which 小而精:which 本身是 Shell 内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令
find 精而细:find 应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。注意 find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action] 。
参数 说明
-atime 最后访问时间
-ctime 最后修改文件内容的时间
-mtime 最后修改文件属性的时间
下面以 -mtime 参数举例:
-mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
-mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
-mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
-newer file:file 为一个已存在的文件,列出比 file 还要新的文件名

Linux上压缩包文件格式:
文件后缀名   说明
*.zip       zip 程序打包压缩的文件
*.rar       rar 程序压缩的文件
*.7z       7zip 程序压缩的文件
*.tar       tar 程序打包,未压缩的文件
*.gz       gzip 程序(GNU zip)压缩的文件
*.xz        xz 程序压缩的文件
*.bz2        bzip2 程序压缩的文件
*.tar.gz     tar 打包,gzip 程序压缩的文件
*.tar.xz     tar 打包,xz 程序压缩的文件
*tar.bz2       tar 打包,bzip2 程序压缩的文件
*.tar.7z     tar 打包,7z 程序压缩的文件

  

以上是关于Linux基础的主要内容,如果未能解决你的问题,请参考以下文章

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

[vscode]--HTML代码片段(基础版,reactvuejquery)

Linux bash基础特性二

[linux][c/c++]代码片段01