[Shell] - 杂项

2019-11-06  本文已影响0人  帅可儿妞

如果想在 Linux 中切换用户

su [-] <user-name>

那么中间的那个-是什么鬼呢?

如果加了这个-, 那么使用的是login shell, 可登陆的 shell
如果没有加, 那么使用的是nologin shell, 不可登陆的 shell

查看系统的 shell, 但是注意, 赫尔上面讲的login shell, nologin shell没有关系

cat /etc/shells

结果中就有两个 shell:
/sbin/nologin
/usr/sbin/nologin

查询 shell 的配置文件

rpm -qc bash

这个问题牵扯 Linux 中几个环境配置文件

login shell在登陆 shell 的时候会执行 1.1, 1.2 , 2.1, 2.2 , 离开的时候执行 2.3, 2.4
nologin shell在登陆 shell 的时候会执行 1.2, 2.2 , 离开的时候执行 2.3, 2.4

login shell 相对于 nologin shell 来说多了加载该用户环境的环节

以下是相关的一些补充
修改某个用户登录的 shell
usermod -s /bin/bash <user-name>

shell 中一些常用技巧

  1. 上下键: 历史命令
  2. !<number>: 打印 ~/.bash_history中第<number>命令, 再执行该条命令
  3. !<string>: 打印以<string>开头的命令执行
  4. !$: 上一个命令的最后一个参数
  5. !!: 上一条命令
  6. ^R: 搜索历史命令

^Z+fg
经常用在 vi 中, 比如正在编辑 vi, 忽然想起没有复制 ip,这个时候就可以^Z, 将当前程序放在后台, ifconfig 之后复制 ip, 再 fg 进入刚才 的 vi 状态, NICE!!!!!!!!!!!!!!!!!!!!!

将内容同时输出到文件和屏幕

date |tee date.txt

echo带有颜色的输出:

$ echo -e "\e[1:<color-num>m<output-text>\e[0m"

其中:
<color-num>为颜色值, 前景色30~37, 背景色40~47;
<output-text>是要输出的文本

Shell中查看一个单词是不是关键字

$ type -a <word>

显示一个文件路径的文件名

$ basename <path-string>

显示一个文件路径的文件夹

$ dirname <path-string>

shell and sub-shell

  1. sub-shell 中执行的写法
$ bash test.sh
# or
$ ./test.sh
  1. 当前 shell 中执行
$ . test.sh
# or
$ source test.sh
上一篇 下一篇

猜你喜欢

热点阅读