Linux 常用命令总结
cd dir
切换目录~
:回到 home 目录
pwd
:查看目录绝对路径clear
:清屏命令mkdir -m -p dir
创建目录 其中-m
代表权限-p
代表如果目录不存在则创建一个,不会报错。ls [options]
列出目录-a
列出所有文件包括·
和··
-l
列出详细信息-r
倒序显示-t
按时间显示
rmdir dir
删除空目录tree
以树状图列出文件mv source dest
移动文件- 将源文件或目录移动到目标目录下,如果不存在,则为重命名源文件或目录
rm [options]
删除文件或目录-i
删除文件时询问是否删除-r
删除该目录下的所有文件
cp [options] [source] [dest]
复制文件和目录cp source.txt dir/dest.txt
cp -r source_dir dest_dir/
-r
复制目录下的所有文件-i
覆盖时候询问是否覆盖f
强制删除
zip
压缩文件zip -r out.zip source_dir
-r
递归处理压缩-q
隐藏指令执行过程
unzip
解压文件unzip file.zip -d path/to/directory
-d
解压后存储的目录-v
查看压缩文件信息-l
查看压缩文件包含的文件
tar [-czvf] compressname dir
压缩文件tar [-xvf] compressname -C dir
解压文件tar [-xzvf] compressname -C dir
解压.gz文件find [path] - name
查找文件find directory -name test*.txt -maxdepth 2 -type d
name
指定查找的文件type
文件类型(f: 普通文件;d: 目录文件)
df -h
查看挂载的磁盘信息du -h --max-depth=1
查看一级子目录和文件的大小sort
对目录和文件进行排序top
实时监控系统资源使用情况free -m
显示系统上可用的内存信息xargs
连接两个命令[source_command] | xargs -d '\n' [dest_command]
find . -name "*.py" | xargs -d '\n' rm
Shell
date
1
2
3missing:~$ date
Fri 10 Jan 2020 11:49:31 AM EST
missing:~$echo
1
2
3
4
5
6echo hello
foo=bar # 变量赋值
echo $foo # 引用变量输出
echo "hello, $foo" # 双引号格式化输出字符串,会自动替换
echo 'hello, $foo' # 单引号直接输出字符串,不执行格式化
echo hello > hello.txt # 将输出重定向到 hello.txtcat
1
2
3
4
5
6
7
8
9
10
11
12missing:~$ echo hello > hello.txt
missing:~$ cat hello.txt
hello
missing:~$ cat < hello.txt # 重定向输入为 hello.txt
hello
missing:~$ cat < hello.txt > hello2.txt # 重定向输入为 hello.txt,输出为 hello2.txt
missing:~$ cat hello2.txt
hello
missing:~$ cat hello.txt >> hello2.txt # 使用 >> 追加内容
missing:~$ cat hello2.txt
hello
hellowhich
1
which echo # 定位程序所在的路径
man
1
man ls # 用户手册,查看命令使用方法
tldr
1
tldr ls # 更好用的用户手册是 tldr
pipes
1
2
3
4missing:~$ ls -l / | tail -n1 # 使用 pipe 将一个
drwxr-xr-x 1 root root 4096 Jun 20 2019 var
missing:~$ curl --head --silent google.com | grep --ignore-case content-length | cut --delimiter=' ' -f2
219ps
显示所有的进程jobs
显示所有的工作bg %{job_id}
将 job_id 放入后台执行fg %{job_id}
将 job_id 放到前台执行kill
向进程发送命令1
2
3
4kill -l # 列出所有可发送的信号
kill 9 {porcess_id} # 发送信号 9 给 进程 process_id
kill -9 {group_id} # 发送信号 9 给 group_id 中的所有进程
kill -9 %{job_id} # 发送信号 9 给工作 job_idtmux
终端多路复用器- 会话,每一个会话都是一个独立的工作区,其中可以包含多个窗口
tmux
开始一个新的会话tmux new -s {name}
以指定名字开始一个新的会话tmux ls
列出所有的会话Ctrl-b d
在会话中输入Ctrl-b d
,将当前会话分离tmux a
重新连接最后一个会话tmux a -t {n}
连接指定的会话 n
- 窗口
Ctrl-b c
创建一个新的窗口,使用Ctrl-d
关闭Ctrl-b N
跳转到第 N 个窗口Ctrl-b p
切换到上一个窗口Ctrl-b n
切换到下一个窗口Ctrl-b ,
重命名当前窗口Ctrl-b w
列出当前所有窗口
- 面板 分屏,使得一个屏幕显示多个shell
Ctrl-b "
水平分割Ctrl-b %
垂直分割Ctrl-b <方向>
切换到指定方向的面板Ctrl-b z
切换当前面板的缩放Ctrl-b <空格>
在不同面板布局间切换
- 会话,每一个会话都是一个独立的工作区,其中可以包含多个窗口
别名
1
alias ll="ls -l"
ssh
远程连接服务器ssh foo@bar.mit.edu
使用域名ssh foo@192.168.1.42
使用 ip- 使用密钥
1
2
3
4
5
6生成一对密钥
ssh-keygen -o -a 100 -t ed25519.pub -f ~/.ssh/id_ed25519
将公钥发送到远端
cat ~/.ssh/id_ed25519 | ssh foo@bar.mit.edu 'cat >> ~/.ssh/authorized_keys'
或者使用下面命令(如果支持的话)
ssh-copy-id -i ~/.ssh/id_ed25519.pub foo@bar.mit.edu