Windows中Linux的“〜”(波浪号)的含义是什么?


72

在Linux中,我们可以通过在以下位置输入tilde(~)字符来返回用户家cd

cd ~

在Windows中如何做?

每次,我需要输入:

cd C:\Document and Settings\freewind

太无聊了。


2
考虑使用cygwin吗?
Paul R

8
实际上,在大多数Linux shell下,“〜”是“ cd”的默认设置,因此只需将“ cd”转到您的homedir


4
答案就是“ cd〜”。意味着,您也可以在Windows中使用相同的命令。但是,您不应该在CMD中尝试此命令,因为它已经过时且Microsoft已停止开发。使用“ Windows PowerShell”,相同的命令将正常运行。
苹果II

3
PowerShell中附带的Win7 +
艾萨克Dontje林德尔

Answers:


43

cd /d "%HOMEDRIVE%%HOMEPATH%" 会做到的-但是我不确定您是否认为这是一种改进。

您还可以为上述命令定义别名:

doskey cdhome=cd /d "%HOMEDRIVE%%HOMEPATH%"

在此之后,就很简单了cdhome


4
@Freewind:您一定喜欢默认的Windows Shell。
乔恩

10
@abatishchev:好问题。关于SF的这个问题似乎表明%USERPROFILE%是可取的。
乔恩

3
您也可以使用cd〜作为宏名,而不是cdhome。
jftuga 2011年

3
@abatishchev:Windows NT帐户可以附加一个“主目录”路径,该路径与“配置文件目录”分开。该配置文件保留您的设置(注册表),应用程序数据等。另一方面,主目录用于您自己的文件 -程序首次显示“打开/保存”对话框时,它将从主目录开始。(Windows 95/98使用它的方式有所不同;不记得具体情况。)在Active Directory环境中,此功能非常有用,用于在网络共享上存储文件,但将配置文件保留在本地。
grawity 2011年

2
@jftuga:甚至~
grawity 2011年

62

您可以使用cd /d %USERPROFILE%,如果您使用CMD。

或者cd ~如果使用PowerShell,则可以使用。


4
+1,但还要在变量周围加上引号(也许是c:\documents and settings\...,除非使用引号,否则空格会破坏它)
Jon

7
@Jon:cd是一个例外。由于它始终只接受一个参数,因此无需使用引号。(在Windows上,程序和内置程序必须自己解析其命令行,而Shell则不这样做。)但是,始终引用路径一种好习惯。
grawity 2011年

1
@barlop:通常是CommandLineToArgvW();CLR / MinGW / Cygwin运行时在调用main()之前也会自动使用它们自己的等效项。但是,某些程序的解析器完全是从头开始编写的,例如,cmd.exe本身及其古怪的代码/c
grawity

1
@barlop:如果要在给定命令中使用引号(或重定向),则不会。是不是/c "C:\foo bar\baz" "my file.txt"还是/c "\"C:\foo bar\baz\" \"my file.txt\""/c ""C:\foo bar\baz" "my file.txt""?更糟糕的是,解析取决于是否/s指定得更早,是否存在特殊字符,可执行文件是命名C:\foo bar\baz还是仅C:\foo...
grawity 2011年

1
@TheLQ批处理脚本甚至更加容易。我可以通过键入一个字符来完成相同的结果。请参阅以下我的答案以获取描述。
weberc2

13

一种可能性是在subst命令提示符下使用命令:

subst z: C:\Document and Settings\freewind

每次导航到驱动器Z:时,您都会在查看用户文件夹。

缺点是,您每次登录时都需要运行它。我使用了一个批处理文件,并将其放在启动文件夹中,但是可能有更优雅的解决方案。

好处是,它与doskey别名不同,它可以通用(Windows资源管理器,浏览对话框等),而不仅是在命令提示符下更改目录时。对于具有旧浏览对话框且驱动器号位于最高级别而不是“桌面”的旧程序的旧程序尤其有用。


您可以映射驱动器,并使其在登录后自动重新映射。无需使用
替代

1
@LưuVĩnhPhúc可能并不完全合乎逻辑,但是除非我真的必须使用它们,否则我倾向于避免Windows网络共享。我觉得性能和可靠性是不可预测的?如果您有另一种更好的替代方法,请以自己的答案发布,以造福所有人:)
莫。

6

你可以这样做:

cd %homepath%

5
如果您使用的是其他驱动器,则此操作将中断(例如,您使用的是E:homedir处于打开状态)C:
Piskvor 2011年

4

您可以创建一个名为~.bat包含的批处理文件

@echo off
cd /d %USERPROFILE%

并将其添加到您的PATH变量中(开始-> [右键单击“计算机”]->属性->“高级系统设置” [在左列]->“环境变量”

从那里,只需编辑PATH变量以包含包含~.bat文件的文件夹。(这允许您仅使用文件名而不是文件的绝对路径从任何地方调用脚本)

另外,请确保您的PATHEXT环境变量包含.BAT某处(这使您可以键入~而不是~.bat)。

当您需要使用它时,只需~在命令提示符下输入。该解决方案是永久性的-您不必在每次启动Shell时都进行设置,也不需要破解注册表。


2

不幸的是,我不知道一个完美的解决方案,但是有两个错误的选择:

选项1:将〜设置为doskey的命令别名

doskey ~=cd /d %USERPROFILE%

这将使您只需键入~chdir并将其添加到您的homedir。

C:\>~
C:\Users\a>

显然,这缩短了回家的击键次数(即使与Linux相比也是如此),但健壮性较差,因为您不能真正将其用作其他路径的一部分,也不能仅通过CD回家就对其进行更多处理。

选项2:将〜设置为变量

如果您想要一个更强大的选项,另一个选择是设置一个var:

set ~="%USERPROFILE%"

但是使用它的方式如下:

E:\>cd /d %~%
C:\Users\a>

它也可以注入到大多数路径中,而不仅限于将其复制到首页。

两种选择同时进行

另外,您可以同时实现这两种方法。如果周围有%,则它将使用该变量-否则它将被~视为命令。

C:\>:: ECHO (display) THE VALUE OF %~%
C:\>echo %~%
C:\Users\a

C:\>:: ChDir to ~\DESKTOP
C:\>cd /d %~%\Desktop

C:\Users\a\Desktop>:: USE THE ~ COMMAND
C:\Users\a\Desktop>~

C:\Users\a>

另一个提示(与Kinda有关):

在公司的机器上,至少在家用PC上,这样可以节省更多的击键,这不太可能被接受,将您的%USERPROFILE%目录命名为简单名称并不是一个坏主意。从上面的示例中可以看到,我的用户目录是C:\Users\a-我以前总是有'aplocher'或'adamp',当我改成一个字母时,这很神奇。


1

在Powershell中,%variable%语法不起作用。你可以这样做 :

cd $env:USERPROFILE

2
您可以cd ~在PowerShell中使用。
wjandrea

0

使用PowerShell,您可以尝试以下方法从任意位置导航目录,只要您知道用户名并授予文件目录权限即可。

cd \..\Users\yourUserName\Documents
cd \..\Users\yourUserName\Downloads
cd \..\Users\yourUserName\Desktop
cd \..\Users\yourUserName\music

请参阅下面的PowerShell(64位)示例。我在Windows 7 Pro 64位计算机上对此进行了测试。

Windows 7 Pro 64位上的Linux Lilde等效文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.