Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。


4
某些子目录的find-command
比方说,我有一个目录dir有三个子目录dir1.. dir3。在内部,我有许多文件和其他子目录。 我想搜索一个带有*.c结尾的文件,但我只想搜索子目录“ dir / dir2”及其所有子目录。我该如何制定呢? 假设我在dir/: find . -name "*.c" 搜索所有目录。 如何限制为dir2?
17 linux  bash  shell  find 

9
用定界符将列表变成单行
我必须以这种格式列出(负载)IP地址列表: 134.27.128.0 111.245.48.0 109.21.244.0 并通过中间的管道将它们转换为这种格式(组成IP) 134.27.128.0 | 111.245.48.0 | 109.21.244.0 | 103.22.200.0/22 我认为这是一个查找和替换命令,sed但我无法使其正常工作。

3
如果条件出现括号,为什么没有空格时出现语法错误?
我使用下面的脚本将脚本从一年的开始两天开始运行时向后移动两天,并且还检查每个月的第一天和第二天并向后移动两天。 if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] && [$day="02"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [ $day = "01" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else if [ $day = "02" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else date="$month/$yes_day/$year" fulldate="$year$month$yes_day" fi fi fi fi 但我不好得到以下错误消息 Etime_script.sh: line 19: [06=01]: command not …

2
使用自定义zshrc启动zsh
我希望能够使用类似于命令的自定义rc文件启动zsh: bash --rc-file /path/to/file 如果这不可能,那么是否可以启动zsh,运行source /path/to/file,然后停留在同一zsh会话中? 注意:该命令zsh --rcs /path/to/file不起作用,至少对我而言不起作用... 编辑:整体而言,我希望能够执行以下操作: ssh在远程服务器“ example.com”上,运行zsh,source我的配置位于/path/to/file,所有命令为1。这就是我一直在努力的地方,尤其是因为我不想覆盖远程计算机上的任何配置文件。
17 linux  shell  zsh  oh-my-zsh 

3
查看正在运行的进程的STDOUT重定向
如果我使用以下命令启动应用程序: /path/to/my/command >> /var/log/command.log 而且该命令不返回,是否有办法从另一个提示中查看STDOUT重定向设置为什么? 我正在寻找类似的东西 cat /proc/PID/redirects 要么 ps -??? | grep PID 但是任何方法都可以。



2
bash中的..] [foo []`是做什么的?为什么匹配`..`?
请看以下内容: $ echo .[].aliases[] .. $ echo .[].foo[] .. $ echo .[].[] .. $ echo .[].xyz[] .. $ echo .xyz[].xyz[] .xyz[].xyz[] $ echo .xyz[].[] .xyz[].[] 显然,这似乎有些混乱,但我不明白结果如何结合在一起。据我了解[]是一个空字符类。如果直观的话 它只匹配空字符串;在这种情况下,我希望bash能够完全复制,因为在此目录中没有与之匹配的东西,而且还与..aliases(在第一个示例中)匹配, 或一无所有;在这种情况下,我希望bash也会完全复制字符串。 这与GNU bash 4.4.23(1)版一起发布。
16 bash  shell  wildcards 


6
脚本启动后选择解释器,例如if / else在hashbang中
有没有办法动态选择正在执行脚本的解释器?我有一个在两个不同系统上运行的脚本,并且我要使用的解释器位于两个系统上的不同位置。我最终必须要做的是每次切换时都更改hashbang行。我愿做一些事情,是合乎逻辑的该等效(我知道这个确切的结构是不可能的): if running on system A: #!/path/to/python/on/systemA elif running on system B: #!/path/on/systemB #Rest of script goes here 甚至更好的是,它尝试使用第一个解释器,如果找不到,则使用第二个: try: #!/path/to/python/on/systemA except: #!path/on/systemB #Rest of script goes here 很显然,我可以代替执行它 /path/to/python/on/systemA myscript.py 还是 /path/on/systemB myscript.py 取决于我在哪里,但我其实有一个包装脚本启动myscript.py,所以我想以指定Python解释器编程而不是手工的路径。

6
最快,最有效的方法来获取gzip压缩文件中的记录(行)数
我正在尝试对7.6 GB gzip文件进行记录计数。我发现使用该zcat命令的方法很少。 $ zcat T.csv.gz | wc -l 423668947 这可以工作,但是需要太多时间(超过10分钟才能获得计数)。我尝试了更多类似的方法 $ sed -n '$=' T.csv.gz 28173811 $ perl -lne 'END { print $. }' < T.csv.gz 28173811 $ awk 'END {print NR}' T.csv.gz 28173811 这三个命令的执行速度都非常快,但计数错误28173811。 如何在最短时间内执行记录计数?
16 shell  gzip 


4
shell变量和环境变量在用法上有什么区别?
我实际上不知道可以从命令行访问两种不同类型的变量。我所知道的是,我可以像这样声明变量: foo="my dear friends" bar[0]="one" bar[1]="two" bar[2]="three" 或使用$符号访问它们,例如: echo $foo echo ${bar[1]} 或使用内置变量,例如: echo $PWD PATH=$PATH:"/usr/bin/myProg" 现在,我听说有两种(至少?)变量类型:外壳变量和环境变量。 拥有两种不同类型的目的是什么? 我怎么知道变量是哪种类型? 每种的典型用法是什么?


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.