ksh 和 bash 脚本的最大数组大小是多少?
示例:假设我有一个包含 10 个元素的数组。数组的特定索引可以容纳的最大字符串数是多少?相同的数组的最大大小是多少?
我是 Unix 的新手。我想这是一个常见问题,但我没能找到答案,所以我决定在这里提问。
$ echo 123 | cat
123
Run Code Online (Sandbox Code Playgroud)
正在做我所期望的,两个命令都在同一个 shell 中运行。
但是,当我将它们与>( ... )表达式连接起来时,该表达式将 shell 中的一个命令的输出连接到子 shell 中的第二个命令,我得到了这个:
$ echo 123 >(cat)
123 /dev/fd/63
Run Code Online (Sandbox Code Playgroud)
对于其他值也是如此:
$ echo 101 >(cat)
101 /dev/fd/63
$ echo $BASHPID >(cat)
3252 /dev/fd/63
Run Code Online (Sandbox Code Playgroud)
我认为command1 >(command2)与 相同command1 | command2,但是在 中command1 >(command2),每个命令都在不同的 shell 中,因此它们应该具有相同的输出。我哪里错了?
bash pipe io-redirection file-descriptors process-substitution
我想为我的.bashrc文件中的命令添加别名,如下例所示:
alias take_row="cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'"
Run Code Online (Sandbox Code Playgroud)
但是我想nrow在从终端启动命令时指定变量。举个例子:
take_row 1 --> 脚本取第一行
take_row 20 --> 脚本取第 20 行
如何在命令中写入诸如<command> | <read nrow user input>等之类的内容?
我有一个文件夹 /c/Tools,其中包含三个文件夹。
我想要一个像下面这样的命令
$ ls --show-repositories
Run Code Online (Sandbox Code Playgroud)
Tools 不是 git 存储库,但 Tools/MyProject 和 Tools/MyApp 都是。我想要的输出是:
drwxr-xr-x 1 0018121 Domain Users 0 Dec 14 14:33 MyProject/ (develop)
drwxr-xr-x 1 0018121 Domain Users 0 Dec 14 14:17 Data/
drwxr-xr-x 1 0018121 Domain Users 0 Dec 14 12:08 MyApp/ (master)
-rw-r--r-- 1 0018121 Domain Users 399K Aug 4 10:41 readme.txt
-rw-r--r-- 1 0018121 Domain Users 136K Aug 4 10:20 image.jpg
Run Code Online (Sandbox Code Playgroud)
所以从父文件夹我可以判断子文件夹是否是当前有效的 git 存储库(以及当前签出的分支)
谢谢
我有一个 UTF-8 文件,其中包含一个奇怪的字符——对我来说就像
<96>
Run Code Online (Sandbox Code Playgroud)
这是它的显示方式 vi
以及它如何出现 gedit
以及它在 LibreOffice 下的显示方式
这使得一系列基本的 Unix 工具行为不端,包括:
cat file使角色消失,more以及grep 也无法显示任何内容,就好像该字符不存在一样。该程序file运行良好并识别出一个 UTF-8 文件。我也知道,由于文件的性质,它很可能来自网络上的复制和粘贴,并且该字符最初代表 EMDASH。
我的基本问题是:
该文件可以在这里找到:file.txt
假设我有一个文件和一个目录:
$ ls -l
total 4
drwxrwxr-x. 2 user user 4096 Oct 8 09:53 dir
-rw-rw-r--. 1 user user 0 Oct 8 09:53 file
Run Code Online (Sandbox Code Playgroud)
我创建了一个到filecalledsymlink1的符号链接,以及一个到dircalled的符号链接dirslink1:
$ ls -l
drwxrwxr-x. 2 user user 4096 Oct 8 09:53 dir
lrwxrwxrwx. 1 user user 3 Oct 8 10:03 dirslink1 -> dir
-rw-rw-r--. 5 user user 0 Oct 8 09:53 file
lrwxrwxrwx. 1 user user 4 Oct 8 09:53 symlink1 -> file
Run Code Online (Sandbox Code Playgroud)
现在我创建了symlink1使用ln …
valid当名称为 时,为什么会打印以下正则表达式hdpworker01?
name=hdpworker01
[[ $name =~ worker[[:digit:]] ]] && echo valid
Run Code Online (Sandbox Code Playgroud)
我尝试做的是valid仅在名称匹配时才打印worker[0-999]。
预期结果示例:
name=worker01:validname=hdpworker01:没有输出我正在尝试编写一个 shell 脚本,列出目录(和子目录)中的某些类型的文件。我正在努力解决递归部分。
这是我所拥有的:
#!/bin/sh
#download dir
DOWNLOADING_DIR=/Users/richard/Downloads
echo "Starting Script..."
for FILE in $DOWNLOADING_DIR/*
do
if [ -d "$FILE" ]
then
echo "...Checking Directory "$FILE
for DFILE in $FILE/*
do
echo "Found file ... $DFILE"
done
else
echo "Found file ... $FILE"
echo ""
fi
done
Run Code Online (Sandbox Code Playgroud)
问题是当它找到目录时,它在目录中找不到任何文件名。它只列出子目录名称而不是子目录中的文件。它适用于第一个目录中的文件。
我需要这个脚本来搜索 .txt 或 .doc 文件并将它们移动到另一个目录。
我正在编写一些脚本并且遇到了一些命令。我想将一些字符串(月份)放入现有文本中的特定位置。例子:
Left Right
Run Code Online (Sandbox Code Playgroud)
如何在左右之间放置一些文本?我试过打印,但它不能像我想要的那样工作。
date +'%b' | awk '{print "Left " $1} {print "Right"}'
Run Code Online (Sandbox Code Playgroud)
这一行添加了我不想添加的新行。
Left Jun
Right
Run Code Online (Sandbox Code Playgroud) 我想知道如何在 while 循环中检查文件的结尾。我在这里做的是如果有一些词,例如“菠萝”、“苹果”、“洋葱”、“橙色”等,我想使用 grep 命令查找包含特定词的行并发表一些评论“窗户”。例如,如果我使用grep 'a' 'file',那么它会找到“菠萝”、“苹果”和“橙色”。然后,最后我想把它打印成“菠萝,窗户,苹果,窗户,橙子,窗户”,像这样。所以,我想在 while 或 for 循环中设置一些条件。任何帮助将不胜感激。
编辑:示例输入
apple
banana
pineapple
orange
mandu
ricecake
meat
juice
milk
onion
green onion
Run Code Online (Sandbox Code Playgroud)
使用 grep 命令时的预期输出 --> grep 'a' 'file name'
apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window
Run Code Online (Sandbox Code Playgroud)