小编spu*_*der的帖子

hash 命令的目的是什么?

如果您运行hash它,它会显示自上次重置哈希后运行的所有命令的路径 ( hash -r)

[root@c04c ~]# hash
hash: hash table empty

[root@c04c ~]# whoami
root

[root@c04c ~]# hash
hits    command
   1    /usr/bin/whoami

[root@c04c ~]# whoami
root

[root@c04c ~]# hash
hits    command
   2    /usr/bin/whoami
Run Code Online (Sandbox Code Playgroud)

根据手册页,哈希的目的是:

/usr/bin/hash 实用程序影响当前 shell 环境记住找到的实用程序位置的方式。根据指定的参数,它将实用程序位置添加到其记住的位置列表或清除列表的内容。当没有指定参数时,它报告列表的内容。该-r选项会导致外壳忘记所有记住的位置。

散列不报告作为 shell 内置程序提供的实用程序。

除了查看我输入了多少次命令之外,我看不到hash.

它甚至出现在 thegeekstuff.com 的前 15 个有用命令中

在哪些方面hash有用?

bash history

129
推荐指数
5
解决办法
9万
查看次数

$@ 和 $* 有什么区别

根据这个页面, $@ 和 $* 做几乎相同的事情:

The $@ holds list of all arguments passed to the script. 
The $* holds list of all arguments passed to the script.
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索所有热门搜索后,我找不到任何解释为什么会有 2 个看似重复的语法。

它们在我的脚本中的工作方式似乎相同。

cat foo.sh
#!/bin/bash
echo The parameters passed in are $@
echo The parameters passed in are $*

./foo.sh herp derp
The parameters passed in are herp derp
The parameters passed in are herp derp
Run Code Online (Sandbox Code Playgroud)
  1. 一个比另一个更受欢迎吗?
  2. 为什么有 2 个内置变量来做完全相同的事情?

其他来源
bash.cyberciti.biz

shell bash

97
推荐指数
4
解决办法
14万
查看次数

ls -F 显示的符号是什么意思?

我注意到如果我在目录上运行 ls -F ,某些条目后面会有 * 或 @ 。

spuder@ubuntu:~$ ls -F /sbin
acpi_available*   getpcaps*           lvmconf*                 ntfscp*        start-stop-daemon*
agetty*           getty*              lvmdiskscan@             ntfslabel*     status@
alsa*             halt@               lvmdump*                 ntfsresize*    stop@
alsactl*          hdparm*             lvmsadc@    

spuder@ubuntu:~$ ls -F ~
daq-0.6.1/  examples.desktop       noname-cache.lib  snort-2.9.1/   Templates/
Desktop/    jpgraph-1.27.1/        noname.sch        snortfiles/    Ubuntu One/
Documents/  
Run Code Online (Sandbox Code Playgroud)

根据 ls 手册页

spuder@ubuntu:~$ man ls
...
-F, --classify
  append indicator (one of */=>@|) to entries
...
Run Code Online (Sandbox Code Playgroud)

我猜这@意味着符号链接,

这些其他指标是什么意思 ( */=>@|) ?

ls

84
推荐指数
2
解决办法
4万
查看次数

如何将日期附加到备份文件

我需要备份一个文件,我希望将时间戳作为名称的一部分,以便更容易区分。

您如何将当前日期注入复制命令?

[root@mongo-test3 ~]# cp foo.txt {,.backup.`date`}
cp: target `2013}' is not a directory

[root@mongo-test3 ~]# cp foo.txt {,.backup. $((date)) }
cp: target `}' is not a directory  

[root@mongo-test3 ~]# cp foo.txt foo.backup.`date`
cp: target `2013' is not a directory
Run Code Online (Sandbox Code Playgroud)

shell cp date

76
推荐指数
4
解决办法
30万
查看次数

在 http 下载中使用通配符的 wget

我需要使用 wget 下载文件,但是我不知道文件名到底是什么。

https://foo/bar.1234.tar.gz
Run Code Online (Sandbox Code Playgroud)

根据手册页,wget 允许您在处理 ftp 站点时关闭和打开 globbing,但是我有一个 http url。

使用 wget 时如何使用通配符?我正在使用 gnu wget。

我尝试过的事情。

/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp
Run Code Online (Sandbox Code Playgroud)

更新

使用 -A 会导致下载服务器上以 .tar.gz 结尾的所有文件。

/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"
Run Code Online (Sandbox Code Playgroud)

更新

从答案来看,这是最终起作用的语法。

/usr/local/bin/wget -r -l1 -np "https://foo" -P /tmp -A "bar*.tar.gz"
Run Code Online (Sandbox Code Playgroud)

wget

65
推荐指数
2
解决办法
15万
查看次数

如何使用 systemd 设置服务的 ulimits?

您将如何在 systemd 服务单元上设置 ulimit?

这个stackoverflow 问题解释了 systemd 忽略了系统 ulimits

设置以下 ulimit 的语法是什么样的?

ulimit -c
ulimit -v
ulimit -m

[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
SOLR_INSTALL_DIR=/opt/solr
SOLR_ENV=/etc/default/solr.in.sh
RUNAS=solr

SOLR_PID_DIR="/var/solr"
SOLR_HOME="/opt/solr/server/solr"
LOG4J_PROPS="/var/solr/log4j.properties"
SOLR_LOGS_DIR="/opt/solr/server/logs"
SOLR_PORT="8389"

PIDFile=/var/solr/solr-8389.pid
ExecStart=/opt/solr/bin/solr start
ExecStatus=/opt/solr/bin/solr status
ExecStop=/opt/solr/bin/solr stop
Restart=on-failure
User=solr

SuccessExitStatus=143 0

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

systemd ulimit

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

如何让 ssh 忽略 .ssh/config?

我的 ~/.ssh/config 中有以下内容。

HOST 10.2.192.*
        USER foo
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/foo/id_rsa
Run Code Online (Sandbox Code Playgroud)

上面的配置让我在输入一半的单词的同时连接到一台机器。

 ssh 10.2.192.x
Run Code Online (Sandbox Code Playgroud)

在我的 ssh 配置之前,我必须输入所有这些:

 ssh foo@10.2.192.x -i ~/.ss/foo/id_rsa
Run Code Online (Sandbox Code Playgroud)

但是,我想使用基于密码的身份验证而不是基于密钥的身份验证连接到 10.2.192.x 子网中的一台机器。

因为 ssh 查看我的配置文件并找到匹配项,PreferredAuthentications publickey因为我无法仅使用我的密码登录。

我不打算经常 ssh 进入这个特殊的雪花虚拟机,以保证向我的 ssh 配置添加新规则。

我怎样才能让 ssh 忽略我的配置文件一次,并允许我使用密码进行身份验证?

ssh

57
推荐指数
2
解决办法
4万
查看次数

您如何计算命令运行所需的时间?

你如何知道一个正在运行的进程需要多长时间才能完成?

例子:

 date; dd bs=1m if=/foo of=bar; date
Run Code Online (Sandbox Code Playgroud)

^这个例子只有 1 秒的分辨率。

任何外壳都是可以接受的。

bash date time

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

如何通过 SSH 进入特定目录?

我经常登录到服务器,然后 cd 进入特定目录。是否可以将这两个命令简化为一个?

ssh bob@foo  
cd /home/guest
Run Code Online (Sandbox Code Playgroud)

如果可能,我想避免更改 'foo' 上的任何内容,因为我必须与服务器管理员一起清除它。我使用 bash,但我愿意接受其他 shell 中的答案。

bash ssh

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

如何减少 LVM 中的卷组大小?

[root@localhost ~] vgdisplay
  --- Volume group ---
  VG Name               vg_root
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               297,59 GiB
  PE Size               4,00 MiB
  Total PE              76182
  Alloc PE / Size       59392 / 232,00 GiB
  Free  PE / Size       16790 / 65,59 GiB
  VG UUID               XXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

光伏:

[root@localhost ~] pvdisplay

  --- …
Run Code Online (Sandbox Code Playgroud)

partition lvm scientific-linux

41
推荐指数
2
解决办法
11万
查看次数

标签 统计

bash ×4

date ×2

shell ×2

ssh ×2

cp ×1

history ×1

ls ×1

lvm ×1

partition ×1

scientific-linux ×1

systemd ×1

time ×1

ulimit ×1

wget ×1