Articles of shell

如何启动一个没有任何用户configuration的shell?

我需要在Linux / OSXterminal下使用一个干净的shell(例如bash),而不需要任何用户configuration,但是每次启动的时候它都会从一些文件(例如〜/ .bashrc)读取configuration信息。 每次我需要一个“干净的”shell时,我都可以修改这个文件,并在完成时恢复它,但有没有更简单的方法来执行此操作,例如命令?

如何从BASH中的string中删除所有非数字字符?

例: file="123 hello" 我怎样才能编辑string文件,使其只包含数字和文本部分被删除? 所以, echo $file 应该只打印123 。

使用完整path的Linux中的ls命令列出文件

许多人会发现,这是重复的问题,但我已经经历了所有问题之前被问及有关这个话题,但没有为我工作。 我想使用ls命令打印完整path名称的某种文件格式,到目前为止,我发现了大量的代码,将打印目录中的所有文件,但不是完整的path。 for i in io.popen("ls /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do if string.find(i,"%.*$") then print(i) end end 这将打印出根目录下的所有文件。 输出: 0020111118223425.lvf 2012 2012 (2009).mp4 3 Idiots Aashiqui 2 Agneepath.mkv Avatar (2009) Captain Phillips (2013) Cocktail 我想要输出像: /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/0020111118223425.lvf [File in Root Directory] /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012/2012.mkv /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012 (2009).mp4 [File in Root Directory] /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/3 Idiots/3 Idiots.mkv /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Aashiqui 2/Aashiqui 2.mkv /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Avatar (2009)/Avatar (2009).mkv /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Captain Phillips […]

如何recursion列出所有文件和目录

在Free BSD上使用tcsh shell,有没有办法recursion列出所有文件和目录,包括文件的所有者,组和相对path? ls -alR接近,但不显示每个文件前面的相对path,它显示了分组顶部的path owner% ls -alR total 0 drwxr-xr-x 3 owner group 102 Feb 1 10:50 . drwx——+ 27 owner group 918 Feb 1 10:49 .. drwxr-xr-x 5 owner group 170 Feb 1 10:50 subfolder ./subfolder: total 16 drwxr-xr-x 5 owner group 170 Feb 1 10:50 . drwxr-xr-x 3 owner group 102 Feb […]

简单的方法将HH:MM:SS(小时:分钟:seconds.split秒)转换为秒

什么是一个简单的方法来转换00:20:40.28 (HH:MM:SS)秒到Bash脚本? 拆分秒可以被删除,这不是必需的。

如何通过shell脚本中的命令行来传递参数

我expect通过shell脚本中的命令行参数 我试过这个 #!/usr/bin/expect -f set arg1 [lindex $argv 0] spawn lockdis -p expect "password:" {send "$arg1\r"} expect "password:" {send "$arg1\r"} expect "$ " 但它不工作。 请帮我弄明白。 谢谢

Shell脚本调用sudo; 我如何取消密码提示

我正在写一个简单的shell脚本来更改networking硬件的mac地址。 其中之一是: sudo ifconfig eth0 hw ether 00:99:99:00:00:00 我的问题是用sudo脚本提示input密码。 有没有什么办法可以做到这一点,而不提示用户input密码?

分析shell脚本参数

$myscript.sh -host blah -user blah -pass blah 我想把论据传递给它。 我习惯做$1 , $2 , $3 ….但我想开始命名它们

如何在预期的shell脚本中获得产生的进程的退出代码?

我试图执行一个脚本,执行一个EXPECT脚本和一个派生的过程,它有退出代码。 但是我无法将产生的进程的退出代码获得到主脚本。 成功的时候我一直都是零。 期望脚本是: [Linux Dev:anr ]$ cat testexit.sh #!/bin/bash export tmp_script_file="/home/anr/tmp_script_temp.sh" cp /home/anr/tmp_script $tmp_script_file chmod a+x $tmp_script_file cat $tmp_script_file expect << 'EOF' set timeout -1 spawn $env(tmp_script_file) expect { "INVALID " { exit 4 } timeout { exit 4 } } EOF echo "spawned process status" $? rm -f $tmp_script_file echo "done" 衍生的脚本: [Linux […]

从命令行发送键盘input到程序

如何将键盘input发送到程序? 也就是说,在一个Linux GUI下,是否有一个很好的手动(可编程)的方式,或者是一个模拟Linux上正在运行的程序的键盘input的工具,这样我就可以从命令行发送,例如“Control-T”到一个Firefox进程和“回声'你好'\ N”的Gnometerminal进程没有实际上关注每个进程和直接input?