小编mtk*_*mtk的帖子

将两列与两列进行比较

我有一个文件,我需要将两列中的值与另外两列中的值进行比较。举些例子:

Item  A     B     C    D
1    201  3101   3101 201
2   3101   201    202 3101  
3   3101   201    201 3102 
4   3101   201   3202 202 
Run Code Online (Sandbox Code Playgroud)

因此,我试图做的是比较列Çd,但在列值Çd是可以互换的。如果两个值相同,我希望有一个像2这样的输出,如果只有一个匹配,则为1,如果两者都不匹配,则为0。答案是这样的

Item  A     B     C      D   Output
1    201  3101   3101   201    2
2   3101   201    202  3101    1
3   3101   201    201  3102    1
4   3101   201   3202   202    0
Run Code Online (Sandbox Code Playgroud)

我将如何能够实现这一目标?

scripting text-processing

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

find 命令中的“+”是做什么用的?

+在使用像find.

来自SO post 的示例-

find -exec touch -t 201007162310.00 \+
Run Code Online (Sandbox Code Playgroud)

请帮助我理解这个的用法。

find

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

当“cd”进入特定目录时自动获取文件

我有几个实用程序命令和别名,它们在任何目录中都足够通用,可以满足我自己的要求。但是有某些目录,例如“build”,我需要自定义行为。

为此,我在这些目录中创建了一个不同的文件,其中包含具有相同名称的函数和别名的修改(这样我就不需要记住新名称)。

目前,我在 cd'ing 到特定目录后手动获取文件

source custom_aliases_n_fns
Run Code Online (Sandbox Code Playgroud)

这运作良好,但我希望自动执行此文件来源。

有没有办法将 cd'ing 上的文件源到特定目录?

注意:我采用了这种方法,因为我不想更改系统范围的用户别名。

bash zsh alias

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

bash 提示 - 添加颜色后长命令圈回到同一行

注意:我正在使用 Putty,并且我的 TERM 设置为 XTERM。

我已将颜色添加到我的 bash 提示中

PS1="\[\033[0;32m\]\d \t \u\e[1;33m@\H /\W $ \[\033[1;37m\]"
Run Code Online (Sandbox Code Playgroud)

只是为了用英文简化 PS1 -

${GREEN}\d \t \u{YELLOW}@\H \W $ {reset-color}
Run Code Online (Sandbox Code Playgroud)

现在,每当我的命令很长并且不适合屏幕行时,它应该转到下一行,但它不会并且初始字符开始被替换我键入的每个字符。整个命令都存在,但没有完全看到。它正常执行,所以只是显示失真。

当我回到第一个字符并尝试删除字符时,情况变得更糟,整个命令行向上移动并擦除屏幕上的先前数据。

经过一些试验和错误删除某些部分后,我发现添加 a@会导致上述行为

\e[1;33m
Run Code Online (Sandbox Code Playgroud)

我真的不记得为什么我放了这个,我无法追溯到这个。

你能帮我解决这个问题吗?长命令应该在下一行而不是在同一行。

colors bash prompt

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

umask 和 chmod 对安装的驱动器没有影响

Windows 驱动器在启动时使用pysdm 挂载。设置是

nls=iso8859-1,users,umask=002,sync,user,dirsync,uid=mtk

当我尝试使用 chmod 更改文件的权限时,我没有看到权限中有任何更新。Chmod 安静地返回提示。此外,创建的文件的权限必须是 755 而不是 775。这是终端的输出。

mtk@mtk-laptop$ umask
0022
mtk@mtk-laptop$ touch abc.txt
mtk@mtk-laptop$ ls -l abc.txt 
-rwxrwxr-x 1 mtk root 0 May 14 00:00 abc.txt*
mtk@mtk-laptop$ chmod ugo-x abc.txt 
mtk@mtk-laptop$ ls -l abc.txt 
-rwxrwxr-x 1 mtk root 0 May 14 00:00 abc.txt*
mtk@mtk-laptop$ 
Run Code Online (Sandbox Code Playgroud)

有谁知道这背后的问题是什么?

我正在使用 ubuntu 12.04。

linux umask chmod

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

根据 1 列对文件进行排序

可能重复:
如何按大小对 du 输出进行排序?

我有一个从输出生成的文本文件

du --max-depth 1 -h > sizeOfHomeFolder.txt
Run Code Online (Sandbox Code Playgroud)

它的内容是这样的格式:

$ cat sizeOfHomeFolder.txt  | head
776K    ./Expensemanager
8.0K    ./workspace
4.0M    ./mysql-tutorial
3.6M    ./temp
26M ./Desktop
4.0K    ./Ubuntu One
4.0K    ./Photos
4.0K    ./Public
Run Code Online (Sandbox Code Playgroud)

我需要根据第一列即大小对这个文件进行排序。

如何使用sortsed或任何其他常见的 Unix 实用程序执行此操作?

sort

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

如何在vim中重新加载文件?

各种编辑器如gedit检测文件是否已更改并要求重新加载它。有时,vim当我有很多文件要编辑时,有时我最终会在不同的选项卡中打开相同的文件,以便快速查看其他文件和其他一些原因。

所以无论如何我可以在更新任何内容之前强制重新加载当前文件。

我知道一种选择是退出并重新打开它,但我已经拆分了屏幕,我不想失去该视图。

vim

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

vimrc 在 autocmd 中指定超过 1 个文件扩展名

我知道一点autocmd并用它来做一些事情。目前,我有

au BufNewFile,BufRead *.inc set filetype=sql
au BufNewFile,BufRead *.tbl set filetype=sql
Run Code Online (Sandbox Code Playgroud)

阅读手册页,一般语法是

:autocmd [group] {events} {file_pattern} [nested] {command}
Run Code Online (Sandbox Code Playgroud)

我想知道,我是否可以将上述 2 条语句合并在一个行中,即我们如何在file_pattern部分中指定多个文件扩展名?手册页没有提到这一点,但我相信它可以用逗号或空格分隔。有什么提示吗?

vimrc autocmd

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

如何使用脚本更改调用shell的工作目录?

可能重复:
使用脚本更改当前工作目录

我正在尝试创建一些脚本来更改主 shell/终端的工作目录。不能这样做。我尝试了以下

文件 p1.sh

#!/bin/bash
cd /home/mtk/work/project1
Run Code Online (Sandbox Code Playgroud)

文件代码.sh

#!/bin/bash
cd /home/mtk/templates/resusable/sampleCodes
Run Code Online (Sandbox Code Playgroud)

但我知道,上面要改变它只是为自己,即在一个正在运行,这将是p1.sh或者code.sh在这种情况下。

请让我知道,我如何才能更改父调用 shell 的当前工作目录。

示例运行和期望:

$ pwd
/home/mtk
$ p1.sh
$ pwd
/home/mtk    ### --> Expected /home/mtk/work/project1
Run Code Online (Sandbox Code Playgroud)

笔记

我的用例是:我想做一些处理,然后将提示放置到预定义的目录中。

编辑

我明白为什么它不起作用。并且alias似乎是这种情况的解决方案。但我想扩大,我的问题:

我需要创建一个脚本来动态更改父 shell 的工作目录。脚本会说mycd.sh。它将具有命令行参数 mycd.sh -c/-p1/-p2/或其他一些用户定义的参数。

给予-c会将 shell 工作目录切换到相应的目录。文件mycd.sh看起来像

.. some processing
# parameter parsing
if [ $param1 -eq "c" ]; then
    # change working dir of parent here
else 
... other conditions
Run Code Online (Sandbox Code Playgroud)

我想,必须有某种方法可以更改 …

shell directory cd-command shell-script

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

/shell-script:意外标记“完成”附近的语法错误

syntax error near unexpected token done在执行我的 shell 脚本时得到:

while read filename
do
  echo "$filename"
  if [ -s $filename ]; then
    tail -10 $filename | grep `date '+%Y-%m-%d'` >> $lastlines1
    echo "- Next Error File - " >> $lastlines1
  done
  else
  echo " no errrors"
fi
Run Code Online (Sandbox Code Playgroud)

任何想法,我哪里出错了?

shell-script

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

拆分未按要求工作?

我想将文件拆分为“n”个块,后缀的长度应为“a”,并且应使用从数字“d”开始的数字后缀。

例如 n = 10,a=4,d=5,因为所有选项看起来都是正确的,我尝试了以下方法

split -n10 -a4 -d5 somefile
split: cannot split in more than one way
Try 'split --help' for more information.
Run Code Online (Sandbox Code Playgroud)

它给出了上述错误。根据手册页,这些选项对我来说看起来不错

-a, --suffix-length=N
          generate suffixes of length N (default 2)

-d, --numeric-suffixes[=FROM]
          use numeric suffixes instead of alphabetic; FROM changes the start value (default 0)

-n, --number=CHUNKS
          generate CHUNKS output files; see explanation below
Run Code Online (Sandbox Code Playgroud)

错误的原因可能是什么?我怎样才能实现既定目标?

split

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