Linux常用命令

linux常用命令

这些命令基本上是Linux课程上记录下的,比较分散。

基本命令

#查看当前所在目录 $ pwd

Ctrl+a 将光标移至输入行头,相当于Home
Ctrl+e 将光标移至输入行末,相当于End
Ctrl+k 删除从光标所在位置到行末

#帮助命令 help/man/info

文件压缩

常用命令

1
2
3
4
5
6
7
8
- zip:
- 打包 :zip something.zip something (目录请加 -r 参数)
- 解包:unzip something.zip
- 指定路径:-d 参数
- tar:
- 打包:tar -cf something.tar something
- 解包:tar -xf something.tar
- 指定路径:-C 参数
#zip压缩 zip -r -q -o shiyanlou.zip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
`-r` 参数表示递归打包包含子目录的全部内容,

`-q` 参数表示为安静模式,即不向屏幕输出信息,

`-o`表示输出文件,需在其后紧跟打包输出文件名。

`-e`加密

-【1-9】设置压缩级别

#`du` 命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小

#unzip解压

`-d`解压到指定目录

`-l`不解压,仅查看压缩包内容

`-O`指定编码类型
#tar打包
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
-t 查看	

-z gz压缩 -xz解压缩

| 压缩文件格式 | 参数 |
| ------------ | ---- |
| `*.tar.gz` | `-z` |
| `*.tar.xz` | `-J` |
| `*tar.bz2` | `-j` |

tar -P -cf shiyanlou.tar

`-P` 保留绝对路径符

`-c` 表示创建一个 tar 包文件

`-f` 用于指定创建的文件名,注意文件名必须紧跟在 `-f` 参数之后

`-v` 参数以可视的的方式输出打包的文件

`-x`解包一个文件

`-C`解包至已存在的目录下

`-t`只查看不解包

`-p -h`保留文件属性和跟随链接
#gzip仅压缩不打包
1
-r 目录递归压缩	-d 解压缩

文件操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#touch更改时间戳,可用于创建一个新文件

#mkdir创建空目录 -p同时创建父目录或多级目录

#cp复制文件 格式 cp【文件】【目标目录】 -r/-R递归复制

#rm删除文件 -f强制删除 -r连带目录删除

#mv移动(剪切)文件 格式 mv【文件】【目标目录】

​ 重命名 格式 mv【旧名】【新名】

#whereis 搜索二进制文件

#locate 查询mlocate检索信息,需uodatedb

#which 判断是否安装了某命令

#find 【path】【option】【action】
参数 说明
-atime 最后访问时间
-ctime 最后修改文件内容的时间
-mtime 最后修改文件属性的时间
-newer file 列出比file要新的文件名
-name 指定名字
  • -mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
  • -mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
  • -mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
  • -size:根据文件大小来查询
  • -exec:对搜索到的文件执行命令
  • -ok:同-exec,命令执行前询问
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
#cat查看文件 tac倒序查看文件 -n显示行号

#more/less分页查看文件

#head/tail 只查看文件头/文件尾10行 tail -f 动态查看日志

#ls -l详细信息

ls -lS 按大小降序排列 ls -l | sort -n -k5 按大小升序

ls -lrt 按时间升序

ls -lnt 按时间降序

ls -l | sort -k9 按文件名升序(这是ls的默认输出方式)

ls -lr 按文件名降序 ls -l | sort -rk9 按文件名降序 ls -l -d */ 只显示目录

ls -l |grep -v "^d" 只显示文件

ls -a 显示所有文件包括隐藏文件

ls -dl dirname 显示目录完整属性

ls -asSh 显示所有文件大小



cut行内分割

echo不接受标准输入

cat接受标准输入

xargs 将接收到的内容作为后面命令的参数

grep管道仅对接收标准输入的命令有用,可用xargs转换

磁盘操作

1
2
3
#df 查看磁盘容量 -h带单位

#du 查看目录或文件容量 -h带单位 -d查看目录深度 【0-9】查看下几级命令

数据处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
标准输出(/dev/stdout)重定向>或>>

#echo "xxx" > file 将内容重定向至文件中

#| 管道 将上一个命令的输出作为下一个命令的输入(重定向)

cat Documents/test.c hello.c >somefile 2>&1

重定向错误信息(0,1,2分别是输入、输出、错误文件描述符,3-8可自行使用,存于/dev/fd中)

#tee 重定向的同时打印在终端

#exec 1>somefile“永久”重定向,使之后的标准输出都被重定向

黑洞:/dev/null

进程管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#top 查看实时进程状态

#ps 静态查看进程信息

​ ps aux 罗列所有信息

​ -l显示与这次登录bash相关的进程信息

#pstree查看当前活跃进程的树形结构

#kill -9 关闭进程

#nice以更改过的优先序来执行程序

#renice修改进程的优先级

用户权限

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
虚拟用户https://codeantenna.com/a/cL5bRd8RtK

#who am i/who mom likes 查看当前用户 pts伪终端

#su user切换用户

#sudo adduser username 创建用户

#groupadd 创建用户组

#exit退出用户

#groups查看用户组

​ /etc/group包含用户组信息

#usermod -G groupname username添加用户至用户组 -g修改主用户组

​ usermod -u 2005 user 修改UID

#groupmod -g 3000 user 修改GID

#deluser user --remove-home 删除用户

#groupdel删除用户组

#chown username filename 修改文件所有者

#chomd修改权限 rwx-111-7,rw-rw-rw- 666以此类推

​ $ chmod go-rw iphone11 加减赋值:gou分别为group other user +增加权限 -减少权限

#修改用户家目录:修改/etc/passwd内容

Linux实验平台挑战五

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
deluser user --remove-home

usermod -u 2000 guest1

groupadd guest

usermod -g guest guest1

修改/etc/passwd guest1的家目录

https://www.cnblogs.com/cnsong/p/14272328.html配置ftp



guest_enable=YES
\#指定虚拟用户的宿主用户,Ubuntu中已经有内置的ftp用户了
guest_username=ftp
\#设定虚拟用户个人vsftp的Ubuntu FTP服务文件存放路径。存放虚拟用户个性的Ubuntu FTP服务文件(配置文件名=虚拟用户名
user_config_dir=/etc/vsftpd/vuser_conf
\#开启PASV模式
pasv_enable=YES
\#最小端口号
pasv_min_port=40000
\#最大端口号
pasv_max_port=40080
pasv_promiscuous=YES
allow_writeable_chroot=YES

软件包安装和管理(ubuntu下)

1
2
3
4
5
6
7
8
9
10
11
12
13
#source ~/.zshrc 更新命令代码补全

#sudo apt-get dist-upgrade 升级并解决依赖关系

​ -f 修复依赖关系的安装

#sudo apt-cache search softname 搜索本地库中是否有某软件

#dpkg -L packname 查看deb包信息

​ -I查看deb包信息

​ -i使用dpkg安装

日志管理系统

1
/var/log日志存放位置

vim的使用

http://marz.is-programmer.com/posts/20001.html

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
u撤回

ctrl+r重做

:w 目录 复制到目录处并同时修改

set nu 设定行号

:N 移动至第N

N| 移动到行内第几个字符

Nx 向右删除几个字符,X向前删除

:50,100s/kernel/KERNEL/g 替换50-100行所有kernel

nyy 复制n行

$移到行尾

G 移到文末

p下一行粘贴

:r 文件 将文件内容复制到本文末

shell流程控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
echo $? 上一条指令是否执行成功  成功显示0 不成功显示非0

#test a = b 测试表达式

取值符号$ $a=$b

​ -n 判断变量非空

​ -z判断变量为空

​ 如果变量可能为空,需要加双引号“$a

​ -a an

​ -o or

test xxx ==【xxx】

test -e "$1"判断是否存在文件

#分支结构

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
40
41
42
43
44
45
46
47
48
49
if command(测试命令成功与否) ;
then command
elif
………………;
fi

#$1-13 变量

#case 分支结构

case $var in

value1)

​ commands;;

…………

*)

​ commands;;

esac



#for循环

for var in valuelist

do

​ commands

done



#seq 1 1 5

#select循环 需要人为设定退出选项exit 否则一直执行,需要^C

select var in menu...

do

​ commands

done

#函数定义

1
2
3
4
5
#! /bin/bash

函数定义要求在调用前

调用前用.命令载入内存,直接把函数当成命令使用,修改命令后要重新载入。也可以用source

程序编译和工具链

1
2
3
#gcc

#make

网页下载工具

1
2
#curl -O [url]url保存文件(原名)


Linux常用命令
http://example.com/2022/12/31/Linux常用命令/
作者
Magnesium
发布于
2022年12月31日
许可协议