Questions tagged «shell»

术语“外壳”是指通常与Unix和Linux操作系统相关联的一类基于文本的交互式命令解释器。对于有关shell脚本的问题,请使用更具体的标签,例如'bash','powershell'或'ksh'。没有特定标签的情况下,应该假定使用便携式(符合POSIX的)解决方案,尽管最好另外使用“ posix”或“ sh”。

4
Unix Shell脚本截断大文件
我正在尝试编写一个Unix脚本,它将截断/清空一个文件,当文件达到3GB的空间时,该文件将被应用程序连续写入/打开。我知道以下命令可以做到: cp /dev/null [filename] 但是我将在生产环境中自动将其作为cron作业-只是在此处发布以查看你们在执行类似操作时是否遇到任何问题。
87 bash  shell  truncate 


7
bash-如何将结果从哪个命令传递到cd
如何将which命令的结果传递给cd? 这就是我想要做的: which oracle | cd cd < which oracle 但是它们都不起作用。 有没有办法做到这一点(当然不是复制/粘贴)? 编辑:再三考虑,此命令将失败,因为目标文件不是文件夹/目录。 因此,我正在考虑并找到一种更好的方法来摆脱尾随的“ / oracle”部分(sed或awk,甚至是Perl):) 编辑:好的,这就是我最后得到的: cd `which oracle | sed 's/\/oracle//g'`
87 linux  bash  shell  cd 

12
使用sed批量重命名文件
目的 更改这些文件名: F00001-0708-RG-biasliuyda F00001-0708-CS-akgdlaul F00001-0708-VF-hioulgigl 这些文件名: F0001-0708-RG-biasliuyda F0001-0708-CS-akgdlaul F0001-0708-VF-hioulgigl 壳牌代码 去测试: ls F00001-0708-*|sed 's/\(.\).\(.*\)/mv & \1\2/' 去表演: ls F00001-0708-*|sed 's/\(.\).\(.*\)/mv & \1\2/' | sh 我的问题 我不了解sed代码。我了解替代命令 $ sed 's/something/mv' 手段。而且我对正则表达式有所了解。但是我不明白这里发生了什么: \(.\).\(.*\) 或在这里: & \1\2/ 在我看来,前者的意思是:“一个字符,然后是一个字符,然后是一个字符的任何长度序列”,但是肯定有更多的东西。至于后面的部分: & \1\2/ 我不知道。
87 bash  shell  sed  file-rename 

13
如何在Swift脚本中运行终端命令?(例如xcodebuild)
我想用swift替换我的CI bash脚本。我不知道如何调用普通的终端命令,例如ls或xcodebuild #!/usr/bin/env xcrun swift import Foundation // Works println("Test") // Works ls // Fails xcodebuild -workspace myApp.xcworkspace // Fails $ ./script.swift ./script.swift:5:1: error: use of unresolved identifier 'ls' ls // Fails ^ ... etc ....
87 swift  bash  shell  xcodebuild 


6
不断从Ruby中的外部进程的STDOUT中读取
我想通过ruby脚本从命令行运行Blender,然后将逐行处理Blender给出的输出以更新GUI中的进度条。搅拌器是我需要阅读其标准输出的外部过程并不是很重要。 当Blender进程仍在运行时,我似乎无法捕获Blender通常打印到Shell的进度消息,并且我尝试了几种方法。我似乎总是在搅拌器退出后(而不是在它仍在运行时)访问搅拌器的标准输出。 这是失败尝试的示例。它确实获取并打印了Blender输出的前25行,但仅在Blender进程退出后: blender = nil t = Thread.new do blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1" end puts "Blender is doing its job now..." 25.times { puts blender.gets} 编辑: 为了更清楚一点,调用搅拌器的命令在shell中返回输出流,指示进度(第1-16部分已完成,等等)。似乎所有对“获取”输出的调用都被阻止,直到搅拌机退出为止。问题是当Blender仍在运行时如何访问此输出,因为Blender会将其输出打印到Shell。
86 ruby  shell  process  stdout  stdin 

4
我的环境变量是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow的主题。 7年前关闭。 改善这个问题 我想在bash中找出我的环境变量。他们存放在某个地方吗?
86 linux  bash  shell  ubuntu 

6
使用find命令,但排除两个目录中的文件
我想找到以结尾的文件_peaks.bed,但排除tmp和scripts文件夹中的文件。 我的命令是这样的: find . -type f \( -name "*_peaks.bed" ! -name "*tmp*" ! -name "*scripts*" \) 但这没有用。中的文件tmp和script文件夹仍将显示。 有人对此有想法吗?
86 linux  shell  unix  find 

6
为什么sudo cat给出了拒绝权限,但sudo vim正常工作?
我正在尝试在我的arch的pacman.conf文件中自动添加存储库源,但是要echo在shell脚本中使用该命令。但是,它失败是这样的: sudo echo "[archlinuxfr]" >> /etc/pacman.conf sudo echo "Server = http://repo.archlinux.fr/\$arch" >> /etc/pacman.conf sudo echo " " >> /etc/pacman.conf -bash: /etc/pacman.conf: Permission denied 如果我使用vim手动更改/etc/pacman.conf, sudo vim /etc/pacman.conf 并使用退出vim :wq,一切正常,我的pacman.conf已手动更新,没有“权限被拒绝”的投诉。 为什么会这样呢?我该如何sudo echo上班?(顺便说一句,我也尝试过使用,sudo cat但由于权限被拒绝也失败了)
86 bash  shell  echo  cat 

10
如何更新zip存档中的一个文件
是否可以在不解压缩的情况下替换zip文件中的文件而删除旧文件,添加新文件并重新压缩回来? 原因是我有一个zip文件,该文件确实很大,有时我必须更新该zip文件中的一个xml。解压缩并重新压缩需要很长时间。因此,我只想通过一个脚本替换zip中的一个xml。我已经拥有检查我所拥有的xml更新的功能。 那么是否可以仅替换一个xml而无需解压缩和重新压缩呢? 抱歉,我会使用zip命令来执行类似操作,但问题是该脚本实际上是用于android手机的,而zip不是命令,我可以使用,很遗憾,我将其遗漏了。如果可以的话,我肯定会使用zip,但我只为droid解压缩,然后在busybox中有tar,但是tar无法满足我的需求
86 bash  shell  zip 

5
我可以从另一个Shell脚本调用Shell脚本的功能吗?
我有2个Shell脚本。 第二个shell脚本包含以下函数 second.sh func1 func2 first.sh将使用一些参数调用第二个shell脚本,并使用该函数特定的一些其他参数调用func1和func2。 这是我在说的例子 second.sh val1=`echo $1` val2=`echo $2` function func1 { fun=`echo $1` book=`echo $2` } function func2 { fun2=`echo $1` book2=`echo $2` } 第一.sh second.sh cricket football func1 love horror func2 ball mystery 我该如何实现?
86 shell  unix 

9
如何使用脚本启动具有特定工作目录的Git Bash窗口?
如何使用脚本(Bash或Windows批处理)启动具有指定工作目录的新Git Bash窗口? 我的目标是从一个脚本启动多个Git Bash窗口,每个窗口都设置到不同的工作目录。这样,我可以在启动计算机后快速开始工作,而不必打开Git Bash窗口并将每个窗口导航到正确的工作目录。 我不是在问如何更改默认工作目录,就像这个问题一样,而是从脚本启动具有不同工作目录的一个或多个终端窗口。

3
“导出”命令有什么作用?
我对Linux有点陌生,我碰巧盲目地运行了一些命令以完成任务。我认为这不会浪费这些问题,因为更多的新人们会对此有所了解。 我最近开始与Jenkins合作,然后必须使用此export命令来运行Jenkins战争档案。因此,我需要知道export一般情况下执行什么命令,以及为什么需要在运行Jenkins时(设置Jenkins主页之后)运行此命令。 谢谢!

9
登录后如何限制SSH用户使用预定义的命令集?
这是一种安全性的想法。我们的员工应该可以访问linux服务器上的某些命令,但不是全部。他们应例如可以访问日志文件(less logfile)或启动其他命令(shutdown.sh/ run.sh)。 背景资料: 所有员工都使用相同的用户名访问服务器:我们的产品以“普通”用户权限运行,不需要“安装”。只需将其解压缩到您的用户目录中并运行它即可。我们管理“安装”应用程序的多台服务器。在每台机器上都有一个用户johndoe。我们的员工有时需要在命令行上访问该应用程序,以访问和检查日志文件或手动重新启动该应用程序。只有某些人具有完全命令行访问权限。 我们正在服务器上使用ppk身份验证。 如果employee1只能访问日志文件,而employee2也可以执行X等操作,那就太好了…… 解决方案: 作为一种解决方案,我将使用command已接受答案中所述的选项。我将制作自​​己的小Shell脚本,这将是某些员工可以执行的唯一文件。该脚本将提供几个可以执行的命令,但没有其他命令。我将使用下列参数authorized_keys从为表示在这里: command="/bin/myscript.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAAB3....o9M9qz4xqGCqGXoJw= user@host 这对我们来说已经足够安全了。谢谢,社区!
85 linux  shell  ssh 

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.