常用的命令

来自多彩世界 2020-04-11

Linux常用的命令和配置。

文件相关

文件浏览

# 可用带-F参数的ls命令轻松区分文件和目录
ls -F
# 显示隐藏文件及目录
ls -a
# 列出了当前目录下包含的子目录中的文件
ls -F -R
ls -FR
# 只列出目录本身的信息,不列出其中的内容
ls -d
# -l参数会产生长列表格式的输出
ls -l
# 要查看文件或目录的inode编号
ls -i
# 组合
ls -alF

文件排序和搜索

排序

# 按值排序
sort -n file2
# 按月份排序
sort -M file3
# 按字段分隔的数据排序,用-t参数来指定字段分隔符,然后用-k参数来指定排序的字段,根据用户ID进行数值排序
sort -t ':' -k 3 -n /etc/passwd
# 文件大小降序
du -sh * | sort -nr

搜索

grep [options] pattern [file]
# 反向搜索 -v
# 要显示匹配模式的行所在的行号 -n
# 有多少行含有匹配的模式 -c
# 指定多个匹配模式 -e
grep -e t -e f file1

文件压缩和归档

# gzip压缩文件,gunzip解压,gzcat查看压缩过的文本内容
gzip myprog
gzip my*
# 归档文件
tar function [options] object1 object2 ...
# 归档文件,查看文件,提取文件
tar -cvf test.tar test/ test2/
tar -tf test.tar
tar -xvf test.tar
# 解压.tgz结尾的文件
tar -zxvf filename.tgz

文件权限

/etc/passwd文件包含了与用户有关的信息,文件中的每一行中的字段包含了:

  • 登录用户名
  • 用户密码
  • 用户账户的UID(数字形式)
  • 用户账户的组ID(GID)(数字形式)
  • 用户账户的文本描述(称为备注字段)
  • 用户HOME目录的位置
  • 用户的默认shell
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

绝大多数Linux系统都将用户密码保存在/etc/shadow文件中,只有root用户才能访问/etc/shadow文件。在/etc/shadow文件的每条记录中都有9个字段:

  • 与/etc/passwd文件中的登录名字段对应的登录名

  • 加密后的密码

  • 自上次修改密码后过去的天数密码(自1970年1月1日开始计算)

  • 多少天后才能更改密码

  • 多少天后必须更改密码

  • 密码过期前提前多少天提醒用户更改密码

  • 密码过期后多少天禁用用户账户

  • 用户账户被禁用的日期(用自1970年1月1日到当天的天数表示)

  • 预留字段给将来使用

cat /etc/shadow
bin:*:17246:0:99999:7:::

用默认系统参数创建一个新用户账户

useradd -m test
ls -al /home/test

userdel命令会只 删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件,如果加上-r参数,userdel会删除用户的HOME目录以及邮件目录。

/usr/sbin/userdel -r test
ls -al /home/test

# 创建新组
/usr/sbin/groupadd shared
tail /etc/group
# 把用户分配到该组
/usr/sbin/usermod -G shared test
# 修改组名
/usr/sbin/groupmod -n sharing shared
# 修改组GID
/usr/sbin/groupmod -g 506 505

改变文件权限

# umask命令用来设置所创建文件和目录的默认权限
umask 026
# 改变权限
chmod 760 newfile

改变文件所属用户

# 用登录名或UID指定
chown testuser newfile
# 同时改变文件的所属用户和所属组
chown testuser.shared newfile
# -R递归改变子目录和文件所属关系,-h改变该文件的所有符号链接文件的所属关系
chown -R testuser newfile

# 更改文件或目录的默认属组
chgrp shared newfile

用户共享文件

mkdir testdir
chgrp shared testdir
chmod g+s testdir
umask 002
cd testdir
touch testfile
ls -l

环境变量

全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的 shell可见。

# 查看全局变量
env
printenv
printenv HOME
echo $HOME

# 查看所有环境变量,包括局部变量、全局变量 以及用户定义变量
set

# 设置局部用户定义变量,变量名、等号和值之间没有空格
echo $my_variable
my_variable=Hello
my_variable="Hello World"
echo $my_variable

# 设置全局环境变量
my_variable="I am Global now"
export my_variable
echo $my_variable

# 删除环境变量,unset
unset my_variable

# 设置PATH环境变量,系统重启后消失
echo $PATH
PATH=$PATH:/home/christine/Scripts
PATH=$PATH:.

# 环境变量持久化
$HOME/.bashrc

什么时候该使用$,什么时候不该使用$:如果要用到变量,使用$;如果要操作变量,不使用​$。这条规则的一 个例外就是使用printenv显示某个变量的值。

关机halt,重启reboot

未完待续…