我对如何dirs工作感到有些困惑。文档说:
目录
不带参数,打印目录堆栈的内容。使用
pushd命令将目录添加到此堆栈,并使用cd或popd命令删除。
一季度。我从来没有使用popd也没有pushd,但我注意到,dirs跟踪在那里我一直目录(这对我来说意味着,这cd 增加了,而不是移除了,目录栈)
Q.2使用 长时间会话后cd,通常dirs会打印一长串目录,但此列表首先打印最近的目录,并以最后一个目录结束,因此如果我有一个长列表,屏幕会滚动,然后我无法轻易看到最新的目录集(通常是我最感兴趣的目录)。
如何以相反的顺序打印目录列表?
我试过了dirs | sort -r,但这不能正确地对条目进行排序,例如我得到
20 /foo20/bar
2 /foo2/bar
19 ...
18
...
16
11
10
1
0
Run Code Online (Sandbox Code Playgroud)
未分类的原件看起来像
1 /foo/bar
2 /foo2/bar
3 ...
..
9
10
11
..
20
21
..
30
Run Code Online (Sandbox Code Playgroud) 我只想alias iex="iex -S mix"为一个目录定义一些- 只有当我cd进入这个目录时,这个别名才应该起作用。另一个要求 - 此功能应放置在此目录、hook文件或其他内容中,因为我想将此目录作为 git repo 共享。
我怎样才能做到这一点?
我有单独的 bash 任务脚本。这是损坏的一个:
#!/bin/bash
PATH=/home/name/
mkdir $PATH
cd $PATH && echo "done."
exit 0
Run Code Online (Sandbox Code Playgroud)
今天它坏了,第一次它根本不想运行 cd,而是创建了目录。第二次它只是说“找不到 mkdir 命令”。完全使用分号运行此命令可以正常工作。什么情况?
今年早些时候,我在我的树莓派上安装了 octoprint 来控制我的 3D 打印机。
我已经能够使用 octoprint 让 pi 同时控制 2 台打印机。我还添加了第二个摄像头(USB)来查看第二台打印机。我设法找到一种方法来启动第二个相机并编辑 octoprint 以查看两者之间的差异。
我唯一的问题是每次我再次启动树莓派时我都必须更改为不同的工作目录:
cd ~/mjpg-streamer
Run Code Online (Sandbox Code Playgroud)
然后启动第二个摄像头:
./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so -p 8090"&
Run Code Online (Sandbox Code Playgroud)
我希望能够编写一个脚本来在启动时启动相机,这样我就不必每天通过 ssh 到我的树莓派、登录并发送命令。我发现了很多有关编写启动脚本的信息,但没有发现有关更改其中的工作目录的信息。
我一直用它来编写启动脚本(不成功):
sudo nano /etc/init.d/startsecondcamera
Run Code Online (Sandbox Code Playgroud) 我有几个子目录很深,我输入cd ..并收到此错误:
cd: ..: No such file or directory
我很困惑——当然有一个父目录,我在里面!稍微挖掘一下,我的同事从我下面重命名了一个祖父目录,当我尝试移动到我的父目录时,出现了上述错误。我试图像这样重现这个:
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> pwd
/n01/data/adf/temp/TEMPTEST/SUB1/SUB2
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> mv /n01/data/adf/temp/TEMPTEST /n01/data/adf/temp/NEWTEMPTEST
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> pwd
/n01/data/adf/temp/NEWTEMPTEST/SUB1/SUB2
Run Code Online (Sandbox Code Playgroud)
现在我迷路了,漂泊不定,更改到父目录会给我带来与以前相同的错误。
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> cd ..
server|/n01/data/adf/temp/NEWTEMPTEST/SUB1>
Run Code Online (Sandbox Code Playgroud)
没有错误。我成功更改了目录。发生了什么?为什么这个错误不像第一次?
该man curl入门curl -O说:
如果要将文件保存在不同的目录中,请确保更改 cur? 在使用 -O, --remote-name 标志调用 curl 之前租用工作目录!
为什么不能将文件下载到特定目录,而必须cd /example将文件下载到特定目录?
我知道用wget这种方式是可能的:
wget -P /example https://example.com/file
Run Code Online (Sandbox Code Playgroud)
但我确实想知道为什么它似乎不是与curl.
我想知道更改到调用脚本的目录的安全或 Unix 兼容方式是什么。
这两种方法甚至可以在包含空格和特殊字符的目录中工作,而无需使用引号。但是在某些情况下这可能不起作用。或者有吗?
#!/bin/bash
cd $(dirname $0)
pwd
cd ${0%/*}
pwd
~/test 1"\ ü`\($$ ./cd.sh
/home/syss/test 1"\ ü`\($
/home/syss/test 1"\ ü`\($
Run Code Online (Sandbox Code Playgroud) 在 Mac 终端上运行的这个 bash 文件无法更改目录。而是在实际存在时报告它不存在。我做错了什么吗?
#!/usr/bin/env bash
set -e
read name
APPLICATION_PATH="~/Documents/meteor/apps/$name"
cd "${APPLICATION_PATH}"
Run Code Online (Sandbox Code Playgroud) 当你cd进入它时,是否可以将脚本设置为在特定目录中运行?
例如,如果/foo是一个带有git项目的目录,是否可以cd /foo自动运行git status或某些npm脚本?
请不要将答案严格链接到git,想象这可能是任何其他命令/脚本。
我在一个包含 3 个文件夹的目录中。执行后,ls -1它们的顺序如下:
folder1
folder2
folder3
Run Code Online (Sandbox Code Playgroud)
我想快点cd进去folder2。
我能够写一个函数来快速cd进入folder1
这是我的功能。
f1 () {
cd $(ls -d */|head -n 1)
}
Run Code Online (Sandbox Code Playgroud)
我需要一个名为f2. 执行时,cds 进入folder2.
(文件夹按 排序ls -1。我正在使用zsh)
cd-command ×10
bash ×4
shell ×2
shell-script ×2
zsh ×2
alias ×1
camera ×1
curl ×1
directory ×1
download ×1
init-script ×1
mkdir ×1
posix ×1
pwd ×1
raspberry-pi ×1
sysvinit ×1
wget ×1