[Shell] - 杂项

如果想在 Linux 中切换用户

su [-] 

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

如果加了这个-, 那么使用的是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 中几个环境配置文件

  • 系统级别
    1.1 /etc/profile
    1.2 /etc/bashrc
  • 用户级别
    2.1 ~/.bash_profile
    2.2 ~/.bashrc
    2.3 ~/.bash_logout
    2.4 ~/.bash_history

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

shell 中一些常用技巧

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

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

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

date |tee date.txt

echo带有颜色的输出:

$ echo -e "\e[1:m\e[0m"

其中:
为颜色值, 前景色30~37, 背景色40~47;
是要输出的文本

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

$ type -a 

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

$ basename 

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

$ dirname 

shell and sub-shell

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

你可能感兴趣的:([Shell] - 杂项)