bash 和 powershell 常用命令集锦
个人笔记,只会列出我自己还不太熟悉的命令
Linux Shell
# 1. 后台运行命令
nohup python xxx.py &
# 也可以使用 tmux,tmux 提供的 session 功能比 nohup 更好用。
# 1. 输入 `tmux` 启动一个 tmux 会话。(或者用 `tmux new -s <session-name>` 启动一个命名会话)
# 2. 输入 `python xxx.py`,python 进程开始运行。
# 3. 按快捷键 `ctrl+b`,然后再按一下 `d` 脱离(detatch)当前会话。此时 python 进程进入后台运行,关闭当前终端对 python 进程没有影响。
# 4. 输入 `tmux ls` 可以查看当前正在后台运行的会话。(命名会话会显示名称,否则只显示 id)
# 5.1 通过 `tmux attach -t <session-name/id>` 重新接入后台会话。
# 5.2 或者通过 `tmux kill-session -t <session-name/id>` 杀死一个后台会话。
# 详见 https://www.ruanyifeng.com/blog/2019/10/tmux.html
# 官方文档:https://github.com/tmux/tmux/wiki/Getting-Started
# 查找替换
## 只在目录中所有的 .py 和 .dart 文件中递归搜索字符"main()"
grep "main()" . -r --include *.{py, dart}
## 1) 全文搜索并替换
sed -i "s/pattern_str/replace_str/g" `grep "key_pattern" 'path_pattern' -rl`
## 2)文件名搜索,替换文件内容
sed -i "s/pattern_str/replace_str/g" `find . -name "pattern"`
## 3)批量转换大小写
# 将当前文件夹内,所有的 gitlab URL 都转换成小写
# \L 转小写 \U 转大写
sed -i 's@http://GITLAB.*.git@\L&@g' `find . -name pubspec*`
# 文件传输
# 如果使用 ssh 命令进行文件传输,可安装 pv 命令查看传输速度(pipeviewer)
## ubuntu
sudo apt-get install pv
## centos
sudo yum install epel-release
sudo yum install pv
## 1)从本地上传到服务器
### 使用 ssh 的好处是流式传输不会占用目标机器的存储空间,适合传输可能引起空间不足的大文件,并在目标机器上实时处理该文件。
cat <filename> | pv | ssh <user>@<host> -p 22 "cat - > <new-filename>"
tar cz <filename or foldername or glob> | pv | ssh <user>@<host> -p 22 "tar xz" # 压缩传输
## scp 命令比 ssh 命令更简洁(但是不适合用于传文件夹,它会破坏文件的权限设置,把文件夹弄得一团糟)
scp -P 22 <filename> <user>@<host>:<folder-name or filename> # 通过 scp 传输,传文件夹时记得添加 -r 参数(recursive)
## 2) 从服务器下载到本地
ssh <user>@<host> -p 22 "tar cz <filename or foldername or glob>" | pv | tar xz # 压缩传输
scp -P 22 <user>@<host>:<folder-name or filename> <filename> # 通过 scp 传输,传文件夹时记得添加 -r 参数(recursive)
文件拷贝/同步命令 rsync
rsync 的功能其实和前面的 scp/(tar+ssh) 是一样的,将文件从一个地方拷贝到另一个地方。
区别在于它只做增量同步,在多次拷贝文件时,只拷贝(同步)修改过的部分,很多场景下可以大大加快拷贝/备份速度。
rsync 的常用命令:
# 将一个文件夹归档、压缩,并通过 ssh 协议(默认)同步到另一个地方
# -a, --archive # 归档模式,保留文件的所有元信息,等同于 `-rlptgoD`
# -r, --recursive # 递归复制文件夹,`-a` 隐含了这个参数,通常都用 -a。
# -v, --verbose # 输出详细信息
# --progress # 显示传输进度
# -z, --compress # 传输文件时进行压缩
rsync -avz --progress src host:dest
rsync -avz --progress -e "ssh -p225" /path/src user@host:dest # 使用非默认的 ssh 端口进行传输
rsync -avz --progress -e "ssh -i id_xxx" /path/src user@host:dest # 使用指定的私钥连接 ssh 服务端,其他各种 ssh 参数都可以在这里指定
# 有时我们希望在同步数据时修改文件的 user/group
# --chown # 设置文件的 user:group,必须与 `-og`/`--owner --group` 同时使用!(`-a` 隐含了 `-og`)
rsync -avz --progress --chown=root:root src user@host:dest # 传输时修改 user/group 为 root
# 详细说明 src 和 dest 的位置
rsync -avz --progress path/src user@host:/tmp # 将 src 拷贝到远程主机的 /tmp 中(得到 /tmp/src)
## 注意 src 结尾有 /
rsync -avz --progress path/src/ user@host:/tmp/src # 将 src 目录中的文件拷贝到远程主机的 /tmp/src 目录中(同样得到 /tmp/src)
# 有时候我们在传输文件时不希望保留文件的元信息
# rsync 默认不会删除 dest 中多余的文件,使用 --delete 可让 rsync 删除这部分无关的文件
# 对 src 文件夹进行完全镜像,保证两个文件夹的内容一模一样,不多不少
rsync -avz --progress --delete src user@host:dest
# 也可以使用 --ignore-existing 让 rsync 忽略掉 dest 已经存在的文件。就是只同步新增的文件。
rsync -avz --progress --ignore-existing src user@host:dest
# 另有使用双冒号 :: 分隔的传输命令,这种命令使用 rsync 协议进行传输,要求目标主机启用 rsync-daemon
# 暂时不做介绍
详见 https://rsync.samba.org/documentation.html
Powershell
powershell 的命令有一致的命名规则:谓词-名词,谓词表示动作:Get/Set/Stop/Start 等,名词指示操作对象:Service/Member/ChildItem/Command 等。
这样的命名格式使我们可以很容易地猜测到自己需要的命令的名称。
为了使用方便,powershell 还提供了一些常用命令的缩写,并且添加了大量类似 Linux 命令的别名。
还有就是,Windows 默认不区分字母大小写,日常使用可以全部小写。
# 删除文件/文件夹
remove-item xxx -confirm
ri xxx # 别名1
rm xxx # 别名2
rmdir xxx # etc...
# 复制
copy-item xxx xx -r
cp -r xxx xx
# 显示工作目录
get-location
gl
pwd
# 切换工作目录
set-location xxx
sl xxx
cd xxx
# 查看环境变量
get-childitem env:
gci env:
gci env:PATH # 查看 PATH 变量
$env:XXX="value" # 临时设置环境变量
$env:Path += ";SomeRandomPath" # 临时在 Path 末尾添加新路径
## 以下三行命令只对 windows 有效,linux 下无效
[Environment]::SetEnvironmentVariable("XXX", $env:XXX + ";value", [EnvironmentVariableTarget]::User) # 修改当前用户的环境变量(永久),只对新进程有效
[Environment]::SetEnvironmentVariable("XXX", "value", [EnvironmentVariableTarget]::Machine) # 给这台电脑设置环境变量(永久),只对新进程有效,需要管理员权限
[Environment]::SetEnvironmentVariable("XXX", $env:XXX + ";value", "User") # target 也可用字符串指定
# 删除文件/文件夹
rm xxx # 删除文件夹时会进入交互界面,按提示输入就行。
# 查看命名位置(类似 Linux Shell 的 which)
get-command xxx
gcm xxx
# 通过关键字查找 powershell 命令
gcm | select-string <keyword>
# 通过关键字查找 powershell 命令和环境变量中的程序,比较慢
gcm * | select-string <keyword>
# 查看别名对应的真实命令
get-alias
# 类似 linux 的 find/ls 命令
get-childitem -Recurse -Include *.py
gci -r -i *.py
# 清空终端的输出
clear-host
clear
# 查看文件内容
get-content xx.py | more
get-content xx.py | out-host -paging
cat xx.py
gc xx.py
# 字符串搜索,不能对对象使用
# 类似 linux 的 grep 命令
cat xxx.log | select-string <pattern>
gci env: | out-string -stream | select-string <pattern> # 需要先使用 out-string 将对象转换成 string
gci env: | where-object {$_.Name -like <pattern>}
# 计算输出的行数/对象个数
gci env: | measure-object
gci env: | measure # 这是缩写
# 查看所有进程
get-process | more
ps | more # 别名
# 查找某进程(替代掉 tasklist)
get-process -name exp*,power* # 使用正则查找进程
get-process | select-string <pattern> # 效果同上
# 通过 id 杀掉某进程(替代掉 taskkill)
# 也可以通过 -Name 用正则匹配进程
stop-process <pid>
kill <pid> # 别名
# 关机/重启
stop-computer
restart-computer
# windows 计算 hash 值
# 功能等同于 linux 下的 sha256sum/sha1sum/sha512sum/md5sum
Get-FileHash -Path /path/to/file -Algorithm SHA256
Get-FileHash -Path /path/to/file -Algorithm SHA256 | Format-List # 用 format 修改格式化效果
# base64 编解码
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("xxx")) # base64 编码
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("eHh4")) # 解码
# 另外 windows 同样自带 ssh/scp 命令,参数也和 linux 一致
bash 和 powershell 常用命令集锦的更多相关文章
- Powershell常用命令
Powershell常用命令1.Get-Command 得到Powshell所有命令2.Get-Process 获取所有进程3.Set-Alias 给指定命令重命名 如:Set-Alias aaa G ...
- mysql常用命令集锦
一.DCL语句(数据控制语句) 1.授权远程访问,针对IP和用户.DB的 grant {privilege list} on {dbname}.* to '{user}'@'{ip}' identif ...
- linux 常用命令 集锦
第一章 LINUX简介及安装 1一.LINUX介绍 1二.LINUX安装 2三.LINUX目录 2四.总结来说: 3第二章 常用命令及帐户管理 4一.linux命 ...
- PowerShell常用命令及美化(现代化的CMD)
PowerShell可谓现代终端,是微软用来替代古老的CMD的. PowerShell拥有面向对象的思想,非常方便. 常用命令 下载文件(此处以install.ps1文件为例) $client = n ...
- Bash初识与常用命令
转至:https://www.cnblogs.com/baishou/p/13850258.html Shell介绍 Shell在中文的意思是壳,寓意是操作系统的壳.Shell是指一种应用程序,这个应 ...
- Git常用命令集锦
本篇Git命令博客主要是一些Git常用命令,适合于有一定Git或linux基础的小伙伴进行参考 1.新建文件夹 mkdir 文件夹名 2.查看目录机构: pwd 3.将文件添加至Git管理范围:git ...
- windows常用命令集锦
开始→运行→输入的命令集锦 gpedit.msc-----组策略 sndrec32-------录音机 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 lo ...
- windows下通过Git Bash使用Git常用命令
Git跟SVN最大不同的地方就是分布式.SVN的集中式与Git的分布式决定各自的业务场景.既然是分布式的,那么大部分操作就是本地操作.一般Git操作都是通过IDE,比如Eclipse,如果装了Git ...
- [置顶]
Linux 常用命令集锦
出处:http://www.vaikan.com/what-are-the-most-useful-swiss-army-knife-one-liners-on-unix/ Linux命令行里的&qu ...
随机推荐
- Qt 操作QDomDocument对象修改节点
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liulihuo_gyh/article/d ...
- [转] FileZilla Server超详细配置
FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文(注:本站提供中文版本,请点击下载),配置难度可想而知,站长从网上找到一篇非常 ...
- RK3399 pro 开发记录
RK3399有三种启动模式:1.Normal模式:2.Loader模式:3.MaskRom模式. Normal模式是正常的启动过程,各个组件依次加载,直到正常进入系统. Loade ...
- CMU Database Systems - Sorting,Aggregation,Join
Sorting 排序如果可在内存里面排,用经典的排序算法就ok,比如快排 问题在于,数据表中的的数据是很多的,没法一下都放到内存里面进行排序 所以就需要用到,外排,多路并归排序 看下最简单的,2路并归 ...
- python socketpool:通用连接池(转)
简介 在软件开发中经常要管理各种“连接”资源,通常我们会使用对应的连接池来管理,比如mysql数据库连接可以用sqlalchemy中的池来管理,thrift连接可以通过thriftpool管理,red ...
- Xamarin图表开发基础教程(2)OxyPlot框架
Xamarin图表开发基础教程(2)OxyPlot框架 OxyPlot图表设计 OxyPlot是一个基于.Net的跨平台图表库.该图表库也支持Xamarin应用开发.该组件支持多种类型的图表.本章将主 ...
- 004-行为型-07-备忘录模式(Memento)
一.概述 又叫做快照模式(Snapshot Pattern)或Token模式 保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态. 意图:在不破坏封装性的前提下,捕获一 ...
- 零基础学Python_汇总贴
https://time.geekbang.org/course/intro/98 零基础学Python-第一章 :Python介绍和安装-01.Python语言的特点 零基础学Python-第一章 ...
- linux记录-安装elk记录(参考博文)
什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana .filebeat三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又 ...
- 转 Java连接Oracle数据库的简单示例
https://www.cnblogs.com/joyny/p/11176643.html https://community.oracle.com/thread/4096458 import jav ...