Linux基础知识系列之二

常用命令

alias(别名)

Linux基础知识系列之一中提到ls -l=ll,这个就是Linux中的别名,使用alias可以查看系统默认的别名。

[root@hadoop001 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

复制代码

使用alias 别名=命令字符串就可以在当前session会话中生效,如果你想要一直生效,请在环境变量文件末中增添上述命令,有关环境变量的请看下一节。

[root@hadoop001 ~]# alias ul='cd /usr/local'
[root@hadoop001 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias ul='cd /usr/local'   <-- 新增的
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@hadoop001 ~]# ul
[root@hadoop001 local]# pwd
/usr/local
复制代码

环境变量

  1. 全局环境变量 Linux中/etc/profile就是全局变量,无论你用哪个用户登录都可以使用该文件里的所有变量。承接上一节如何在全局环境变量中设置alias,在文件末尾增添以下代码。
#env
alias ul='cd /usr/local'
复制代码

当然光增添代码是不够的,一定要使全局变量生效,使用以下命令均可

. /etc/profile
或者
source /etc/profile
复制代码
  1. 个人环境变量 只针对个人用户,存放的路径就在 ~/.bash_profile 中,打开该文件你会发现它其实还涉及到另一个文件 ~/.bashrc 。所以如果你要设置alias,也是在两个文件末尾添加上述代码。
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

#env
alias rc='cd /root/xxx'
复制代码

使其生效也是上述两种。

. ~/.bash_profile    . ~/.bashrc
或者
source ~/.bash_profile    source ~/.bashrc
复制代码

rm(删除)

一般都是使用 rm -rf 文件名,这种方式会强制删除文件或者文件夹,-f表示强制,-r表示可以文件夹。经常听到就是 rm -rf /*,也就是删库跑路。当然一般人都不会这样直接运行,但是可能会在shell脚本出现这种错,以下场景就导致这种情况。

shell脚本可能会这样
xxxpath=xxx/xx
...(逻辑部分)
rm -rf $xxxpath/*    这里就是个坑

如果一空值赋予给了xxxpath,那么不就成了rm -rf /*
所以在生产上凡是碰见rm -rf强制删除文件夹的,路径一定先判断存在不,不存在 就skip;就存在就rm
复制代码

history(命令记录)

history -c 就是清除命令记录,当然个人用户登陆时,~/.bash_history也会记录命令,所以要清除的话,记得也把它给删掉。

用户/用户组命令集合

  1. useradd 用户名==>添加用户,它的家目录就在/home/用户名
  2. id 用户名==>显示用户和用户组信息
[root@hadoop001 ~]# id dengdi
uid=1001(dengdi) gid=1001(dengdi) groups=1001(dengdi)
用户ID             主组ID           所有组  
复制代码
  1. cat /etc/passwd==>显示所有用户的信息
dengdi(用户名):x:1001(用户id):1001(主组id)::/home/dengdi(家目录):/bin/bash(执行解释器)  
如果/bin/bash变成/bin/false或者/sbin/nologin,这个用户就不能登陆了
复制代码
  1. userdel 用户名==>删除用户 删除用户,会把/etc/passwd记录删除; 同时假如该组没有其他用户,则删除该组 但是 家目录还在,但是用户和用户组 发生变革
[root@hadoop001 ~]# ll /home/
total 0
drwx------. 3 centos centos 70 Jun 28  2017 centos
drwx------  2   1001   1001 59 Jun 17 23:48 dengdi
复制代码
  1. 执行userdel然后再useradd
[root@hadoop001 ~]# userdel dengdi
[root@hadoop001 ~]# useradd dengdi
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
复制代码

来看看系统提示的skel directory是什么,我们ll -a /home/dengdi

[root@hadoop001 ~]# ll -a /home/dengdi/
total 12
drwx------  2 dengdi dengdi  59 Jun 17 23:48 .
drwxr-xr-x. 4 root   root    32 Jun 17 23:48 ..
-rw-r--r--  1 dengdi dengdi  18 Apr 11  2018 .bash_logout
-rw-r--r--  1 dengdi dengdi 193 Apr 11  2018 .bash_profile
-rw-r--r--  1 dengdi dengdi 231 Apr 11  2018 .bashrc
复制代码

skel directory就是.bash*所有的隐藏文件,尝试将这些删除然后切换dengdi用户

[root@hadoop001 ~]# ll -a /home/dengdi/
total 16
drwx------  2 dengdi dengdi  79 Jun 18 00:06 .
drwxr-xr-x. 4 root   root    32 Jun 17 23:48 ..
-rw-------  1 dengdi dengdi   5 Jun 18 00:06 .bash_history
-rw-r--r--  1 dengdi dengdi  18 Apr 11  2018 .bash_logout
-rw-r--r--  1 dengdi dengdi 193 Apr 11  2018 .bash_profile
-rw-r--r--  1 dengdi dengdi 231 Apr 11  2018 .bashrc
[root@hadoop001 ~]# rm -rf /home/dengdi/.*
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘/home/dengdi/.’
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘/home/dengdi/..’
[root@hadoop001 ~]# ll -a /home/dengdi/
total 0
drwx------  2 dengdi dengdi  6 Jun 18 00:08 .
drwxr-xr-x. 4 root   root   32 Jun 17 23:48 ..
[root@hadoop001 ~]# su - dengdi
Last login: Tue Jun 18 00:07:26 CST 2019 on pts/0
-bash-4.2$ 
复制代码

所以skel directory是决定你的[root@hadoop001 ~]还是-bash-4.2$ 6. groupadd 用户组==>新增用户组 usermod -a -G 用户组 dengdi==>添加用户组新成员为dengdi usermod -g 用户组 dengdi==>修改xxx为主组

[root@hadoop001 ~]# groupadd bigdata
[root@hadoop001 ~]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze)
[root@hadoop001 ~]# usermod -a -G bigdata ruoze
[root@hadoop001 ~]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze),502(bigdata)
[root@hadoop001 ~]# usermod -g bigdata ruoze
[root@hadoop001 ~]# id ruoze
uid=501(ruoze) gid=502(bigdata) groups=502(bigdata)
这里重新指定主组之后,会丢失原来的主组
复制代码
  1. 重新指定用户家目录
usermod -d 路径 用户
或者
vi /etc/passwd
复制代码
  1. 切换用户
su ruoze   切换用户 当前路径不会变,就是切换之前的路径
su - ruoze 切换用户 且切到该用户的家目录,且执行环境变量文件生效
复制代码
  1. passwd 用户==>设置密码或者重置密码

转载于:https://juejin.im/post/5d08d161f265da1b957059b8

猜你喜欢

转载自blog.csdn.net/weixin_34114823/article/details/93180591