Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

3
将命令快捷方式添加到/ bin
有什么方法可以向其中添加自定义命令/bin? 例如,我使用docker container ls了很多东西,并且想把它变成一个快捷命令,例如dcls。 如果我添加一个名为文件dcls到/bin该文件中,指定具体的命令docker container ls,我认为这是行不通的。 如果有的话,做这样的正确方法是什么?

5
排序文件的一部分
是否可以在大文件中的两个字符串之间排序? 例如,当前文件为: 0cf Front Brake 0d0 Rear Brake 0ce Handle Bars HUT 03 VR Controls 009 Vest 001 Belt 002 Body Suit 020 Stereo Enable 003 Flexor 007 Hand Tracker 004 Glove 006 Head Mounted Display 008 Oculometer 00a Animatronic Device 000 Unidentified 021 Display Enable 005 Head Tracker HUT …
8 sort 

4
查看文件开始和结束的Bash方法
在基于队列的集群上,从命令(例如)显示待处理作业的队列showqueue。 该命令以列的形式返回诸如名称等合理数据的列表,但是列/数据对于该问题并不重要。 我喜欢使用的工具watch一样watch showqueue,有时(有一个别名alias watch="watch ",以力别名扩展我的命令来观看)。前几行有有价值的数据(正在运行的作业),然后是挂起的作业等,最后还有一些有价值的摘要。 但是,有时showqueue的输出不在屏幕上(我知道这真是难以置信)!理想情况下,我希望可以通过某种方式同时查看文件的开头和结尾。 到目前为止showqueue > file; head -n 20 file > file2; echo "..." >> file2 ; tail -n 20 file >> file2; cat file2,我最好的是:,并使用watch其别名。 有谁知道更灵活或更实用的东西?我的解决方案使用bash循环有点麻烦,可以使“ ...”中断多行显示,根本无法适应调整终端窗口的大小,而且我敢肯定,我还错过了更多东西。 有什么建议么?


5
在Bash数组上使用参数替换
我有要读入Bash数组的file.txt文件。然后,我需要删除空格,双引号以及每个条目中除第一个逗号以外的所有内容。这是我走了多远: $ cat file.txt 10,this 2 0 , i s 30,"all" 40,I 50,n,e,e,d,2 60",s e,e" $ cat script.sh #!/bin/bash readarray -t ARRAY<$1 ARRAY=( "${ARRAY[@]// /}" ) ARRAY=( "${ARRAY[@]//\"/}" ) for ELEMENT in "${ARRAY[@]}";do echo "|ELEMENT|$ELEMENT|" done $ ./script.sh file.txt |ELEMENT|10,this| |ELEMENT|20,is| |ELEMENT|30,all| |ELEMENT|40,I| |ELEMENT|50,n,e,e,d,2| |ELEMENT|60,se,e| 除逗号情况外,哪种效果都很好。我知道有很多方法可以给这只猫换皮,但是由于这是其中较大的脚本,所以我真的很想使用参数替换到达此处: |ELEMENT|10,this| |ELEMENT|20,is| |ELEMENT|30,all| |ELEMENT|40,I| …

2
不使用“ e”来操纵科学格式
我正在尝试处理一个包含以科学计数法表示的数字但没有e符号(即1.2e+3写为)的文件1.2+3。 我想到的最简单的方法awk是使用函数替换+为e+,gsub并在新文件中进行计算。减号情况也是如此。因此,可以使用以下命令完成简单的修复 awk '{gsub("+", "e+", $1); print $1, $2, $3, $4, $5}' file_in 并在所有列中执行相同操作。 但是,该文件还包含负数,这使事情变得更加复杂。可以看到一个示例文件 1.056000+0 5.000000-1 2.454400-3 2.914800-2 8.141500-6 2.043430+1 5.000000-1 2.750500-3 2.698100-2-2.034300-4 3.829842+1 5.000000-1 1.969923-2 2.211364-2 9.499900-6 4.168521+1 5.000000-1 1.601262-2 3.030919-2-3.372000-6 6.661784+1 5.000000-1 5.250575-2 3.443669-2 2.585500-5 7.278104+1 5.000000-1 2.137055-2 2.601701-2 8.999800-5 9.077287+1 5.000000-1 1.320498-2 2.961020-2-1.011600-5 9.248130+1 5.000000-1 3.069610-3 …

1
为什么在vim的插入模式下看不到两个不同文件之间的区别?
让我们创建两个文件: $ echo -n 'test' > test.txt $ wc test.txt 0 1 4 test.txt 该文件test.txt不包含尾随换行符。 $ echo 'test' > test_n.txt $ wc test_n.txt 1 1 5 test_n.txt 该文件test_n.txt包含尾随换行符。 上面两个文件明显不同,但是vim在插入模式下两个文件的预览没有任何区别: $ vim test.txt $ vim test_n.txt 为什么没有区别(换行或某些特殊区别)? vim在插入模式下如何添加或删除这样的附加字符?
8 vim  newlines  vi-mode 

2
bash别名即使使用shopt expand_aliases也不会扩展
我想在bash -c构造内运行别名。 该bash手册说: 如果外壳不是交互式的,则别名不会扩展,除非expand_aliases使用以下命令设置外壳选项shopt 在此示例中,为什么hi在expand_aliases显式设置时找不到别名? % bash -O expand_aliases -c "alias hi='echo hello'; alias; shopt expand_aliases; hi" alias hi='echo hello' expand_aliases on bash: hi: command not found 我在跑步GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)。 上下文:我希望能够以空闲优先级运行别名,例如包含以下内容的脚本: #!/bin/bash exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s …
8 bash  alias 

6
在小型项目中使用`make`有什么好处?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 我已经看到这make对于大型项目很有用,尤其是在中描述了令人困惑的依赖关系时Makefile,还有助于工作流程。make对于小型项目,我还没有听说过任何优势。有吗

2
如何从多个文本源的第一行创建数组?
我有一个指向文件的路径数组,每个文件都有多行文本。我想产生一个数组,其中填充了每个处理的文件的第一行,如下所示: # this.txt first line is [Test this] # another.txt first line is [Test another] paths=( ./this/path/this.txt ./another/path/another.txt ) for i in ${paths[@]}; do read -r line < $i lines+=$line done 最多我在数组中只得到一个值。我似乎无法从for循环中获取要查找的数组。我尝试了许多变体,并且很难弄清我要去哪里。

6
检查是否存在多个目录
我要检查多个目录的存在,说dir1,dir2并且dir3,在工作目录。 我有以下 if [ -d "$PWD/dir1" ] && [ -d "$PWD/dir2" ] && [ -d "$PWD/dir3" ]; then echo True else echo False fi 但是我怀疑这样做有更优雅的方法。不要假定目录名称中存在模式。 目的是检查一些目录是否存在以及其他目录是否不存在。 我正在使用Bash,但首选可移植代码。

1
在SELinux中以安全的方式允许单个程序的某些危险行为
我有一个在Docker容器中运行的程序,该程序加载一个.so文件,该文件通过挂钩和内存操作来更改程序的行为。SELinux通过在审核日志中显示以下消息来阻止此行为: 类型= AVC消息=审核(1548166862.066:2419):AVC:拒绝{execheap} pid = 11171 comm =“ myProgram” scontext = system_u:system_r:container_t:s0:c426,c629 tcontext = system_u:system_r:container_t:s0: c426,c629 tclass =进程允许= 0 我非常犹豫,只是audit2allow要一直进行下去,因为我不想在其他任何地方都允许这种特定的行为(因为这样做很冒险)。 如何告诉SELinux以最安全的方式允许这种特定行为? 我能否以允许我将来产生更多运行相同程序的Docker容器的方式来执行此操作?
8 docker  selinux 


2
需要如何在POSIX Shell中重复字符的说明
关于堆栈溢出的以下答案, 如何在bash中重复一个字符? 强制采用一种可能的POSIX方式- 重复单个字符,如下所示。在此示例中,我们使用等号100次: printf %100s | tr " " "=" 我的问题是我不了解它是如何工作的,我希望使用简单的解释。请不要像阅读本手册那样发表评论,因为这样做不是很聪明,所以我问这个问题是因为我从未使用过tr,也从未见过这样的printf声明。
8 shell  posix  printf  tr 

1
通过字符串引用数组元素,并在awk中初始化数组
#!/usr/bin/env bash awk ' BEGIN { arr[A]=1; arr[B]=1; arr[C]=1; arr[E]=1; arr[J]=8; arr[Q]=10; print arr[J] }' 上面的命令输出的最新设置值arr['subscript'],在这种情况下10,它是arr[Q]之前的值,print而不是。8arr[J] 另外,就像上面的脚本一样,我不想一次为一行arr['A'], arr['B'], arr['C'] and arr['E']具有相同值的值赋值1,而是将下标数组作为参数之一传递给公共值,并将公共值作为另一个参数传递给处理函数为他们分配价值的逻辑。
8 awk  array 

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.