Hello World

[Untitled Post]

2025/03/02
loading

ls
-a 表示all,列出隐藏文件
-l 用列表形式展示
-h 与-l搭配,便于展示文件大小

cd
change directory
不用参数的话切换到默认目录:/home/luhai

pwd
print work directory

特殊路径符
一个点. 当前目录
两个点.. 上一级目录
波浪~ 表示HOME目录
回退三级:cd ../../..

mkdir
make directory
-p 自动创建不存在的父目录

touch
创建文件
cat
查看文件
more
查看文件,支持翻页。空格翻页,q退出

cp
copy,复制
-r 复制文件夹,表示递归

mv
move,移动
可以用来改名

rm
remove,删除
-r 删除文件夹
-f force,强制删除
rm命令支持通配符*,例如:

1
2
3
test*:以test开头的
*test:以test结尾的
*test*:包含test

注:rm -rf / 和rm -rf /* 有区别:前一个删除的是根目录,后一个删除的是根目录下的所有文件

命令其实是二进制可执行程序

which
查看命令所在的位置

find
按文件名查找文件:
find 起始路径 -name 文件名(用双引号)
按文件大小查找文件:
find 起始路径 -size +|-n[kMG]
+或-表示大于或小于
n是大小数字
kMG是单位
例如:查找大于1GB的文件:find / -size +1G

grep
从文件中通过关键字过滤文件行
-n 显示行号
grep 关键字 文件路径
文件路径可以作为内容输入端口

wc
文件内容统计
-c byte数量
-m 字符数量
-l 行数
-w 单词数量
文件路径可以作为内容输入端口

管道符 |
将|左边的结果作为右边的输入

echo
在命令行输出内容

反引号
包围的内容作为命令执行

重定向符

1
2
3
> :将左边命令的结果,覆盖到右边的文件中
>> :将左边命令的结果,追加到右边的文件中

tail
查看文件尾部
-num 例如tail -5 text 查看最后5行
-f 持续追踪

vi/vim
三种工作模式:命令,输入,底线命令

su - root 切换为root用户
switch user
中间的 - 是可选的,表示在切换用户后加载环境变量
注:在我的系统中su - root报错:Authentication failure。应该使用sudo -i,root账户在ubuntu中默认是disabled的,所以没有root密码
用 exit 退回上一个用户

sudo
为一条命令授权以root身份运行
不是所有用户都能用sudo,需要为普通用户配置sudo认证:在root中输入visudo,在文件最后添加:
testUserName ALL=(ALL) NOPASSWD:ALL

groupadd 组名 和 groupdel 组名 创建和删除用户组
useradd 创建用户,-g 指定用户的组,-d 指定用户的HOME目录
userdel 删除用户,-r 删除HOME目录
id 用户名,查看用户所属的组
usermod -aG 用户组 用户名,修改用户所属的组

getent
查看系统中的用户
用户名:密码:用户id:组id:描述信息:HOME目录:执行终端(默认bash)
getent group
查看系统中的组

用ll或ls -l 查看文件信息
第一部分有十个位,例如drwxr-xr-x
第一位:d表示文件夹,-表示文件,l表示软链接
第2、3、4位:所属用户权限
第5、6、7位:所属用户组权限
第8、9、10位:其他用户权限
r是读,可以看文件内容,可以看文件夹里面有什么,注意只能看文件夹,不能cd进去
w是写,可以修改文件内容,可以在文件夹内创建,删除,改名
x是修改execute,可以执行文件,可以cd进文件夹

chmod
修改权限
-R 对文件夹内的所有文件执行操作
例如:chmod u=rwx,g=rx,o=r test.txt
快捷写法:chmod 751 test.txt
r是4,w是2,x是1

chown
修改文件所属的用户或用户组,只能由root执行
chown 用户:用户组 文件名
-R 对文件夹内的所有文件执行操作

ctrl+c可以停止程序的运行。也可以不管正在输入的命令,重新开始输入
ctrl+d退出当前用户的登录,有时可以退出某些程序,例如python
history命令,查看历史输入的命令
感叹号+少量字符,搜索最近的以少量字符开头的命令并执行
ctrl+r 搜索匹配历史命令,用左右键确认
ctrl+a 跳到命令开头
ctrl+e 跳到命令结尾
ctrl+键盘左右键 跳过一个单词
ctrl+l或clear 清屏

centos使用yum安装rpm程序,ubuntu使用apt安装deb程序
-y 表示自动确认
install,remove,search

systemctl 控制服务的开启,关闭,状态查看,控制开机是否自启
start,stop,status,enable,disable
系统内置的服务举例:
NetworkManager,主网络服务
network,副网络服务
firewalld,防火墙
sshd,ssh服务

ln
创建软链接,类似Windows中的快捷方式
ln -s 被链接的 目的地

date
返回时间
%Y 年
%y 年份后两位
%m 月
%d 日
%H 小时
%M 分钟
%S 秒
%s 时间戳
用法:date +%Y年%m月%d日:输出:2024年09月20日
如果格式化字符串里面有空格,用双引号包含从加号之后的部分
-d 用于日期计算,支持:year, month, day, hour, minute, second
例如:date -d “+1 day +1 month” +%Y-%m-%d

ifconfig 或者 ip a
用来查看ip地址

hostname
查看本机名称

域名解析
输入域名,先在本机的hosts 文件中查找,然后在DNS服务器里查找
Linux中的/etc/hosts文件中加入:ip地址 主机名
这样就可以通过主机名访问了,就不用输入ip地址了

虚拟机的ip地址是通过DHCP服务获取的
DHCP是动态获取ip地址,

ping
检查服务器是否可联通
ping [-c num] ip或主机名
-c 检查几次

wget
非交互式的文件下载器
-b 后台下载,日志会写入到当前工作目录的wget-log文件中,可以用tail -f wget-log来查看

curl
发送http网络请求,
-O 用于下载文件
curl cip.cc 可以查看公网ip

Linux支持65535个端口
1-1023:公认端口,系统内置或知名程序,ssh22,http443
1024-49151: 注册端口,
49152-65535:动态端口,临时使用

nmap
查看端口占用情况
nmap 127.0.0.1

netstat
查看指定端口
netstat -anp | grep 22

程序运行后,操作系统会将程序注册为系统中的一个进程
ps
查看进程信息
-e 显示全部进程
-f 完全格式化
UID:进程所属的用户ID
PID:进程ID
PPID:进程的父ID(启动此进程的其他进程
C:CPU占用率
STIME:启动时间
TTY:启动此进程的终端序号,如果是?表示非终端启动
TIME:占用CPU时间
CMD:进程对应的名称或启动路径或启动命令

kill
关闭进程
-9 强制关闭

top
查看cpu,内存使用情况,5秒刷新一次
第一行,load_average 平均负载 1,5,15分钟。如果为1 表示一个cpu百分百繁忙,如果为4 表示4个cpu百分百繁忙
第三行:us用户,sy系统,ni高优先级进程,id空闲,wa IO等待,hi硬件中断,si软件中断,st强制等待
第四行mem:物理内存
第五行swap:虚拟内存
下面的表格中:
PR:进程优先级,越小越高
NI:负数表示高优先级,正数表示低优先级
VIRT:虚拟内存
RES:物理内存
SHR:共享内存
S:进程状态
TIME+:进程使用CPU时间总计

df
查看磁盘使用情况
-h 更人性化

iostat
查看cpu,磁盘的相关信息
-x 显示更多信息
其中磁盘部分:tps:设备每秒传输次数

sar
查看网络统计数据
sar -n DEV 查看网络接口

env
查看环境变量,是键值对,中间是等号,右侧由冒号分隔
系统执行ls这类命令时,在环境变量里面的PATH里面找这个命令对应的二进制程序
也就是说:PATH记录了系统执行命令的搜索路径

$符号用于获取环境变量的值
echo $PATH

设置环境变量:
临时:
export 名=值
永久:
当前用户:在/.bashrc文件中
所有用户:在
/etc/profile文件中
通过source 配置文件名 来刷新

export PATH=$PATH:/程序名

%% rz和sz
上传和下载 %%

tar归档文件
只是简单的封装,没有太多体积的减少
gz压缩文件
使用gzip压缩算法进行压缩

tar
-c 创建压缩文件
-v 显示进度
-x 解压模式
-f 要压缩或解压的文件,-f必须位于最后一个参数
-z gzip模式,一般位于第一个参数位置
-C 解压目的地

压缩时常用组合:
tar -cvf test.tar 1.txt 2.txt 3.txt
tar -zcvf text.tar.gz 1.txt 2.txt 3.txt

解压时常用组合
tar -xvf name.tar
tar -xvf name.tar -C /…
tar -zxvf name.tar.gz

zip
压缩文件
-r 被压缩文件包含文件夹时
unzip
解压文件
-d 指定目的地

scp
文件传输
SSH文件传输:

  • 在Linux电脑上确保已安装并运行SSH服务器。
  • 在Mac上打开终端,使用scp命令传输文件: scp /path/to/local/file username@linux_ip_address:/path/to/destination

git
sudo apt install git

  1. git config –global user.name “==Your Name==”
  2. git config –global user.email “youremail@domain.com
  3. git config –list
    生成ssh密钥
    ssh-keygen -t ed25519 -C “您的GitHub邮箱”
    添加SSH密钥到SSH代理:
    eval “$(ssh-agent -s)”
    ssh-add ~/.ssh/id_ed25519
    复制公钥:
    cat ~/.ssh/id_ed25519.pub
    在github设置中添加ssh key
    测试链接:
    ssh -T git@github.com

通过appimage安装软件
需要安装FUSE,然后需要下面的命令
sudo add-apt-repository universe

  1. 在 Ubuntu 中,软件仓库被分为多个部分,其中包括:
    • main:包含 Ubuntu 开发者完全支持的软件。
    • universe:包含由社区维护的开源软件,虽然不如 main 中的软件那么受支持,但也是官方认可的开源软件库。
      因此,add-apt-repository universe 命令的作用是向你的系统中添加 “universe” 仓库,使得你能够从该仓库中安装社区维护的软件包。
      在添加此仓库后,系统将有更多的可用软件可以通过 apt 命令进行安装。
CATALOG