相关疑难解决方法(0)

Bash Shell Scripting:我错过了什么简单的逻辑

这可能是一个过于笼统的问题,但是...我试图从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脚本编写经验......

linux bash shell pid

6
推荐指数
3
解决办法
2223
查看次数

从perl脚本调用bash脚本

我正在尝试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

bash perl

6
推荐指数
2
解决办法
4万
查看次数

bash 脚本来创建和 cd 到名称中带有空格的目录

我正在开发一个项目,以在我的 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进入我新创建的目录?我完全被难住了。

编辑: …

unix linux bash cd mkdir

4
推荐指数
1
解决办法
1551
查看次数

在Linux中使用循环更改目录

我想更改目录以在每个目录中执行任务。以下是代码:

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)

unix linux bash

4
推荐指数
1
解决办法
3277
查看次数

在UNIX命令行上运行的Bash shell脚本不会更改当前的shell环境

可能重复:
为什么"cd"不能在bash shell脚本中工作?

我正在尝试从我的工作目录'/ c/My_Objective'中的UNIX命令行执行bash shell脚本'./go_cd'.我希望脚本所做的就是更改为新目录'/ c/My_Objective/project'.脚本输出表明目录已更改为'/ c/My_Objective/project,但是当脚本完成执行并返回到当前命令行时,目录仍处于'/ c/My_Objective'.为什么目录没有改变?

下面是我用作测试的简单Bash shell脚本.

#!/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'脚本执行?

温斯顿

bash

3
推荐指数
1
解决办法
2129
查看次数

如何更改Shell脚本中的目录?

这是我第一次创建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)

但没有任何作用..

谁可以帮助我?

git shell

2
推荐指数
1
解决办法
1万
查看次数

在bash脚本中永久更改目录

我正在尝试更改一个被调用的bash脚本中的目录.为此,我尝试使用cd命令.但是在脚本结束后,当前目录在脚本调用之前恢复到位置.我也尝试改变PATH变量,但它也没有显示任何效果.有没有办法做到这一点?

linux bash ubuntu cd

1
推荐指数
1
解决办法
1832
查看次数

如何使用 Bash 读取命令捕获包含“~”(波浪号)的文件路径

所以我一直在开始编写 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)

bash tilde

1
推荐指数
1
解决办法
3023
查看次数

Ubuntu 如何创建执行命令的快捷方式

当我工作时,我经常这样做:

cd ~/dev/lab/prod/
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,但我希望能够运行:

prod
Run Code Online (Sandbox Code Playgroud)

具有相同的效果(更改为 ~/dev/lab/prod 文件夹)。

shell ubuntu command-line

1
推荐指数
1
解决办法
5631
查看次数

更改父shell的目录

我想知道可以用来从子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"

bash csh tcsh sh

0
推荐指数
1
解决办法
1163
查看次数

为什么更改dir(cd)在这个mac脚本中不起作用?

我在一个名为/ 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

bash

0
推荐指数
1
解决办法
490
查看次数

从Go更改父shell目录

我怎么能写一个像'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)

go

0
推荐指数
1
解决办法
199
查看次数

标签 统计

bash ×9

linux ×4

shell ×3

cd ×2

ubuntu ×2

unix ×2

command-line ×1

csh ×1

git ×1

go ×1

mkdir ×1

perl ×1

pid ×1

sh ×1

tcsh ×1

tilde ×1