20220731-用DISM命令备份与还原windows系统

用浅显易懂的语言全面详细的解说用DISM命令进行系统备份与还原

用 DISM 命令进行系统备份与还原需要在 Windows 8 以上的第二系统(系统引导不能在需要备份的系统分区中)、Windows To Go、Windows PE 或 Windows RE 下才能进行,并以管理员身份运行命令提示符。

注意:

有的 PE 精简过分可能不能运行 DISM 命令。由于 DISM 命令不能进行系统热备份,所以在第二系统中进行备份时,如果当前系统的启动引导文件在需要进行备份的分区中,DISM 会显示“另一个程序正在使用此文件,进程无法访问。”

另外,如果用 Windows 8 Ent 中自带功能制作的 Windows To Go,是不能对本地磁盘进行操作的,只能用其他方法制作的 Windows To Go 来进行操作。

如果在 Windows 7 系统(包括 PE)中使用 DISM 命令可以把 Windows 8 系统 C:\Windows\System32 中的 Dism 文件夹与 Dism.exe 复制到 Windows 7 系统(包括 PE)的 C:\Windows\System32 下就可以使用 DISM 所有命令了。

一、初始备份(例如:把 C 分区的系统备份到 D 分区的 Win8BF 文件夹中,备份文件名为 Win8Pro.wim):

Dism /Capture-Image /ImageFile:D:\Win8BF\Win8Pro.wim /CaptureDir:C:\ /Name:Win8Pro-1 /Description:0000-00-00

命令解释:

/Capture-Image - 指定捕获映像。

/ImageFile: - 指定映像文件路径。

/CaptureDir: - 指定捕获目录。

/Name: - 指定名称。此项不能省略。

/Description: - 指定描述。描述是为了说明这次备份的具体情况,我们这里用了时间。此项可省略。

注意:如果是在 Win8 系统中进行操作,备份时注意暂时关闭 Windows Defender,它要对整个备份文件进行扫描,其中 MsMpEng.exe 对 CPU 的占用有时高达 90% 以上,严重拖慢备份速度,有时甚至使备份时间延长十倍以上。

二、增量备份(例如:把 C 分区的系统增量备份到 D:\Win8BF\Win8Pro.wim 中):

Dism /Append-Image /ImageFile:D:\Win8BF\Win8Pro.wim /CaptureDir:C:\ /Name:Win8Pro-2 /Description:0000-00-00

命令解释:

/Append-Image - 指定追加映像。

Dism 允许各卷映像之间同名,但为了以后应用方便,各卷映像之间的名称最好不同。Dism 可以指定卷映像索引号或名称来对卷映像进行操作。索引号可能因删除某卷映像而发生改变,但名称是不会变的,如果各卷映像之间同名,用指定名称来对卷映像进行操作时就会出现问题。

重要事项:

确保有足够的磁盘空间可用于运行 /Append-Image 选项。如果在附加映像期间磁盘空间不足,则可能会损坏 .wim 文件。

三、系统还原(例如:把 D:\Win8BF\Win8Pro.wim 中第二次备份还原到 C 分区):

Dism /Apply-Image /ImageFile:D:\Win8BF\Win8Pro.wim /Index:2 /ApplyDir:C:\

命令解释:

/Apply-Image - 指定应用映像。

/ApplyDir: - 指定应用目录。

/Index: - 指定索引。此项不能省略。

因 Dism 安装 WIM 映像不会像 Ghost 那样格式化磁盘,所以如果需要可以自己格式化系统盘。

修改映像路径与应用目录可把任意一个系统备份的卷映像还原到任意一个分区。修改卷映像索引号或卷映像名称可以还原备份映像中的任意一个备份。

也可以用此命令把 Windows 系统(WIM 映像)快速安装到任何分区。例如在 PE 中把 Win8Pro 安装到 C 分区(设 Win8ISO 用虚拟光驱加载的盘符为 E):

Dism /Apply-Image /ImageFile:E:\sources\install.wim /Index:1 /ApplyDir:C:\

由于 Windows 系统原始 WIM 映像中没有启动引导文件,需要添加启动引导:

bcdboot C:\windows /s C: /l zh-cn

如果是把 Windows 8 安装到 USB 设备中作 Windows To Go,也应添加启动引导:

bcdboot X:\windows /s X: /l zh-cn /f ALL (X为 USB 设备的盘符)。

添加 Net 3.5(包括 2.0 和 3.0):

Dism /Image:C:\ /enable-feature /featurename:NetFX3 /Source:E:\sources\sxs

四、获取WIM文件映像信息(例如:查看 D:\Win8BF\Win8Pro.wim 映像信息):

Dism /Get-WimInfo /Wimfile:D:\Win8BF\Win8Pro.wim

命令解释:

/Get-WimInfo - 显示有关 WIM 文件中的映像的信息。

/Wimfile: - 指定 WIM 文件路径。
可以在后面添加索引号或名称来查看某次备份的详细信息。还可以在后面添加 >d:\list.txt 把信息导出为记事本,方便查看。如:

Dism /Get-WimInfo /Wimfile:D:\Win8BF\Win8Pro.wim /Index:1> d:\list.txt

或:Dism /Get-WimInfo /Wimfile:D:\Win8BF\Win8Pro.wim /Name:Win8Pro-1> d:\list.txt

在一个映像中如果有两个卷映像同名,就不能用指定名称来查看这两个卷映像的详细信息。

五、从具有多个卷映像的WIM 文件中删除指定的卷映像(例如:删除 D:\Win8BF\Win8.wim 中的第二次备份):
Dism /Delete-Image /ImageFile:D:\Win8BF\Win8Pro.wim /Index:2

命令解释:

/Delete-Image - 指定删除映像。

此命令仅删除卷映像名称与描述,而不会删除卷映像数据。可用于防止误应用该卷映像。

六、从具有多个卷映像的WIM 文件中提取单独的卷映像:

增量备份多了,WIM 文件也变得大起来了,删除指定的卷映像仅删除了名称与描述,而不会删除卷映像数据,所以不会减小 WIM 文件的体积。这就要用 /Export-Image 命令从具有多个卷映像的 WIM 文件中提取需要保留的单独卷映像,以减小 WIM 文件的体积。(例如:从 D:\Win8BF\Win8Pro.wim 中提取第二次备份到 D:\Win8BF\ 中,保存为 Win8Pro-2.wim):

Dism /Export-Image /SourceImageFile:D:\Win8BF\Win8Pro.wim /SourceIndex:2 /DestinationImageFile:D:\Win8BF\Win8Pro-2.wim

命令解释:

/Export-Image - 指定导出映像。

/SourceImageFile: - 指定映像文件来源路径。

/SourceIndex: - 指定来源索引。

/DestinationImageFile: - 指定目标映像文件路径。

如果 Win8Pro.wim 中有五个备份,我们只想保留其中第二与第五个备份,同样可以用 /Export-Image 命令把其中 Index:2 与 Index:5 提取出来,保存为 Win8.wim。命令如下:

Dism /Export-Image /SourceImageFile:D:\Win8BF\Win8Pro.wim /SourceIndex:2 /DestinationImageFile:D:\Win8BF\Win8.wim
Dism /Export-Image /SourceImageFile:D:\Win8BF\Win8Pro.wim /SourceIndex:5 /DestinationImageFile:D:\Win8BF\Win8.wim

Win8.wim 中就包涵有两个卷映像,卷映像的索引号会发生改变,但名称不会变。

===========================================================

附录1:一些可用选项

/Verify - 指定校验。用于检查错误和文件重复。

/CheckIntegrity - 用于在捕捉、卸载、导出和提交操作中使用 .wim 文件时检测和跟踪 .wim 文件的损坏情况。

用于在 DISM 检测到 .wim 文件在应用和装载操作中发生损坏时停止操作。

/ScratchDir: - 指定暂存目录的路径。此目录必须存在。该目录必须位于本地。

/Compress: - 用于指定对初始捕捉操作使用的压缩类型。

maximum 选项能提供最佳压缩效果,但是捕捉映像所用的时间较长。

fast 选项能提供更快速的映像压缩,但生成的文件比使用 maximum 选项压缩的文件大。这也是在未指定参数时所用的默认压缩类型。

none 选项不会压缩捕捉的映像。

recovery 选项导出一键重置映像。生成的文件显著缩小,这又大大减少了在恢复驱动器上保存一键重置映像所需的磁盘空间量。必须使用 .esd 扩展名指定目标文件。

/ConfigFile: - 指定映像捕捉和压缩命令排除列表配置文件的位置。

默认的排除列表——默认情况下,DISM.exe 工具将排除以下文件:

[ExclusionList]
$ntfs.log
\hiberfil.sys
\pagefile.sys
\swapfile.sys
“\System Volume Information”
\RECYCLER
\Windows\CSC

[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf*.pnf
===========================================
附录2: /ScratchDir 命令具体使用方法

创建或处理 Windows 映像时,你应使用带有 DISM 的 /ScratchDir 选项,在不同的驱动器上创建临时目录。临时目录适用于许多 DISM 操作,包括捕获映像、安装语言包、更新或在 Windows 映像中安装或删除 Windows 功能。先将一些文件扩展到此临时目录,然后再将它们应用于 Windows 映像。

/ScratchDir: - 指定暂存目录的路径。

指定用来解压缩服务文件的临时目录。此目录必须存在。

指定在服务期间提取临时使用的文件时要使用的临时目录。该目录必须位于本地。
安装完成后,不再需要此目录的内容,可以将其删除。

如果你不使用 /ScratchDir 选项设置临时目录路径, Windows PE 将默认创建 32-MB 临时目录。

如果未指定临时目录,将使用 \Windows%Temp% 目录,以及每次运行 DISM 时随机生成的十六进制值的子目录名称。每次操作后,都会删除暂存目录中的项。

作为最佳做法,你应使用 /ScratchDir 选项,转而在其他有足够空间支持任何映像管理和你所执行的服务操作的分区上指定目录。

运行 DISM 命令临时目录空间不足的问题多出现在 PE 操作的情况下,下面是备份及还原命令中 /ScratchDir 具体使用的完整命令。

以初始备份为例(例如:把 C 分区的系统备份到 D 分区的 Win8BF 文件夹中,备份文件名为 Win8Pro.wim,指定临时目录为 D:\Temp):

Dism /Capture-Image /ImageFile:D:\Win8BF\Win8Pro.wim /ScratchDir:D:\Temp /CaptureDir:C:\ /Name:Win8Pro-1 /Description:0000-00-00

注意:必须先在 D 盘建立一个 Temp 文件夹,D 盘必须有充足的可用空间。

以还原为例(例如:把 D:\Win8BF\Win8Pro.wim 中第二次备份还原到 C 分区,指定临时目录为 D:\Temp):

Dism /Apply-Image /ImageFile:D:\Win8BF\Win8Pro.wim /Index:2 /ScratchDir:D:\Temp /ApplyDir:C:\

wbadmin
项目
2022/04/02
7 个参与者

使你能够从命令提示符备份和还原操作系统、卷、文件、文件夹和应用程序。

若要使用此命令配置定期计划的备份,您必须是 Administrators 组的成员。 若要使用此命令执行所有其他任务,您必须是 Backup Operators 组或 Administrators 组的成员,或者您必须被委派了适当的权限。

必须从提升的命令提示符运行 wbadmin ,方法是右键单击 “ 命令提示符”,然后选择 “以 管理员身份运行”。

参数
参数 说明
wbadmin delete catalog 删除本地计算机上的备份目录。 仅当此计算机上的备份目录已损坏,并且你没有将备份存储在可用于还原目录的其他位置时,才使用此命令。
wbadmin delete systemstatebackup 删除一个或多个系统状态备份。
wbadmin disable backup 禁用日常备份。
wbadmin enable backup 配置并启用定期计划的备份。
wbadmin get disks 列出当前处于联机状态的磁盘。
wbadmin get items 列出备份中包含的项。
wbadmin get status 显示当前正在运行的备份或恢复操作的状态。
wbadmin get versions 列出从本地计算机恢复的备份的详细信息,或者,如果指定了其他位置,则从另一台计算机。
wbadmin restore catalog 在本地计算机上的备份目录已损坏的情况下,从指定的存储位置恢复备份目录。
wbadmin start backup 运行一次性备份。 如果与不带参数一起使用,则将使用每日备份计划的设置。
wbadmin start recovery 运行指定的卷、应用程序、文件或文件夹的恢复。
wbadmin start sysrecovery 运行完整系统的恢复 (至少包含操作系统状态) 的所有卷。 仅当使用 Windows 恢复环境时,此命令才可用。
wbadmin start systemstatebackup 运行系统状态备份。
wbadmin start systemstaterecovery 运行系统状态恢复。
wbadmin stop job 停止当前正在运行的备份或恢复操作。

20220726-恋爱时的聊天话题

聊对近期某个电影的看法
聊新开的某家餐厅
聊有喜欢喝的饮料
聊一点点的奶茶
聊对人生的看法
聊有没有近期的规划
聊想实现的心愿
聊最想得到的东西
聊小时候的故事
聊同桌的她
聊那个讨厌的班主任
聊那个难忘的考试
聊家庭的构成
聊父母的和睦
聊父母的爱好
聊可爱的弟弟
聊那些柜子里不穿的衣服
聊多久打扫的房间
聊地板的颜色
聊洗衣服的分类
聊今天发生的趣事
聊那个给你买棒冰的闺蜜
聊最好的朋友
聊送出祝福的初恋
聊没看出来的化妆
聊夏天出来防晒的霜
聊带出来的帽子
聊装饰的项链
聊初次见面时的尴尬
聊没有表现好的那个谈话
聊没来得及说的漂亮的鞋子
聊这个包与你衣服很配
聊习惯的猫猫狗狗
聊种死的那盆肉肉
聊习惯的花
聊习惯的香味
聊大学怎么过来的
聊难忘的实习
聊实习的那个师父
聊一起实习的那些人
聊眼镜的度数
聊眼镜的起源
聊隐形眼镜
聊你们工资
聊你们的福利
聊公司组织出去旅游
聊有意义的福利发放经历
聊看的书
聊看的电视剧
聊当前的比赛
聊此刻的电影频道
聊最喜欢的节目

20220723-ADB命令大全

  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
adb devices #查看连接设备

adb -s cf27456f shell # 指定连接设备使用命令

adb install test.apk # 安装应用

adb install -r demo.apk #安装apk 到sd 卡:

adb uninstall cn.com.test.mobile #卸载应用,需要指定包

adb uninstall -k cn.com.test.mobile #卸载app 但保留数据和缓存文件

adb shell pm list packages #列出手机装的所有app 的包名

adb shell pm list packages -3 #列出除了系统应用的第三方应用包名

adb shell pm clear cn.com.test.mobile #清除应用数据与缓存

adb shell am start -ncn.com.test.mobile/.ui.SplashActivity #启动应用

adb shell dumpsys package #包信息Package Information

adb shell dumpsys meminfo #内存使用情况Memory Usage

adb shell am force-stop cn.com.test.mobile #强制停止应用

adb logcat #查看日志

adb logcat -c #清除log 缓存

adb reboot #重启

adb get-serialno #获取序列号

adb shell getprop ro.build.version.release #查看Android 系统版本

adb shell top -s 10 #查看占用内存前10 的app

adb push <local> <remote> #从本地复制文件到设备

adb pull <remote> <local> #从设备复制文件到本地

adb bugreport #查看bug 报告

adb help #查看ADB 帮助

2.1 连接设备

adb [-d|-e|-s ]

连接指定设备

参数:

-d 指定当前唯一通过usc 连接的android 设备为命令目标

-e 指定当前唯一运行的模拟器为命令目标

-s 指定相应serialNumber 号的设备 模拟器为命令目标

command 为所需对设备执行的命令

1
2
3
4
5
6
$adb devices
List of devices attached
cf263b7f device
emulator-5554 offline
192.168.1.6:5555 device
$adb -s cf263b7f #连接cf264b8f 设备

adb devices 查看已连接的设备信息,上面已经连接3台设备

2.2 查看信息

查看版本设备

adb version 版本信息

注意:offline 表示设备未连接成功或无响应,device 设备已连接

adb shell getprop ro.product.model 查看设备型号

adb get-serialno 获取设备序列号

adb bugreport 查看bug 报告

adb logcat 查看日志

adb shell wm size 查看屏幕分辨率

adb shell wm density 查看屏幕密度

查看应用信息

adb shell pm list packages 列出手机装的所有app 的包名

adb shell pm list packages -s 列出系统应用的所有包名

adb shell pm list packages -3 列出除了系统应用的第三方应用包名

adb shell pm list packages | find “test” win 列出手机装带有的test的包

adb shell pm list packages | grep ‘test’ linux 列出手机装带有的test的包

adb shell cat /sys/class/net/wlan0/address 获取MAC 地址, 根据系统版本参数可能不同

adb shell getprop ro.build.version.release 查看Android 系统版本

adb shell dumpsys activity services [] 查看正在运行的Services

参数不是必须的,指定 表示查看与某个包名相关的Services,不指定表示查看所有Services。

不一定要给出完整的包名,比如运行adb shell dumpsys activity services org.zhihu,那么包名org.zhihu.demo1、org.zhihu.demo2 和org.zhihu 等相关的Services 都会列出来。

app 安装和卸载

adb install 参数apkfile 为.apk 文件名称

adb install -r test.apk 保留数据和缓存文件,重新安装apk

adb install -s test.apk 安装apk 到sd 卡

app 卸载

db uninstall 参数package 为软件包名称

示例:

1
2
3
4
$adb uninstall cn.com.test.mobile

# 卸载app 但保留数据和缓存文件
$adb uninstall -k ccn.com.test.mobile

2.4 启动停止服务

adb start-server

启动adb 服务,基本不会用到,因为只要设备连接正确,会自动启动adb server

adb kill-server

停止adb server

adb -P start-server

指定adb server 的网络端口port (默认为5037)启动服务

与应用交互

adb shell pm clear

清除应用数据与缓存

示例:

$adb shell pm clear cn.com.test.mobile
adb shell am force-stop

强制停止应用

示例:强制停止微信

$adb shell am force-stop com.tencent.mm
adb shell am

command 命令详解

command 用途
start [options] 启动 指定的 Activity
startservice [options] 启动 指定的 Service
broadcast [options] 发送 指定的广播
force-stop 停止 相关的进程
参数很灵活,和写 Android 程序时代码里的 Intent 相对应,用于决定 intent 对象的选项如下:

-a 指定 action,如android.intent.action.VIEW
-c 指定 category,如android.intent.category.APP_CONTACTS
-n 指定完整 component 名,用于明确指定启动哪个 Activity,如
com.example.app/.ExampleActivity

启动activity

adb shell am start [options]

示例:

#指定完整 component 名,用于明确指定启动哪个Activity
$adb shell am start -n
如: #表示调起微信主界面
$adb shell am start -n com.tencent.mm/.ui.LauncherUI
2.5.2 启动 Service

adb shell am startservice [options]

示例: 表示调起微信的某 Service。

$adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
2.5.3 发送广播

可以向所有组件广播,也可以只向指定组件广播。

adb shell am broadcast [options]

示例:

#向所有组件广播 BOOT_COMPLETED (开机广播)
$adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
#如:只向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 广播 BOOT_COMPLETED:
$adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver
系统预定义的广播:

强制停止应用

adb shell am force-stop

示例:

查询出包名

$adb shell pm list packages
…..

强制停止微信

$adb shell am force-stop com.tencent.mm

文件管理

2.6.1 复制设备里的文件到电脑

adb pull <设备里的文件路径> [电脑上的目录]

示例:

$adb pull /sdcard/abc.mp4 ~/tmp/
小技巧:设备上的文件路径可能需要 root 权限才能访问,如果你的设备已经 root 过,可以先使用 adb shell 和 su 命令在 adb shell 里获取 root 权限后,先 cp /path/on/device /sdcard/filename 将文件复制到 sdcard,然后 adb pull /sdcard/filename /path/on/pc。
2.6.2 复制电脑里的文件到设备

adb push <电脑上的文件路径> <设备里的目录>

示例:

$adb push e:/ss.au3 /data/local/tmp/
小技巧:设备上的文件路径普通权限可能无法直接写入,如果你的设备已经 root 过,可以先 adb push /path/on/pc /sdcard/filename,然后 adb shell 和 su 在 adb shell 里获取 root 权限后,cp /sdcard/filename /path/on/device
2.7 使用ADB命令模拟按键/输入
adb shell input keyevent

keycode位操作参数,不同的 keycode 能实现不同的功能

完整的功能见:https://developer.android.com/reference/android/view/KeyEvent.html

keycode 能实现不同的功能,对应的编码如下:

$adb shell input keyevent 26 #电源键
$adb shell input keyevent 82 #菜单键
$adb shell input keyevent 3 #HOME 键
$adb shell input keyevent 4 #返回键
$adb shell input keyevent 24 #增加音量
$adb shell input keyevent 25 #降低音量
$adb shell input keyevent 164 #静音
$adb shell input keyevent 85 #播放/暂停
$adb shell input keyevent 86 #停止播放
$adb shell input keyevent 87 #播放下一首
$adb shell input keyevent 88 #播放上一首
$adb shell input keyevent 126 #恢复播放
$adb shell input keyevent 127 #暂停播放
$adb shell input keyevent 224 #点亮屏幕
$adb shell input keyevent 223 #熄灭屏幕
$adb shell input swipe 300 1000 300 500 #滑动解锁,向上滑动手势解锁
#参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
$adb shell input text hello #焦点处于某文本框时输入文本

2.8 查看日志

2.8.1 Android 日志
[adb] logcat [

按级别过滤日志

按某级别过滤日志则会将该级别及以上的日志输出,Android 日志的优先级如下:

V —— Verbose(最低,输出得最多)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Silent(最高,啥也不输出)
示例:输出W之上的日志,W,E,F,S

$adb logcat *:W
按 tag 和级别过滤日志

可以由多个 [:priority] 组成

示例:输出 tag ActivityManager 的 I 以上级别日志,输出tag MyApp的D 以上级别日志,及其它 tag 的 S 级别日志(即屏蔽其它 tag 日志)。

$adb logcat ActivityManager:I MyApp:D *:S
日志格式

adb logcat -v

指定日志输出格式

示例:

$adb logcat -v 指定日志输出格式
$adb logcat -v brief #默认格式,/():
$adb logcat -v process #()
$adb logcat -v tag #/:
$adb logcat -v raw #
$adb logcat -v time # /():
$adb logcat -v threadtime # :
$adb logcat -v long #[ : /:]
$adb logcat -v long ActivityManager:I *:S #指定格式可与上面的过滤同时使用
清空日志

$adb logcat -c
2.8.2 内核日志

$adb shell dmesg
查看内核日志

2.9 查看设备信息
2.9.1 型号
$adb shell getprop ro.product.model
2.9.2 电池状况
$adb shell dumpsys battery
2.9.3 屏幕分辨率
$adb shell wm size
2.9.4 屏幕密度
$adb shell wm density
2.9.5 显示屏参数
$adb shell dumpsys window displays
2.9.6 android_id
$adb shell settings get secure android_id
2.9.7 IMEI
$adb shell dumpsys iphonesubinfo
#而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):
adb shell
su
$service call iphonesubinfo 1
2.9.8 Android 系统版本
$adb shell getprop ro.build.version.release
2.9.9 IP 地址
$adb shell ifconfig | find “Mask”
$adb shell ifconfig wlan0 #设备连着 WiFi,可以使用如下命令来查看局域网 IP
$adb shell netcfg # 上面两个无结果可以用这个,查看网络连接状态
2.9.10 Mac 地址
$adb shell cat /sys/class/net/wlan0/address # 设备不同可能地址不同
2.9.11 CPU 信息
$adb shell cat /proc/cpuinfo
2.9.12 内存信息
$adb shell cat /proc/meminfo
2.9.13更多硬件与系统属性
$adb shell cat /system/build.prop
adb shell getprop <属性名>

也可以

$adb shell cat /system/build.prop | grep ro.product.cpu.abi
$adb shell cat /system/build.prop | find “ro.product.cpu.abi”

2.10 修改设置
修改设置之后,运行恢复命令仍然不太正常,可以运行 adb reboot 重启设备或手动重启。

修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。

2.10.1分辨率
adb shell wm size 480x1024 #将分辨率修改为 480px * 1024px

adb shell wm size reset #恢复原分辨率

2.10.2屏幕密度
adb shell wm density 160 #屏幕密度修改为 160dpi

adb shell wm density reset #恢复原屏幕密度

2.10.3显示区域
adb shell wm overscan 0,0,0,100

四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 100px留白

adb shell wm overscan reset #恢复显示区域

2.10.4 关闭 USB 调试模式
adb shell settings put global adb_enabled 0

使用命令无法恢复调试模式,只能通过手动

2.10.5 状态栏和导航栏的显示隐藏
adb shell settings put global policy_control

可由如下几种键及其对应的值组成,格式为 =:=

key 键对应的值

这些键对应的值可则如下值用逗号组合

示例:

设置在所有界面下都同时隐藏状态栏和导航栏

$adb shell settings put global policy_control immersive.full=*

设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。

$adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
2.11 实用功能
2.11.1屏幕截图
adb exec-out screencap -p > img.png # 老版本无exec-out命令,只适合于新版的截图

adb shell screencap -p /sdcard/img.png # 老版本截图先保存在设备端

adb pull /sdcard/img.png # 通过pull拷贝到本地

screencap 参数:

参数 含义

-p 指定保存文件为 png 格式

-d display-id 指定截图的显示屏编号(有多显示屏的情况下)

2.11.2录制屏幕

默认录制时间和最长录制时间都是180s

adb shell screenrecord /sdcard/filename.mp4

screenrecord 参数:

参数 含义

–size WIDTHxHEIGHT 视频的尺寸,比如 1280x720,默认是屏幕分辨率。

–bit-rate RATE 视频的比特率,默认是 4Mbps。

–time-limit TIME 录制时长,单位秒。

–verbose 输出更多信息。

2.11.3 重新挂载 system 分区为可写

注:需要 root 权限

/system 分区默认挂载为只读,但有些操作比如给 Android 系统添加命令、删除自带应用等需要对 /system 进行写操作,所以需要重新挂载它为可读写。

步骤:

1.进入 shell 并切换到 root 用户权限。

$adb shell
$su
2.查看当前分区挂载情况。

$mount
输出如下
…..
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mtdblock0 /system ext4 ro,seclabel,relatime,data=ordered 0 0
…….
找到其中我们关注的带 /system 的那一行:

3.重新挂载。

$mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.11.4 查看连接过的 WiFi 密码

注:需要 root 权限

$adb shell
$su
$cat /data/misc/wifi/*.conf
2.11.5设置系统日期和时间

注:需要 root 权限

$adb shell
$su
$date -s 20190531.131600 #将系统日期和时间更改为 2019 年 05 月 31 日 13 点 16 分 00 秒。
2.11.6 重启手机

$adb reboot
2.11.7 检测设备是否已 root

$adb shell
$su
此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。

2.11.8 使用 Monkey 进行压力测试

Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

指定的应用程序发送 500 个伪随机事件

$adb shell monkey -p -v 500
monkey 官方文档 https://developer.android.com/studio/test/monkey.html

2.11.9 开启/关闭 WiFi

注:需要 root 权限

开启 WiFi:

$adb root
$adb shell svc wifi enable
关闭 WiFi:

$adb root
$adb shell svc wifi disable

刷机相关命令
注:不要随便操作,没实验过无法保证成功

2.12.1重启到 Recovery 模式
$adb reboot recovery
2.12.2从 Recovery 重启到 Android
$adb reboot
2.12.3重启到 Fastboot 模式
$adb reboot bootloader
2.12.4通过 sideload 更新系统
如果我们下载了 Android 设备对应的系统更新包到电脑上,那么也可以通过 adb 来完成更新。

以 Recovery 模式下更新为例:

1.重启到 Recovery 模式。

$adb reboot recovery
2.在设备的 Recovery 界面上操作进入 Apply update-Apply from ADB。

注:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB。

3.通过 adb 上传和更新系统。

$adb sideload <path-to-update.zip>
2.13 更多 adb shell 命令
2.13.1查看进程
adb shell ps

2.13.2查看实时资源占用情况
adb shell top

top命令参数如下:

使用方法: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]

-m num 最多显示多少个进程
-n num 刷新多少次后退出
-d num 刷新时间间隔(单位秒,默认值 5)
-s col 按某列排序(可用 col 值:cpu, vss, rss, thr)
-t 显示线程信息
-h 显示帮助文档
2.13.3其它

20220722-PowerShell管道使用

https://docs.microsoft.com/zh-CN/powershell/module/microsoft.powershell.core/about/about_pipelines?view=powershell-7.2

https://www.cnblogs.com/lavender000/p/6941393.html

简短说明

在powershell 中将命令合并到管道中

长说明

管道是一系列由管道运算符连接的命令 |

可以发送第一个命令的输出,作为第二个命令的输入进行处理。 还可以将输出发送到另一个命令。 结果是一个复杂的命令链或 管道 ,由一系列简单的命令组成。

例如,

PowerShell

复制

1
Command-1 | Command-2 | Command-3

在此示例中,发出的对象 Command-1 将发送到 Command-2 。 Command-2 处理对象并将其发送到 Command-3 。 Command-3 处理对象并将其沿管道向下发送。 由于管道中没有更多命令,因此结果将显示在控制台上。

在管道中,按从左到右的顺序处理命令。 处理将作为单个操作进行处理,并在生成时显示输出。

下面是一个简单的示例。 以下命令将获取记事本进程,然后将其停止。

例如,

1
Get-Process notepad | Stop-Process

此管道示例获取当前目录中的文本文件,只选择长度超过10000个字节的文件,按长度对它们进行排序,并在表中显示每个文件的名称和长度。

1
2
3
4
Get-ChildItem -Path *.txt |
Where-Object {$_.length -gt 10000} |
Sort-Object -Property length |
Format-Table -Property name, length

此管道按指定顺序包含四个命令。 下图显示了每个命令的输出,因为它将传递到管道中的下一个命令。

使用管道

大多数powershell cmdlet 都设计为支持管道,在大多数情况下,你可以通过管道将Get cmdlet 的结果传递给相同名词的另一个cmdlet

例如,可以通过管道将 cmdlet 的输出 Get-Service 传递给 Start-Service 或 Stop-Service cmdlet。

此示例管道在计算机上启动 WMI 服务:

1
Get-Service wmi | Start-Service

再例如,你可以通过管道将 PowerShell 注册表提供程序的输出 Get-Item Get-ChildItem 传递给 New-ItemProperty cmdlet。 此示例将值为 8124 的新注册表项 NoOfEmployees 添加到 MyCompany 注册表项。

1
2
Get-Item -Path HKLM:\Software\MyCompany |
New-ItemProperty -Name NoOfEmployees -Value 8124

许多实用工具 cmdlet Get-Member (如、 Group-Object Where-Object Sort-Object 、、和 Measure-Object )几乎只是在管道中使用。 可以通过管道将任何对象类型传递给这些 cmdlet。 此示例显示了如何按每个进程中打开的句柄数对计算机上的所有进程进行排序。

PowerShell

复制

1
Get-Process | Sort-Object -Property handles

可以通过管道将对象传递给格式设置、导出和输出 cmdlet,例如 Format-List 、 Format-Table Export-Clixml Export-CSV 、、和。 Out-File

此示例演示如何使用 Format-List cmdlet 显示进程对象的属性列表。

PowerShell

复制

1
Get-Process winlogon | Format-List -Property *

还可以通过管道将本机命令的输出传递给 PowerShell cmdlet。 例如:

PowerShell

复制

1
2
3
4
5
PS> ipconfig.exe | Select-String -Pattern 'IPv4'

IPv4 Address. . . . . . . . . . . : 172.24.80.1
IPv4 Address. . . . . . . . . . . : 192.168.1.45
IPv4 Address. . . . . . . . . . . : 100.64.108.37

重要

成功 和 错误 流类似于其他 shell 的 stdin 和 stderr 流。 但 stdin 未连接到 PowerShell 管道进行输入。 有关详细信息,请参阅 about_Redirection。

使用几个实践,你会发现将简单命令合并到管道可节省时间和键入内容,并使你的脚本更有效。

管道的工作方式

本部分介绍如何将输入对象绑定到 cmdlet 参数并在管道执行期间进行处理。

接受管道输入

若要支持流水线,接收 cmdlet 必须具有接受管道输入的参数。 Get-Help使用带有 FullParameter 选项的命令来确定 cmdlet 接受管道输入的参数。

例如,若要确定 cmdlet 的哪些参数 Start-Service 接受管道输入,请键入:

PowerShell复制

1
Get-Help Start-Service -Full

PowerShell复制

1
Get-Help Start-Service -Parameter *

Cmdlet 的帮助 Start-Service 显示:只有 InputObjectName 参数接受管道输入。

Output复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-InputObject <ServiceController[]>
Specifies ServiceController objects representing the services to be started.
Enter a variable that contains the objects, or type a command or expression
that gets the objects.

Required? true
Position? 0
Default value None
Accept pipeline input? True (ByValue)
Accept wildcard characters? false

-Name <String[]>
Specifies the service names for the service to be started.

The parameter name is optional. You can use Name or its alias, ServiceName,
or you can omit the parameter name.

Required? true
Position? 0
Default value None
Accept pipeline input? True (ByPropertyName, ByValue)
Accept wildcard characters? false

当你通过管道将对象发送到 Start-Service 时,PowerShell 会尝试将对象与 InputObjectName 参数相关联。

接受管道输入的方法

Cmdlet 参数可采用以下两种不同方式之一接受管道输入:

  • ByValue:参数接受与所需的 .net 类型匹配或可转换为该类型的值。

    例如,的 Name 参数 Start-Service 接受按值的管道输入。 它可以接受可以转换为字符串的字符串对象或对象。

  • ByPropertyName:仅当输入对象具有与参数名称相同的属性时,此参数才接受输入。

    例如,的 Start-Service name 参数可以接受具有 Name 属性的对象。 若要列出某个对象的属性,请将其传递到 Get-Member

一些参数可以通过值或属性名称接受对象,使从管道中获取输入变得更加容易。

参数绑定

当你通过管道将对象从一个命令传递给另一个命令时,PowerShell 会尝试将管道对象与接收 cmdlet 的参数相关联。

PowerShell 的参数绑定组件根据以下条件将输入对象与 cmdlet 参数关联:

  • 参数必须接受来自管道的输入。
  • 参数必须接受要发送的对象的类型或可转换为预期类型的类型。
  • 命令中未使用参数。

例如, Start-Service cmdlet 具有多个参数,但其中只有两个参数、 名称InputObject 接受管道输入。 Name 参数使用字符串, InputObject 参数使用服务对象。 因此,可以通过管道字符串、服务对象和具有可转换为字符串或服务对象的属性的对象。

PowerShell 会尽可能有效地管理参数绑定。 不能建议或强制 PowerShell 绑定到特定参数。 如果 PowerShell 无法绑定管道对象,则该命令将失败。

有关排除绑定错误的详细信息,请参阅本文后面的 调查管道错误

一次一次性处理

通过管道将对象传递给命令与使用命令的参数来提交对象非常类似。 让我们看一看管道示例。 在此示例中,我们使用管道来显示服务对象表。

PowerShell复制

1
Get-Service | Format-Table -Property Name, DependentServices

在功能上,这与使用的 InputObject 参数 Format-Table 来提交对象集合类似。

例如,我们可以将服务集合保存到使用 InputObject 参数传递的变量。

PowerShell复制

1
2
$services = Get-Service
Format-Table -InputObject $services -Property Name, DependentServices

或者,可以将该命令嵌入到 InputObject 参数中。

PowerShell复制

1
Format-Table -InputObject (Get-Service) -Property Name, DependentServices

但有一个重要的差异。 通过管道将多个对象传递给命令时,PowerShell 会一次将对象发送到命令。 使用命令参数时,对象将作为单个数组对象发送。 这种次要差别会产生重大后果。

执行管道时,PowerShell 会自动枚举任何实现 IEnumerable 接口的类型,并一次通过管道发送成员。 异常是 [hashtable] ,这需要调用 GetEnumerator() 方法。

在下面的示例中,将向 Measure-Object cmdlet 传递一个数组和一个哈希表,以计算从管道接收的对象数。 该数组具有多个成员,并且哈希表具有多个键值对。 一次只枚举一个数组。

PowerShell复制

1
@(1,2,3) | Measure-Object

Output复制

1
2
3
4
5
6
Count    : 3
Average :
Sum :
Maximum :
Minimum :
Property :

PowerShell复制

1
@{"One"=1;"Two"=2} | Measure-Object

Output复制

1
2
3
4
5
6
Count    : 1
Average :
Sum :
Maximum :
Minimum :
Property :

同样,如果你通过 Get-Process 管道将多个进程对象传递给 Get-Member cmdlet,则 PowerShell 会将每个进程对象一次发送到 Get-MemberGet-Member 显示 (类型的 .NET 类) 进程对象及其属性和方法。

PowerShell复制

1
Get-Process | Get-Member

Output复制

1
2
3
4
5
6
7
8
TypeName: System.Diagnostics.Process

Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
NPM AliasProperty NPM = NonpagedSystemMemorySize
...

备注

Get-Member 消除重复项,因此,如果所有对象都属于同一类型,则它只显示一种对象类型。

但是,如果使用的 InputObject 参数 Get-Member ,则 Get-Member 会将 system.object 对象的数组作为单个单元接收。 它显示对象数组的属性。 (记下 array 符号 ([]system.object 类型名称后面) 。 )

例如,

PowerShell复制

1
Get-Member -InputObject (Get-Process)

Output复制

1
2
3
4
5
6
7
8
TypeName: System.Object[]

Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Object& Address(Int32 )
Clone Method System.Object Clone()
...

此结果可能不是你所期望的结果。 但在理解后,就可以使用它了。 例如,所有数组对象都具有 Count 属性。 可以使用它来计算计算机上运行的进程数。

例如,

PowerShell复制

1
(Get-Process).count

请务必记住,在管道中发送的对象每次传递一次。

在管道中使用本机命令

PowerShell 允许在管道中包含本机外部命令。 但是,请务必注意,PowerShell 的管道是面向对象的,不支持原始字节数据。

从输出原始字节数据的本机程序对输出进行管道或重定向会将输出转换为 .NET 字符串。 这种转换可能会导致原始数据输出损坏。

作为一种解决方法,使用 cmd.exe /csh -c 调用本机命令,并使用 | 本机 shell 提供的和 > 运算符。

调查管道错误

当 PowerShell 无法将管道对象与接收 cmdlet 的参数关联时,该命令将失败。

在下面的示例中,我们尝试将注册表项从一个注册表项移到另一个注册表项。 该 Get-Item cmdlet 将获取目标路径,然后将该路径传递给 Move-ItemProperty cmdlet。 Move-ItemProperty命令指定要移动的注册表项的当前路径和名称。

PowerShell复制

1
2
Get-Item -Path HKLM:\Software\MyCompany\sales |
Move-ItemProperty -Path HKLM:\Software\MyCompany\design -Name product

命令失败,PowerShell 将显示以下错误消息:

Output复制

1
2
3
4
5
6
Move-ItemProperty : The input object can't be bound to any parameters for
the command either because the command doesn't take pipeline input or the
input and its properties do not match any of the parameters that take
pipeline input.
At line:1 char:23
+ $a | Move-ItemProperty <<<< -Path HKLM:\Software\MyCompany\design -Name p

若要进行调查,请使用 Trace-Command cmdlet 跟踪 PowerShell 的参数绑定组件。 下面的示例跟踪管道的执行过程中的参数绑定。 PSHost 参数将跟踪结果显示在控制台中, FilePath 参数会将跟踪结果发送到 debug.txt 文件,供以后参考。

PowerShell复制

1
2
3
4
Trace-Command -Name ParameterBinding -PSHost -FilePath debug.txt -Expression {
Get-Item -Path HKLM:\Software\MyCompany\sales |
Move-ItemProperty -Path HKLM:\Software\MyCompany\design -Name product
}

跟踪的结果很长,但会显示绑定到 Get-Item cmdlet 的值,然后显示绑定到 Move-ItemProperty cmdlet 的命名值。

Output复制

1
2
3
4
5
6
7
8
...
BIND NAMED cmd line args [`Move-ItemProperty`]
BIND arg [HKLM:\Software\MyCompany\design] to parameter [Path]
...
BIND arg [product] to parameter [Name]
...
BIND POSITIONAL cmd line args [`Move-ItemProperty`]
...

最后,它显示尝试将路径绑定到的 Move-ItemProperty 目标 参数失败。

Output复制

1
2
3
4
5
6
7
8
9
...
BIND PIPELINE object to parameters: [`Move-ItemProperty`]
PIPELINE object TYPE = [Microsoft.Win32.RegistryKey]
RESTORING pipeline parameter's original values
Parameter [Destination] PIPELINE INPUT ValueFromPipelineByPropertyName NO
COERCION
Parameter [Credential] PIPELINE INPUT ValueFromPipelineByPropertyName NO
COERCION
...

Get-Help使用 cmdlet 查看 目标 参数的属性。

Output复制

1
2
3
4
5
6
7
8
9
10
Get-Help Move-ItemProperty -Parameter Destination

-Destination <String>
Specifies the path to the destination location.

Required? true
Position? 1
Default value None
Accept pipeline input? True (ByPropertyName)
Accept wildcard characters? false

结果显示 目标 仅按属性名称获取管道输入。 因此,管道对象必须具有一个名为 “ Destination“ 的属性。

使用 Get-Member 可查看来自的对象 Get-Item 的属性。

PowerShell复制

1
Get-Item -Path HKLM:\Software\MyCompany\sales | Get-Member

输出显示该项目是没有 目标 属性的 Microsoft. Win32 对象。 这说明了命令失败的原因。

Path 参数按名称或值接受管道输入。

Output复制

1
2
3
4
5
6
7
8
9
10
11
Get-Help Move-ItemProperty -Parameter Path

-Path <String[]>
Specifies the path to the current location of the property. Wildcard
characters are permitted.

Required? true
Position? 0
Default value None
Accept pipeline input? True (ByPropertyName, ByValue)
Accept wildcard characters? true

若要修复此命令,必须在 cmdlet 中 Move-ItemProperty 指定目标,并使用 Get-Item 获取要移动的项的 路径

例如,

PowerShell复制

1
2
Get-Item -Path HKLM:\Software\MyCompany\design |
Move-ItemProperty -Destination HKLM:\Software\MyCompany\sales -Name product

内部续行符

正如前面所讨论的,管道是一系列由管道运算符连接的命令 (|) ,通常在一行上写入。 但是,为了提高可读性,PowerShell 允许跨多个行拆分管道。 当管道运算符是行上的最后一个标记时,PowerShell 分析器会将下一行连接到当前命令以继续构造管道。

例如,以下单行管道:

PowerShell复制

1
Command-1 | Command-2 | Command-3

可以编写为:

PowerShell复制

1
2
3
Command-1 |
Command-2 |
Command-3

后续行中的前导空格并不重要。 缩进增强了可读性。

PowerShell 7 增加了对管道的延续的支持,并在行的开头提供管道字符。 下面的示例演示如何使用此新功能。

PowerShell复制

1
2
3
4
5
6
7
8
9
10
11
# Wrapping with a pipe at the beginning of a line (no backtick required)
Get-Process | Where-Object CPU | Where-Object Path
| Get-Item | Where-Object FullName -match "AppData"
| Sort-Object FullName -Unique

# Wrapping with a pipe on a line by itself
Get-Process | Where-Object CPU | Where-Object Path
|
Get-Item | Where-Object FullName -match "AppData"
|
Sort-Object FullName -Unique

重要

在 shell 中以交互方式工作时,仅当使用Ctrl + V粘贴时,才将代码粘贴到行的开头。 右键单击 “粘贴操作”,一次插入一个行。 因为行不以管道字符结尾,所以 PowerShell 会将输入视为已完成,并按输入执行该行。

20220716-ranger插件

http%3A//ranger.github.io/

ranger 是一个终端文件管理器,通过ranger 可以实现和windows 中类似的资源管理器的展示功能

ranger 分为三个部分

左边为上级目录结构

中间为当前可以操作的目录

右边为当前目录下面所有的文件

最底端的状态栏显示的是当前选中文件的一些文件信息,比如执行权限和上次修改的时间

安装 sudo apt-get install ranger

进入之后就可以使用 vim 的相关命令了,比如 hjkl 上下左右的操作 、:q 推出 等。

常用命令组合

除了最基本的 vim 操作的常用快捷键不在进行介绍之后,以下为常用的快捷键介绍。

S 使用终端定位到当前所在目录
H 后退
cw 重命名

on/ob 根据文件名进行排序,
oc 根据改变时间进行排序
os 根据文件大小进行排序
ot 根据后缀名进行排序
oa 根据访问时间进行排序
om 根据修改进行排序

utf-8 支持

多栏显示
所选文件 目录的预览

常用文件操作票

类似vim 的控制台和热键

一次重命名多个文件
自动确定文件类型并使用正确的程序运行它们
退出 ranger 后更改 shell 目录
标签、书签、鼠标支持
真彩色图像预览 [如何启用]
视频缩略图 [如何启用]
依赖项
Python(测试版本为 2.7、3.1、3.2、3.3、3.4),支持 ncurses 和(可选)宽 unicode。
寻呼机(默认为less )
可选的:

用于确定文件类型的文件
python 模块chardet,以防编码检测问题
“sudo”以使用“以 root 身份运行”功能
w3m用于以“真彩色”预览图像。
可选,用于增强文件预览(使用“scope.sh”):

img2txt(来自caca-utils)用于预览ASCII-art中的图像
highlight用于代码的语法高亮
用于预览档案的工具
lynx、w3m或elinks用于预览 html 页面
pdftotext 用于 pdf 预览
传输显示查看比特种子信息
mediainfo或 exiftool 用于查看有关媒体文件的信息

ranger wiki https://github.com/ranger/ranger/wiki

配置文件
将默认配置文件复制到该文件~/.config/range
$ ranger –copy-config=all
1
ranger 使用4个主要配置文件:
文件名 描述
commands.py 包含以Python编写的各种函数的实现,用于修改ranger’s行为
rc.conf 用于设置各种选项并将按键绑定到功能
rifle.conf 决定使用哪个程序打开哪个文件
scope.sh 是一个shell脚本,用于生成各种文件类型的预览
宏指令
宏指令可以用在 command 命令中达到缩写命令的目的。

宏指令 功能
%f 高亮显示的文件
%d 当前文件夹的路径
%s 当前文件夹选择的文件
%t 当前文件夹所有标记的文件
%c 当前复制/剪切文件的完整路径
%p 选择文件的完整路径
宏指令 %f、%d、%p 和 %s 有大写的变体,%F、%D、%P 和 %S,指下一个标记。为了表示一个特定的标记,可以在 % 和 字母 中间加一个数字,比如 %7s 指当前文件夹中第七个所选择的文件。
  %c 是唯一一个作用于当前文件夹以外的宏指令,所以你可以通过复制功能达到其他的目的。比如比较在两个在不同文件夹里的文件的不同:复制文件 A(键入 yy),然后切换到文件 B 的目录,并标记文件 B(键入 SPACE),最后键入 @,输入 shell: diff %c %s。对于文件路径的宏命令(%d、%c 和 %p)通常是转义了的,所以可以直接在 shell command 命令中使用。
  此外,如果你创建了使用 Key 的按键绑定,那么宏命令 %Key(或者 %Key0、%Key1、……)在 shell command 中就代表按下 Key 键几次。

文件选择
标记/取消标记:space
反选:v
视觉模式开启/关闭:V,在视觉模式下,移动光标即可选择条目。也可以按 uV或者 ESC 退出。
取消当前目录的全部标记:uv

黄色的 Mrk 符号位于终端右下角,表示此文件夹里有标记的文件。黄色的 Mrk 并不会因为切换目录而消失。

文件操作
复制:yy
剪切:dd
粘贴:pp
删除:dD

将不同目录的文件加入操作列表:ya
重命名:cw
在当前名称基础上重命名:A
类似A, 但是光标会跳到起始位置:I
向下翻一页:Ctrl+f或PAGEDOWN
向上翻一页:Ctrl+b或PAGEUP
向上翻半页:Ctrl+u或者K
向下翻半页:Ctrl+d或者 J
后退到上一个历史记录:H
前进到下一个历史记录:L

目录跳转
父目录上移:[
父目录下移:]
如果当前选中高亮的是是链接目录,直接跳到原目录内:g L
如果当前目录是链接目录内,直接跳到原目录:g l
跳转目录:g+其他

查看与编辑文件
操作 说明
i 或者 F3 调用 Pager 查看文件 与在终端中输入 pager + 文件名 一样。
E 或者 F4 调用默认编辑器编辑文件 可在终端中输入 select-editor 选择默认编辑器。
书签
新建书签:m
打开书签:`
删除书签:um

标签
多标签即多窗口工作。可以在每个窗口来回切换。

新建标签:

g n
Ctrl+n
切换标签:

g t或g T
Tab 或 Shift+Tab
Alt+标签名
关闭标签:g c 或 Ctrl+w

链接
粘贴绝对路径的链接:pl
粘贴相对路径的链接:pL
硬链接:phl

排序
排序:o

名词 描述
atime access time,访问时间
basename 基于文件名
ctime change time,改变时间,文件的权限组别和文件自身数据被修改的时间
extension 扩展名
mtime modified time,修改时间
任务管理
在执行某些操作(比如复制一个大文件)时不能立即完成, 这在 ranger 中就是一个任务. 你可以停止, 启动某个任务, 也可以对某个任务设置优先级.

打开/关闭任务视图:w
在打开的任务视图中:
终止一个任务:dd
降低当前任务的优先级:J
提升当前任务的优先级:K
预览
默认情况下,只能预览文本文件,但是你可以通过设定配置 use_preview_script 和 preview_files 为 true 来增加可以预览的文件类型。默认的预览脚本是 ~/.config/ranger/scope.sh,安装如下工具(每种类型只需要一个)就预览对应的文件类型,scope.sh 会自动调用它们:

工具 预览文件类型 安装
lynx
elinks
w3m 网页 sudo apt install lynx
sudo apt install elinks
sudo apt install w3m
highlight
pygmentize 高亮代码 sudo apt install highlight
pip install pygmentize
img2txt 图片 sudo apt install caca-utils
atool
bsdtar
unrar
7z 压缩包 sudo apt install atool
sudo apt install libarchive-tools
sudo apt install unrar
sudo apt install p7zip
pdftotext
mutool PDF sudo apt install poppler-utils
sudo apt install mupdf-tools
mediainfo
exiftool 媒体 sudo apt install mediainfo
sudo apt install libimage-exiftool-perl
ffmpegthumbnailer 视频缩略图 sudo apt install ffmpegthumbnailer
fontimage 字体 sudo apt install fontforge
transmission-show 种子 sudo apt install transmission-cli
独立于 preview script,有一个通过将图像用字符画的形式直接绘制到终端中的预览功能。要启用此功能,将 preview_images 选项设置为 true 并将 preview_images_method 选项设置为一种图像预览模式(需要安装这些工具):

预览模式 是否适用于 ssh 注意 设置 preview_images_method 为
w3m 否 与 tmux 不兼容(尽管它可以工作)。 w3m
iTerm2 是 iTerm2 编译时必须添加 image preview support 选项。 iterm2
urxvt 否 urxvt 编译时必须添加 pixbuf support 选项。此模式本质上是将图像暂时设置为终端背景,这样它将破坏以前设置的任何图像背景。 urxvt
urxvt-full 否 与 urxvt 相同,但使用整个终端窗口预览图片。 urxvt-full
获取帮助
按下?时获取帮助,再使用按键选择帮助类型:

m: opens the man page for ranger(打开官方man手册)
k: opens a list of keybindings(打开按键绑定列表)
c: opens a list of available commands and descriptions(打开命令列表)
s: opens a list of settings and their current values(打开设置列表)
官方man手册网站:https://ranger.github.io/ranger.1.html

其他
查找:f
搜索:/
修改设置:z
显示隐藏文件:zh
打开/关闭文件预览功能:zp
打开目录预览功能:zP
过滤器(如过滤pdf文件, zf+pdf,回车):zf
在当前目录打开终端:S
目录展平::flag (level)
批量重命名:标记选中后,输入:bulkrename

参考
官方用户指南
http://www.mikewootc.com/wiki/linux/usage/ranger_file_manager.html
博客链接【推荐】
https://blog.csdn.net/xkfz008/article/details/7339530

安装插件
ranger也有很多预览时用的插件 :

sudo apt-get install caca-utils # img2txt 图片
sudo apt-get install highlight # 代码高亮
sudo apt-get install atool  # 存档预览
sudo apt-get install w3m # html页面预览
sudo apt-get install mediainfo # 多媒体文件预览
1
2
3
4
5
当然还有其他文件格式的预览

sudo apt-get install catdoc # doc预览
sudo apt-get install docx2txt # docx预览
sudo apt-get install xlsx2csv # xlsx预览
1
2
3
其他 :
zh/退回键 显示隐藏文件

zp 打开/关闭文件预览功能
zP 打开目录预览功能
1
2
3
4
当然ranger也是直接支持终端的基本命令的, 比如可以直接使用cd.

其次也支持其他方便操作的快捷方式. 如 : g可以快速的通过按键进入指定的目录中. 还有d等操作

最后, ranger还是直接支持鼠标点击.

参考 :
Ranger
http://www.mikewootc.com/wiki/linux/usage/ranger_file_manager.html

20220713-电子书管理工作流

基于zotero+zotfile+syncthing+ReadEra,实现电脑+手机两端同步的电子书管理流程

视频大纲:https://logseq.fishyer.com/#/page/%E7%94%B5%E5%AD%90%E4%B9%A6%E7%AE%A1%E7%90%86%E5%B7%A5%E4%BD%9C%E6%B5%81

更多工具推荐,欢迎查看 https://logseq.fishyer.com

public:true
1-用Zlibrary下载书,或者是其他网络渠道,比如百度网盘、阿里网盘、淘宝
2-导入到Zotero里面
安装Zotfile插件,配置附件路径为Dropbox网盘下的路径
3-配置Syncthing,同步书籍文件夹到Android手机上
电脑-Windows
C:\Users\Administrator\Dropbox\MyObsidian\MyAttachment\MyZotoreFile
手机-Android
/storage/emulated/0/MyObsidian
主要就是同步MyObsidian文件夹,下面的子文件夹自然就同步了
其实Mac电脑也支持,不过ios手机的话就稍稍麻烦一点
4-阅读方式
PDF就在电脑上用Zotero本身看
很方便截图标注
epub等其他格式,就直接在Android手机上ReadEra看
其实也可以用Calibre将其他类型转换为PDF,但是我现在的主力阅读器是手机,所以就不转PDF了
作用
Zotero-书架,添加标签和添加分类等
ReadEra-阅读器,方便随时随地看书

20220713-计算机定时启动程序

首先,shutdown.exe 的参数 -h 是睡眠。其次,在windows10的控制面板-管理工具-任务计划程序(当然,你从其他路径进去也一样)

  1. 打开任务计划程序,在操作里选择创建基本任务。

  2. 第一步页面是让你写个你的任务名称,这个随意。

  3. 点下一步后会来到触发器页面,在这里你选每天。

  4. 继续下一步会来到每日页面,在这里设置一个开始的时间,然后间隔是一天。

  5. 再下一步会来到操作页面,选择启动程序。

  6. 再再下一步会来到完成页面,程序填shutdown.exe,然后添加参数(可选)里填 -h

  7. 完成。

到时间电脑就会睡眠了,然后再开机后你会发现电脑之前打开的页面都还原封不动在。你可以先测试下。

python中的yield用法

yield 关键字做了什么

可以先把yield 当作return 的同胞兄弟来看

有return的函数直接返回所有结果,程序终止不再运行,并销毁局部变量

而有yield 的函数则返回一个可迭代的generator 生成器对象,你可以使用for 循环或者调用next 方法遍历生成器对象来提取结果

在python中,使用了yield 的函数被称为生成器,有点套娃的感觉

调用一个yield ,就会返回一个生成器对象

在调用生成器函数的过程中,每次遇到yield 时函数会暂停并保存当前所有的运行信息,保留局部变量,返回yield 的值,并在下一次执行next 方法时从当前位置继续运行,直到生成器全部遍历完

可以看到,simple——generator 函数返回一个生成器,调用next 方法后,函数开始运行,遇到第一个yield 关键字,返回生成的值 1 ,程序暂停

带yield 的函数是一个生成器,这个生成器有一个方法就是next next 就相当于 下一步 生成那个数,这一次的next 开始的地方是接着上一次的next 停止的地方执行的

所以调用next 的时候,生成器并不会从函数的开始执行,只是接着上一步停止的地方开始,然后遇到yield 后,return 出要生成的数,此步就结束

生成器有哪些作用,如果想具体化数据的形式,他唱会将数据存储在一个列表中,但这样做,列表的内容将占用有形内存,列表越大,占用的内存资源就越多

但是,如果数据集有某种逻辑,就不必存储在一个列表中,只需编写一个生成器,它将在需要时生成这些值,基本不占用内存

  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~