小编wja*_*rea的帖子

一个选项在 bash 中没有看到参数(即变量),请帮忙?

#!/bin/bash

counter=2

while [ $counter -lt 19 ]
do



        username= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f1 
        psswd= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f2 
        full_name= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f3 
        group= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f4 
        second_group= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f5 

        sudo …
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts

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

格式化此grep的正确方法是什么?

我无法弄清楚\在此命令中放置 的位置。

grep "^D.*\(A1|A2|A3\)$" input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

我正在搜索以 a 开头D并以 A1、A2 或 A3 结尾的每一行,它们位于该行的末尾。

command-line regex grep

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

Ubuntu 终端没有密码?

我每天打开很多终端。每次我按 Ctrl+ Alt+时T,它都会打开一个终端并要求我输入密码:

终端打开示例

有没有办法在不要求密码的情况下打开终端?

我正在运行 Ubuntu 20.04.04 LTS - 带有 Gnome

command-line password 20.04

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

外壳检查失败

我的 shell 脚本和 shellcheck.net 有问题。下面的脚本就像一个魅力,但 shellcheck 告诉我必须引用变量,但在脚本中引用变量会阻止脚本工作(我需要分词)。

有人能帮助我吗?

apt-get $COMMAND -y -qq $PACKAGES >/dev/null &
        ^-- SC2086 (info): Double quote to prevent globbing and word splitting.
                        ^-- SC2086 (info): Double quote to prevent globbing and word splitting.
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts

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

如果我使用的是 Ubuntu,为什么我的屏幕上会出现“官方 Microsoft 错误”?

当我在 Youtube 上时,出现了来自 Microsoft 的错误消息,但我什至没有使用 Windows。我正在使用 Ubuntu。为什么会发生这种情况?

我的“错误”截图

18.04

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

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

Ubuntu 18.04 默认可以读取 exFAT 格式吗?

我的 1TB 硬盘上有两个分区。第一个(大约 550 GB)安装了 Ubuntu 18.04,另一个(大约 400 GB)安装了 Windows 10。

sudo fdisk -l 
Run Code Online (Sandbox Code Playgroud)

给我:

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *          2048    1126399    1124352   549M  7 HPFS/NTFS/exFAT
/dev/sda2          1126400  820979711  819853312   391G  7 HPFS/NTFS/exFAT
/dev/sda3        820981758 1953523711 1132541954   540G  5 Extended
/dev/sda5        820981760 1937899728 1116917969 532,6G 83 Linux
/dev/sda6       1937901568 1953523711   15622144   7,5G 82 Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)

所以,这意味着/dev/sda2我有我的 Windows,它是 exFAT 格式。

根据:https ://www.howtogeek.com/235596/whats-the-difference-between-fat32-exfat-and-ntfs/ 我必须安装额外的包才能/dev/sda2通过 Linux从 ( ) 分区读取文件.

而且,根据https://www.howtogeek.com/235655/how-to-mount-and-use-an-exfat-drive-on-linux/ …

filesystem partitioning boot dual-boot mount

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

正则表达式“.*?” 给出与“.*”相同的输出

这是我正在使用的文件:

Shane有点打球
小的
愚蠢的

当我使用

egrep 's.*l' new
Run Code Online (Sandbox Code Playgroud)

我得到的输出为

沙恩有点爱打球
小的
傻丫头

当我使用

egrep 's.*?l' new
Run Code Online (Sandbox Code Playgroud)

我得到与上面相同的输出,但它应该是不同的。

command-line regex grep

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

如何将文件批量移动到与每个文件名对应的文件夹中?

我在一个文件夹中有几部电影。

例如:

~/Downloads/Movies/Movie A (1998).mkv  
~/Downloads/Movies/Movie B (1999).mkv  
~/Downloads/Movies/Movie C (2000).mkv
Run Code Online (Sandbox Code Playgroud)

我想将每个文件放入自己的文件夹中,并将文件夹命名为与文件名相同的名称。我有很多文件,所以如果可能的话,我希望能够批量执行此操作。

例如:

~/Downloads/Movies/Movie A (1998)/Movie A (1998).mkv
~/Downloads/Movies/Movie B (1999)/Movie B (1999).mkv
~/Downloads/Movies/Movie C (2000)/Movie C (2000).mkv
Run Code Online (Sandbox Code Playgroud)

我曾尝试在此页面上使用 bash 命令

find . -name "*.mkv" -exec sh -c 'mkdir "${1%.*}" ; mv "" "${1%.*}" ' _ {} \;
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息:

find . -name "*.mkv" -exec sh -c 'mkdir "${1%.*}" ; mv "" "${1%.*}" ' _ {} \;
Run Code Online (Sandbox Code Playgroud)

文件夹创建正确,但命令无法将文件移动到文件夹中,出现上述错误。

哪一部分

; mv "" "${1%.*}" ' _ {} \;
Run Code Online (Sandbox Code Playgroud)

是不正确的,怎么会这样?

此外,如果您认为还有其他命令或脚本可以完成这项工作,我们将不胜感激。

command-line bash batch batch-rename mv

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

如何使用 rsync 迁移隐藏文件

我在目标服务器中使用以下命令:

rsync -ab myuser@sourcehost:/source_dir/* target_dir
Run Code Online (Sandbox Code Playgroud)

但这无法同步存在 source_dir 的隐藏文件,我需要使用任何东西,--include以便可以迁移隐藏文件。

但是这个包含选项不应该影响普通文件的迁移,因为我在我的脚本中使用了这个命令。

我该怎么办?

command-line bash hidden-files rsync

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

在执行 shell 脚本时使用选项解析参数

我在脚本中有 5 个选项,例如获取 IP 地址、可用内存、CPU 使用率、主机名和用户名。

我想做一个脚本来获取所有输出或任何人。

例如 :

如果我执行

system_info.sh -i ip -fm free -c cpu -h host -u user
Run Code Online (Sandbox Code Playgroud)

或者

system_info.sh -all all
Run Code Online (Sandbox Code Playgroud)

那么它应该给出所有的输出。

如果假设我只想要一个输出,则需要运行相同的脚本

system_info.sh -fm free
system_info.sh -fm free -i ip
Run Code Online (Sandbox Code Playgroud)

我有这个想法,但我不知道如何设置这些选项并在脚本中进行验证。

请建议我如何设置这些选项

command-line bash scripts

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

为什么移动文件不会影响其 inode 编号?

移动实际上是在新位置创建文件的副本,然后从以前的位置删除文件。由于不可能同时有两个相同的inode编号,因此在复制之后和删除旧文件之前(短时间)应该更改inode编号。但是,我发现 inode 编号在mv命令后不会改变。那么,被删除的文件的inode号是不是重新分配给了复制的文件呢?

filesystem

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

在 bash 中使用 break 时的不同输出

我写了一个简单的脚本:

for DIR in /etc/*; do
    if [ "$DIR" == "/etc/dhcp" ]; then
        echo $DIR
        break
    fi
done
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我breakfi它之后使用它不会产生理想的结果。

那个脚本和这个脚本有什么区别?

for DIR in /etc/*; do
    if [ "$DIR" == "/etc/dhcp" ]; then
        echo $DIR
    fi
    break
done
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts

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