4.如何用(!)处理两个以上的参数?例如我在桌面上创建了一个1.txt文件
~$ make 然后发现报错了: ./scripts/gen-compat-autoconf.sh /home/renjie/downloads/compat-drivers-3.9-rc4-2-s/.config /home/renjie/downloads/compat-drivers-3.9-rc4-2-s/config.mk > include/linux/compat_autoconf.h make -c /lib/modules/3.2.0-77-generic/build m=/home/renjie/downloads/compat-drivers-3.9-rc4-2-s modules make[1]: 正在进入目录 `/usr/src/linux-headers-3.2.0-77-generic'。hexo需要一个独立的文件夹作为博客的管理空间,首先进入家目录:/home/xxx/,使用mkdir blog命令创建一个博客文件夹,得到博客的目录:/home/pi/blog/,在该目录下,输入命令:。例如,如果想将位于foo系统上/home/baz目录拷贝到主机bar的/home/backup/qux目录中,在主机foo上linux命令,则需要键 入的命令为:。
这样我们就向CP命令传递了两个参数。第一个是 ‘/home/avi/Desktop/1.txt’ ,第二个是’/home/avi/Downloads’,为了区分它们,我们 使用 echo 来打印每个参数。
可以注意到第一个参数可以使用 “!^” 来表示,剩下的参数就可以使用 “命令名:参数序号”这种方式来表示,比如 “!cp:2”。再举个例子,如果你执行的某个命令为 “xyz”,命令 后面有5个参数而你想调用第四个参数,就可以使用 “!xyz:4” 来调用它。当然,你可以使用 “!* “ 来表示所有参数。
5.通过关键词来执行之前的命令
我们可以通过执行关键词来执行之前的命令。可以按照下面的命令来理解:
上面是相同的ls命令对应了不同参数和文件夹。此外我们将每一个标准输出都传递到了 ‘/dev/null’ 因为我们并不希望处理程序的标准输出。现在我们可以调用命令的关键词来实现它们。
当你使用 “ls”关键词来执行之前命令的时候,你一定会被标准输出给惊讶到。
6.非常实用的 !! 操作符
你可以使用(!!)来运行或者改变之前的命令。它会调用最近使用的命令来调整当前命令,给大家展示一下使用场景。
昨天我运行了一个获取IP的Shell命令:
突然我意识到需要将结果重定向到 ip.txt 中,这时你应该想到用 “UP” 键恢复上一个命令再加上 ‘>ip.txt‘ 命令来重定向进去:
感谢这次救命的”UP” 键。那么再考虑下这个场景,如果我需要运行下面的这个脚本:
当我运行它的时候突然报出了”bash:ifconfig:command not found”错误,我意识到可能是我设定了这个命令需要root权限来运行它。那么现在怎么办?需要重新登录root账号来执行它么?这种情况下使用”up”键也并不管用。所以这里我们使用 “!!” 命令来选择调用这条命令。
显而易见的是 su 是用来选择执行用户的, -c 是用来表示执行具体命令的,最重要的部分 “!!” 代替了你最后一次运行的命令。然后输入你的root密码即可运行它了。
我相信下面的场景非常适合 “!!” 的使用。
当你使用普通的账户来执行apt-get的时候,常常会报错提示你没有权限执行。