我有一个 JSON 格式的文件用户名和密码,我想将其转换为进程。
我使用sed了不同的命令来处理它,但我想知道的是如何将所有三个命令合并为一个以备将来使用。
原始格式
{ "user.name1" : "hashed_password",
"user.name2" : "hashed_password" }
Run Code Online (Sandbox Code Playgroud)
期望输出
user.name:hashed_password
Run Code Online (Sandbox Code Playgroud)
这些是我运行的命令,但是我无法使用管道将它们链接在一起,或者只是在出现错误的地方将它们连接起来,sed: -e expression #1, char 8: unknown option to 's'.
违规命令...
sed -i 's/\"//g/s/\,/\n/g/\s//g' input_file
sed: -e expression #1, char 8: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
如何将以下命令连接为一个?
命令删除双引号
sed -i 's/\"//g' input_file
用新行替换逗号
sed -i 's/\,/\n/g' input_file
删除空格
sed -i 's/\s//g input_file
我最近遇到了这个问题:
find /tmp/tmp33hn25wv -type f -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'
10420224
du -bs /tmp/tmp33hn25wv
12198004 /tmp/tmp33hn25wv
Run Code Online (Sandbox Code Playgroud)
结果始终不同。所有文件都以块大小字节的倍数写入。
du在哪里找到这些额外的字节?我知道文件系统可能需要更多或更少的空间来存储文件的内容,但我希望该-b选项du意味着它必须计算“表观”大小,而不是文件系统使用的大小......
假设我有一个带有几个选项的 bash 命令和我感兴趣的变量(例如文件名):
my_cmd option1 option2 filename
Run Code Online (Sandbox Code Playgroud)
我创建了一个别名:
alias my_cmd_12="my_cmd option1 option2"
Run Code Online (Sandbox Code Playgroud)
这允许我删除输入所有选项。但是,在我感兴趣的变量之后有一些标志(例如文件名):
my_cmd option1 option2 filename --flag1
Run Code Online (Sandbox Code Playgroud)
如何创建一个带有所有选项和标志的别名:
my_alias filename 相当于
my_cmd option1 option2 filename --flag1
对于 Rstudio 中 Linux 集群上通过 SSH 的交互式会话,当 Rstudio 控制台中突出显示命令时,很容易意外执行“在终端中运行”的键盘快捷键。这会导致诸如
\> library
Run Code Online (Sandbox Code Playgroud)
或者
Var1>Var2
Run Code Online (Sandbox Code Playgroud)
在终端中执行,如果终端在 bash 提示符下登录,则会在远程工作目录中创建一个library或Var2文件。
在最坏的情况下,这将导致覆盖远程工作目录中的文件。
我想在这些会话中禁用“>”,但我不确定如何执行此操作。
我在 OSX 剪贴板中复制了一个补丁(来自 ssh)。只是想知道是否有一种方法可以编写命令来使用我的剪贴板,而不是手动制作补丁文件
我决定冒险尝试并切换到zsh. 所以,我按照终端窗口的说明输入:
chsh -s /bin/zsh
Run Code Online (Sandbox Code Playgroud)
然后我进入echo $0查看开关 - 它返回了-bash!
然后,我转到支持页面,并按照那里的说明通过系统偏好设置进行更改。但是,“登录外壳”下拉菜单已经显示zsh:
所以,我想也许我需要重新启动......不,系统偏好设置仍然显示zsh,终端返回-bash,当我尝试重新运行时chsh -s /bin/zsh,终端返回chsh: no changes made。
echo $SHELL在终端中运行返回/bin/zsh。
我错过了什么???
我在装有 Ubuntu 的计算机上设置了 WSL(适用于 Linux 的 Windows 子系统)。当我想要一个 Linux 会话时,我会点击Win+R
并输入,bash因为它既短又快。但是,它总是让我陷入/mnt/c/Users/Michael. 我希望它把我放到我的 Ubuntu 主目录 ( ~) 中。
我尝试添加cd ~到我的 .bash_profile,但是每当我尝试从命令行运行时bash,它总是将我带到~,而不是在当前目录中打开 bash。
我可以通过ubuntu从运行对话框运行来解决这个问题,但它需要更长的时间并且更难拼写。
从运行对话框运行时如何bash打开~,从命令提示符或 PowerShell 运行时如何打开当前工作目录?或者,有什么好的解决方法?
我不明白为什么当我单独做它们时它会起作用但&&它不会(这不是(像这里的问题)......我错过了什么?
11:20:06 $ shopt -s extglob && shopt -s globstar && for f in **/*.@(jpg|jpeg|png|gif); do [[ -f "$f.webp" ]] || cwebp -quiet -q 80 "$f" -o "$f.webp"; done
bash: syntax error near unexpected token `('
11:20:11 $ shopt -s extglob && shopt -s globstar
11:20:16 $ for f in **/*.@(jpg|jpeg|png|gif); do [[ -f "$f.webp" ]] || cwebp -quiet -q 80 "$f" -o "$f.webp"; doneError! Could not process file img/colorpicker/colormap.gif
11:20:23 $
Run Code Online (Sandbox Code Playgroud) 我有两个几乎相同的文件,"foo" 和 "bar"。
每个文件有数千行,每行一个数字。
如果我sort然后diff两个文件,这是结果:
$ diff foo bar
5984a5985,5986
> 15676
> 15677
7703,7706d7704
< 17486
< 17487
< 17488
< 17489
Run Code Online (Sandbox Code Playgroud)
但是,如果我有grep -Fvf两个文件,我在两个方向上都会得到零个“不匹配”:
$ grep -Fvf foo bar
$ grep -Fvf bar foo
$
Run Code Online (Sandbox Code Playgroud)
这是为什么?我不应该得到类似于 diff 的结果吗?我希望第一个命令返回 diff 值的“前半部分”,第二个 grep 命令返回其余部分。
为什么我没有得到预期的结果?
我正在使用通配符表达式来匹配文件名。
这是普通的非 root 用户会发生的情况:
debian@MiWiFi-R3-srv:~$ sudo ls /var/log/apache2/*[0-9].gz
ls: cannot access '/var/log/apache2/*[0-9].gz': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这就是我切换到 root 用户sudo su并尝试相同的命令后发生的情况:
root@MiWiFi-R3-srv:/home/debian# ls /var/log/apache2/*[0-9].gz
/var/log/apache2/access.log.10.gz /var/log/apache2/error.log.10.gz
/var/log/apache2/access.log.11.gz /var/log/apache2/error.log.11.gz
/var/log/apache2/access.log.12.gz /var/log/apache2/error.log.12.gz
Run Code Online (Sandbox Code Playgroud)
为什么这个通配符表达式可以用作root,但不能用作普通的非 root 用户?
bash ×10
linux ×6
command-line ×2
shell ×2
terminal ×2
du ×1
filesystems ×1
git ×1
grep ×1
rstudio ×1
run-dialog ×1
sed ×1
ssh ×1
ubuntu ×1
wildcards ×1
windows-subsystem-for-linux ×1
zsh ×1