Linux 基础入门

Linux 常用快捷键及帮助手册

ctrl c 强行终止当前程序
ctrl d 键盘输出结束或者退出终端
CTRL s 暂停程序,按下任意键恢复
CTRL z 将程序放到后台运行,使用fg命令恢复到前台运行
ctrl a 将光标移动到行头,相当于 home
ctrl e 将光标移动到行末 相当于end
ctrl k 删除从光标位置到行末
alt backspace 向前删除一个单词
shift pgup 终端显示向上滚动
shift pgdn 终端显示向下移动 
man <command_name> 显示获得某个命令的帮助文档

软件安装

相比于windows,linux软件管理更加简单方便,只需要一个命令,不同的linux版本有不同的安装命令

apt

APT Advanced Package Tool 是一款适用于Unix和LInux的包管理工具,包含: apt-get apt-cache apt-cdrom几个命令行工具

搜索

确认软件库是否有这个软件

sudo apt-cache search <name>

安装

sudo apt-get install <name>     # 普通安装
sudo apt-get --reinstall <name> # 软件包破坏时重新安装

更新

  1. 更新软件源
    sudo apt-get update
  2. 更新软件
    sudo apt-get upgrade
  3. 需要注意依赖关系

卸载

  • 卸载软件
    • sudo apt-get remove <name>
  • 卸载软件并删除软件配置
    • sudo apt-get purge <name>

用户权限管理

Linux是一个多用户管理系统,不同用户文件存储在不同的用户空间,不同用户之间基于权限管理不能随意更改文件

查看用户

whoami

输出当前伪终端的用户名

伪终端(Pseudo-Terminal)是一种在计算机中模拟终端的机制,它是一个虚拟设备,使用时与终端完全一样。它的工作原理是在本地(称为主设备)和远程(称为从设备)之间创建一个管道,使得本地应用程序可以将输入发送到伪终端,并从其中读取输出,就像在真实的终端上一样。
与真实终端不同的是,伪终端没有硬件设备,只是一种软件实现。它通常被用于在计算机系统中模拟终端的功能,比如运行远程终端会话、远程控制计算机等等。因此,可以说伪终端是一种特殊的软件接口,它可以通过模拟终端实现计算机的远程控制或者终端会话。

创建用户

sudo adduser <new_usr_name>

命令行中会提示输入密码

su sudo su-

su <user> # 切换到目标用户user,执行时需要输入目标用户密码
sudo <cmd> # 以特权级别运行cmd命令,要求当前用户属于sudo组
su - <user> # 切换到目标用户,并且更改环境变量
  • Ubuntu下 su是被锁定了的,su之后输入密码无法登录,为了安全考虑的,可以使用sudo password更改密码之后登录

查看用户组

group user
# 输出: 用户:用户组

删除用户

sudo deluser <username> --remove-home
  • --remove-home 表示删除用户的主目录
  • 需要保留时,使用 --preserve-home

查看所有的用户

(自己问的GPT)

cut -d: -f1 /etc/passwd

这个命令的含义是:使用cut命令来从/etc/passwd文件中取出每行的第一个字段(即用户名称),并打印出来。/etc/passwd文件是存储所有用户信息的系统文件,包括用户名、UID(用户ID)、GID(组ID)、登录Shell等信息。

运行以上命令后,你会在终端上看到列出的所有用户名。如果你具有管理员权限,也可以使用getent passwd命令来列出所有用户名称及其详细信息。

实测下来效果不好,打印出很多其他的不知道是什么的东西

文件权限管理

查看文件权限

ls -l
# 输出: 文件类型和权限 链接数 所有者 所属用户组 文件大小 最后修改时间 文件名
  • 关于文件类型与权限的解释:
    • 第一位表示:文件类型:d表示文件目录,-表示普通文件
    • 后面九位分为三组,表示 read® write(w) exec(x),三组先后是 拥有者权限,所属用户组权限,其他用户权限

变更文件所有者

sudo chown <new_owner> <file>

修改文件权限

  1. 使用二进制方式修改文件权限
    1. 将文件权限修改为 rwx------ chmod 700 file
  2. 使用加减赋值表示
    1. 使用 g 表示group ,使用 o表示others ,使用u表示user
    2. 使用+ -表示添加或去除相应的权限
    3. 比如给文件添加可执行权限 chmod +x <file> ,这个例子中没有指定给谁添加权限,最终结果是,三个x全部被添加了

目录及文件操作

基本目录操作

  1. 使用cd命令切换目录
  2. . 表示当前目录,… 表示上一级目录,- 表示上一次所在目录,~ 表示当前用户的home目录
  3. 使用tab补全

复制

使用cp(copy)命令进行复制操作

  1. 文件:cp <filename> ../../mydir
  2. 目录 添加-r参数, cp -r <dir> mydir

删除

  1. rm filename
  2. rm -r dirnamr

移动与重命名

  1. 移动(注意这里的移动命令是剪切命令)mv myfile mydir
  2. 重命名文件 mv myfile myfile_newname,本质上是剪切文件
  3. 实测可以将上面的两个指令一起使用
  4. 另外,会自动检测最后的//分割之后的字符串是不是一个目录,如果不是的话,会自动重命名,如果最后是用斜杠结尾的,就自动认为是移动
  5. 只使用上面的命令,无法在目录不存在时自动创建目录

编辑文件

Linux下的文件编辑器有:vim、emacs、nano等
直接使用 <cmd> <filename> 就可以使用指定编辑器打开文件进行编辑

搜索文件

which

  • 在环境变量指定的路径中搜索文件,使用which判断是否安装了软件
  • which <name>

whereis

  • 简单搜索指令,从数据库而不是硬盘查询,只能用于搜索特定的文件
  • 搜索较快

locate

  • Linux系统定时维护一个数据库 /var/lib/mlocate.db
  • 可以使用 updatedb 命令手动更新数据库
  • 实例 locate /usr/a 表示查找usr及其子目录下的所有a开头的文件

find

  • find 命令很强大,根据文件的所有属性进行搜索
  • find [path] [option] [action]
  • 实例 sudo find /usr/ -name myfile 在usr目录下搜索名字为myfile的文件或者目录
  • Linux find 命令 | 菜鸟教程 (runoob.com)
    • 可以使用-i参数忽略大小写
    • 需要在全局搜索时,加上path为/ 即可

文件解压缩

Linux上常用的解压缩工具,包括 zip、rar、tar

rar

rar在windows下是一种格式,在linux下应该是一种工具。

# 创建压缩文件
rar a <file>.rar <path>
rar a ehpc.rar ./Desktop/
# 使用a参数将文件添加到压缩包
rar a <rarfile>.rar <file>
# 使用d参数删除文件
rar d <rarfile>.rar <file>
# 使用l参数查看文件
rar l <rarfile>.rar
# 解压
unrar x <rarfile>.rar # 将文件保持压缩文件的目录结构解压出
unrar e <rarfile>.rar

zip

# 创建压缩包
zip -r -o <zipfile>.zip <path> #-r表示递归
# 注意如果不适用递归方式,只会压缩一个表层的文件,如果是一个文件夹,也就是只压缩了一个空文件夹进去。

# e参数表示加密
# l参数表示linux下压缩的文件可以在windows下正常解压(因为两个系统编码不一样)
zip -r -e -o <zipfile>.zip <path>
# 解压
unzip <zipfile>.zip
# 查看
unzip -l <zipfile>.zip

tar

Linnux下用的最多的打包工具,tar只是一个打包工具,没有压缩功能,需要配合其他有压缩功能而没有打包功能的工具使用

# 创建一个tar包
tar -cf <tarfile>.tar <path> #c表示创建,f表示 指定文件名
# 可以查看文件大小,可以发现打包后的tar文件和源文件完全是同样大小的,说明tar不具有压缩功能
# 我自己实际测试中好像是对一个文件夹打包还是压缩了的?
# f 参数必须要在文件名字前面

# 查看tar包
tar -tf <tarfilename>.tar

# 解包一个tar包到指定目录
tar -xf <tarfile>.tar -C <path>

# tar一般和gzip配合压缩,只需要添加一个参数即可,z
tar -czf <targzfile>.tar.gz <path>

# 解压缩操作
tar -xzf <targzfile>.targz
  • 使用man查看更多的参数
  • 注意区分 打包和压缩 解包和解压缩
  • 在使用tar -czf 压缩文件时,在当前目录下不要使用./ 定位 ,直接指定文件或者文件夹就可以,要不然压缩文件夹下面先是一个 . 文件夹
  • v参数可以用来显示命令执行过程

管道与部分文本命令

管道是一种通信机制,用于进程间通信或者网络通信,在终端中也可以用来在指令间传递

&& 和 ||

  • && 表示 如果前一个命令返回状态是0(这个需要确认是不是不同的工具规定的返回状态码01表示的意思一样),则执行后面一个命令,||相反
which rar > /dev/null && echo "Installed" || echo "UNinstalled"
# 上面的指令检查是否安装了rar并将原本应该输出到终端的文本重定向>到 Null文件(系统特殊设备文件,写入该文件的完全被丢弃,不占用存储空间),在确认安装时输出“installed”,没有安装时输出“uninstalled”

管道

  • 在命令行中一般使用匿名管道,使用分隔符号 | 表示,命名管道常常出现在源代码中
  • 以下常见命令配合管道有奇效

grep :用于使用正则表达式实现高效的搜索 
grep -r "file" ~ # 在~目录下查找所有包含“file”的文件

wc : 用于统计并输出一个文件中行、字节数据的数目,-l表示行数,-c表示字节数
结合管道使用,统计文件个数
ls -a | wc -l # 统计当前文件夹下所有的文件及文件夹数目,注意linux文件树中还有隐藏的“.”和“..”

uniq命令 : 去除重复行
# 去除文件中重复行
cat words | uniq
# 去除文件中连续重复行
cat words | sort |uniq

文本处理

sort

ls -a | sort # 默认使用字典排序
ls -a | sort -r # 反转排序

col

  • 用于tab和空格的相互转换
  • -x参数表示将tab转换为空格,-h参数表示将空格转换为tab
cat myfile | col -x | cat -A # 将myfile中的tab转换为空格,-A表示显示所有不可见字符,比如行尾符等等
# 这个我怎么自己没有实验出来效果

tr

  • 替换操作(删除操作也可以使用替换操作实现)
# 如果删除,只需要添加-d参数
echo "Hello world!" | tr -d "el" # 删除其中的所有“e”和所有“l”
echo "Hello World!" | tr '[a-z]' '[A-Z]' # 将小写转换为大写
# 如果出现了pipe quote> 的提示符号
# 意思是pipe等待多行输入,需要使用ctrl+D或者ctrl+Z告诉它结束输入
# 一般情况下是因为 ''或者 "" 没有成对输入,貌似目前在zsh中出现
  • 貌似可以使用重定向符号将输入文件替换之后整到输出文件中
    • tr 'tr1' 'tr2' < file1 > file2

paste

  • 合并文件
paste -d ';' data1 data2 data3 # 用于以“;”为分隔符合并数据
# 默认的分隔符符号是tab,-d用于指定替换符号。不适用-d就是制表符
  • 这个工具貌似只能输出到屏幕,如果需要输出到文件可能要使用管道
  • 默认是将每一行和每一行还是放在同一行,使用-s表示每个文件占一行
  • 感觉上这个在整理表格数据的时候应该比较好用

重定向

  • 将标准输出、标准错误等信息输出到指定文件中,称为重定向
  • < > 表示指向到某一个文件
  • << >> 表示追加到某一个文件
  • echo "Hello World" > output
  • ·cat myfile | sort | uniq >> outputfile

文件描述符

  • Linux中一切皆是文件
  • 标准输入的文件描述符0,标准输出1,标准错误2
cat words | sort | uniq > output 2>&1
# 先读取words文件,然后使用sort排序,然后使用uniq过滤重复,然后 `> output` 将标准输出重定向到了outputfile,后`2>&1` 将标准错误重定向到标准输出,所以也就重定向到了outputfile
# 需要注意的是,`2>&1`重定向操作符必须放在`>`(输出重定向符号)的后面,如果放在前面则无效。

cat words | sort | uniq &>output
# `&>`重定向操作符默认将标准输出和标准错误都重定向到一个指定的文件中。具体来说,`&>`操作符表示将标准输出和标准错误都重定向到指定的文件中。如果文件不存在,则创建该文件;如果文件已存在,则覆盖该文件。
# 需要注意的是,`&>`操作符必须放在命令的末尾,如果放在命令的中间则无效。如果你希望将标准输出和标准错误分别重定向到不同的文件中,可以使用`>`和`2>`操作符,分别将标准输出和标准错误重定向到不同的文件中。

进程间的基本操作

  • 终止进程 ctrl C
  • 当前进程停止并转到后台 ctrl Z

前后台切换

  • 加上& 符号,让命令在后台进行,控制台可以继续输入其他命令

    • <command> &
  • 使用ctrl Z 暂停进程,使用 bg 命令将其切换到后台运行

  • 使用nohup命令将进程放在后台执行,并且不受当前终端影响

  • 切换到后台的进程,可以使用 jobs 查看后台进程。

  • 使用job命令之后,会出现 [1] + susppend (command)

    • 其中数字表示job编号,是转入后台的工作编号
    • 第二列+表示最后一个转入后台,-表示倒数第二个转入后台,其他在本列没有符号表示
  • 使用 fg %jobid 将工作从后台转入前台

  • 只希望工作在后台运行,使用 bg %jobid

终止

  • 一般可以通过选择信号值终止程序
  • 信号值查看 kill -l
  • 终止程序 kill -signal pid
  • 终止程序 kill -signal %jobid

进程管理

top

  • top命令用于查看系统当前的进程状态
第一行:  
当前程序名称 当前系统时间 机器启动时间 系统用户数量 1分钟内、5分钟内和15分钟内cpu平均负载

第二行:  
进程总数 正在运行的进程数 休眠的进程数 停止的进程数 僵尸进程数

第三行:

-   用户空间占用CPU百分比
-   内核空间占用CPU百分比
-   用户空间优先级变化的进程占用CPU百分比
-   空闲CPU百分比
-   等待IO的CPU时间百分比
-   硬中断占用CPU的百分比
-   软中断占用CPU的百分比
-   虚拟 CPU 等待物理 CPU 的时间的百分比

第四行:

-   物理内存总量
-   使用物理内存总量
-   空闲内存总量
-   缓存内存总量

第五行:

-   交换区总量
-   使用交换区总量
-   空闲交换区总量
-   缓冲交换区总量

然后就是许多行进程的信息了,以下按顺序分别对应:

-   PID:进程id
-   USER:进程所属用户
-   PR:进程动态优先级值
-   NI:进程静态优先级值
-   VIRT:进程使用虚拟内存总数
-   RES:进程使用物理内存数
-   SHR:进程共享内存大小
-   S:进程状态
-   %CPU:CPU利用率
-   %MEM:内存利用率
-   TIME+:进程活跃总时间
-   COMMAND:进程运行名

我们甚至可以与这个程序交互,例如输入k的话系统会提示进一步输入信号值以及pid号以杀死一个进程,更多的信息可以查看帮助手册。

ps

# ps 列出所有进程信息
ps aux
#
# ps 一般配合grep和正则表达式使用,用于检查并过滤
ps aux | grep <balabala>

# 打印进程树
pstree

ps aux 打印的信息说明

打印出来的都是什么信息呢?

-   F:进程的标志(process flags),当 flags 值为 1 则表示此子程序只是 fork 但没有执行 exec,为 4 表示此程序使用 root 权限
-   USER:进程拥有者
-   PID:进程ID
-   PPID:父进程的PID
-   SID:session 的ID
-   TPGID:前台进程组的ID
-   %CPU:进程占用的CPU百分比
-   %MEM:占用内存的百分比
-   NI:进程的 NICE 值
-   VSZ:进程使用虚拟内存大小
-   RSS:驻留内存中页的大小
-   TTY:终端ID
-   S or STAT:进程状态
-   WCHAN:正在等待的进程资源
-   START :启动进程的时间
-   TIME:进程消耗CPU的时间
-   COMMAND:命令的名称和参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值