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.txtcp -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 dname指定查找的文件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
date1
2
3missing:~$ date
Fri 10 Jan 2020 11:49:31 AM EST
missing:~$echo1
2
3
4
5
6echo hello
foo=bar # 变量赋值
echo $foo # 引用变量输出
echo "hello, $foo" # 双引号格式化输出字符串,会自动替换
echo 'hello, $foo' # 单引号直接输出字符串,不执行格式化
echo hello > hello.txt # 将输出重定向到 hello.txtcat1
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
hellowhich1
which echo # 定位程序所在的路径
man1
man ls # 用户手册,查看命令使用方法
tldr1
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