这可能是一个过于笼统的问题,但是...我试图从shell脚本中移动目录而感到难过.我不是一个*nix高级用户,但我很乐意通过命令行完成大多数任务.我想调用一个可以将"我"移动到目录的脚本,而不仅仅是类似于以下内容的脚本过程:
prompt:> goto lit
Run Code Online (Sandbox Code Playgroud)
goto别名在哪里 - > goto='./goscript'
并且
goscript有一些简单的代码,例如:
cd /path to work dirs/lit/user dir
Run Code Online (Sandbox Code Playgroud)
(假设每个用户都有一个目录/点亮)
我通过设置我的个人别名来移动到所需的目录,运行脚本,然后返回到原始目录,我自己避免了这个问题.这个问题是由一个使用类似方法的同事带给我的,但是想让这个过程更通用,所以我们不需要创建我们需要的每个别名.我认为这将是一个容易解决的问题,但我很难过,因为我还没有太多的shell脚本编写经验......
我正在尝试perl脚本中的代码,需要在bash中调用另一个文件.不确定,这是最好的方法吗?我可以使用system()直接调用它吗?请指导/给我一个示例方式.
从我到目前为止所尝试的:
#!/usr/bin/perl
system("bash bashscript.sh");
Run Code Online (Sandbox Code Playgroud)
Bash:
#!/bin/bash
echo "cdto codespace ..."
cd codetest
rm -rf cts
for sufix in a o exe ; do
echo ${sufix}
find . -depth -type f -name "*.${sufix}" -exec rm -f {} \;
done
Run Code Online (Sandbox Code Playgroud)
我执行perl脚本时出错:没有这样的文件或目录代码测试
意外令牌附近的语法错误`do
我正在开发一个项目,以在我的 GitLab CE 实例中远程创建一个存储库(该部分正在运行!)然后使用项目名称(正在运行!)和 cd 到该目录中创建一个目录(这是我的位置问题...)然后在本地初始化并添加远程存储库(工作!!!)
我遇到的问题只是更改为新目录。无论我是使用下面显示的代码,还是只是尝试cd "$1"或cd "$*"我似乎根本无法让它工作!
#!/bin/bash
dir="$*"
wd=$(pwd)
fulldir="$(pwd)/${dir// /\\ }/"
echo "Creating directory $dir"
mkdir -v "$dir"
cd "$dir"
echo "Changing current directory to $dir"
echo $dir
echo $fulldir
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是:
root@cana:~# ls
glnewproj test
root@cana:~# bash test Hello World
Creating directory Hello World
mkdir: created directory 'Hello World'
Changing current directory to Hello World
Hello World
/root/Hello\ World/
root@cana:~# ls
Hello World glnewproj test
root@cana:~# pwd
/root
Run Code Online (Sandbox Code Playgroud)
如何cd进入我新创建的目录?我完全被难住了。
我想更改目录以在每个目录中执行任务。以下是代码:
for i in {1..10}
do
cd dir/subdir$i
bla... bla.. bla..
done
Run Code Online (Sandbox Code Playgroud)
但是我收到错误:
not found [No such file or directory]
Run Code Online (Sandbox Code Playgroud)
我已尝试以下操作,但仍然出现与上述相同的错误:
cd $(echo dir/subdir"$i")
cd $(eval dir/subdir"$i")
Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的工作目录'/ c/My_Objective'中的UNIX命令行执行bash shell脚本'./go_cd'.我希望脚本所做的就是更改为新目录'/ c/My_Objective/project'.脚本输出表明目录已更改为'/ c/My_Objective/project,但是当脚本完成执行并返回到当前命令行时,目录仍处于'/ c/My_Objective'.为什么目录没有改变?
#!/bin/bash
## current directory is '/c/My_Objective'
pwd
cd project
## new directory should now be '/c/My_Objective/project'
pwd
Run Code Online (Sandbox Code Playgroud)
有没有办法获取命令,即'cd',在新脚本进程中执行会被传递回原始进程,在那里我开始'go_cd'脚本执行?
温斯顿
这是我第一次创建Shell脚本.
目前我正在使用nodejs,我正在尝试创建一个Shell脚本并在其中使用git.
#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
Run Code Online (Sandbox Code Playgroud)
这个脚本位于我的桌面上,它可以工作(是的,我安装了git).
在下载了git存储库之后,我想:
cd /site
npm install
Run Code Online (Sandbox Code Playgroud)
我安装了Nodejs和NPM.
我只想潜入创建的文件夹并运行命令,npm install所以我想这样做:
#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
echo "cd /site"
echo "npm install"
Run Code Online (Sandbox Code Playgroud)
我也读过别名,我试过了
#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
alias proj="cd /site"
proj
echo "npm install"
Run Code Online (Sandbox Code Playgroud)
但没有任何作用..
谁可以帮助我?
我正在尝试更改一个被调用的bash脚本中的目录.为此,我尝试使用cd命令.但是在脚本结束后,当前目录在脚本调用之前恢复到位置.我也尝试改变PATH变量,但它也没有显示任何效果.有没有办法做到这一点?
所以我一直在开始编写 bash 脚本,并且我正在制作一个将从源代码自动安装的脚本(所以基本上它只是为你编译 tarball)。我需要它来更改目录才能转到 tarball。但是,每当我使用此命令时
read path
cd $path
Run Code Online (Sandbox Code Playgroud)
我总是收到错误tar-installer.sh: line 13: cd: ~: No such file or directory
对于任何需要它的人,这里是完整的脚本......
#!/bin/bash
# This program auto-installs tarballs for you.
# I designed this for Linux noobies who don't
# know how to install tarballs. Or, it's for
# people like me who are just lazy, and don't
# want to put in the commands ourselves.
echo "Tar Installer v1.1"
echo "Gnu GPL v2.1"
echo -n "Path to tarball:"
read path …Run Code Online (Sandbox Code Playgroud) 当我工作时,我经常这样做:
cd ~/dev/lab/prod/
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,但我希望能够运行:
prod
Run Code Online (Sandbox Code Playgroud)
具有相同的效果(更改为 ~/dev/lab/prod 文件夹)。
我想知道可以用来从子shell更改父shell的目录的任何机制.例如,我在$ HOME中运行脚本"settings.sh".我的$ HOME有一个目录$ HOME/TEST/run.如果我的"settings.sh"脚本如下所示
#!/bin/bash
# some shell related code
# some shell related code
cd $HOME/TEST/run
exit 0
Run Code Online (Sandbox Code Playgroud)
我在$ HOME的命令提示符下执行上面的脚本.执行后,我希望我的命令提示符在目录$ HOME/TEST/run中.我明白在子shell中,它正在被cd到$ HOME/TEST/run,但是在执行结束时,它又回到了$ HOME.
使用单个脚本是否有任何优雅的方法来完成上述操作.一种方法是修改脚本"settings.sh"以生成另一个脚本,然后使用".$ HOME/generatedScript.sh"
我在一个名为/ Users/tcl/scripts/gotoroot的文件中有这个脚本:
echo "hello"
cd /
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到了这个:
User:scripts tcl$ pwd
/Users/tcl/scripts
User:scripts tcl$ gotoroot
hello
good bye
User:scripts tcl$ pwd
/Users/tcl/scripts
User:scripts tcl$
Run Code Online (Sandbox Code Playgroud)
目录没有改变,我不知道为什么?它应该是/,而不是/ Users/tcl/scripts
我怎么能写一个像'cd'那样的Go程序呢?
我试过运行一个命令,但它没有用.
func main() {
cmd := exec.Command("cd", "/media/")
err := cmd.Run()
log.Printf("Command finished with error: %v", err)
}
Run Code Online (Sandbox Code Playgroud)