周六,晴,记录生活分享点滴
参考博客:https://www.cnblogs.com/resn/p/5800922.html
推荐阅读:https://www.runoob.com/linux/linux-tutorial.html
cat 、tac
cat : 链接文件后输出文件内容到屏幕上,其实就是查看文件内容
tac : 反转行的输出
cat file1 #显示 file1的文件内容 cat file1 file2 # 显示file1和file2的文件内容 cat -n file1 # 由1开始对所有输出的行数编号 cat -s file # 当遇到连续2行以上的空白行,只保留一行空白行
小结:有空格的时候不是空白行
wc
wc:统计指定文件中的字节数、字数、行数,并将统计结果显示输出
-c 统计字节数。 -l 统计行数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
小结:-w可以理解为一个单词,单词与单词之间需要用空格之类的符号间隔开
sort
sort:排序
sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同; -b :忽略最前面的空格符部分; -n :使用『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -u :就是 uniq ,相同的数据中,仅出现一行代表; -t :分隔符,默认是用 [tab] 键来分隔; -k :以那个区间 (field) 来进行排序的意思
uniq
uniq:忽略或报告重复行
uniq [-icu] 选项与参数: -i :忽略大小写字符的不同; -c :进行计数 -u :只显示唯一的行
小结:uniq即去重(删去重复的),同 sort-u
cut
cut:从一个文本文件或者文本流中提取文本列
选项与参数: -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思; -c :以字符 (characters) 的单位取出固定字符区间
小结:cut 分隔文本,当一个文件有多列的时候,希望把一列取出来
tee
tee:读取标准输入的数据,并将其内容输出成文件。
cat sec.log | tee file1 # 读取sec.log ,并生成file1文件 cat sec.log | tee - a file1 # 读取sec.log ,并追加, cat sec.log |tee file1 file2
小结:
- stdin标准输入:系统通过 stdin 接收输入的命令,并执行,出反馈结果
- stdout标准正确输出:如果执行正确,发送到 stdout 里面,可以从这看到
- stderr标准错误输出:如果执行错误,发送到 stderr 里面,可以从这看到
history
history:查看执行过的命令。
history # 显示最近1000条历史命令 history 5 # 显示最后5条命令 !number# number为history之后命令前的序号:执行该条命令 !cat # 执行最后一条以cat开头的命令
more
more:查看文件内容
less
less:查看文件内容
小结:如果查看 cat 文件内容,先输入 / (正斜杠) ,再输入cat
head
head:输出文件的开始的部分, 可以指定行数 , 默认显示10行
head -n 5 file
tail
tail:查看文件尾部的内容。默认显示最后10行
tail file1 tail -n 5 file1 tail -f file1 # 动态监控文件
小结:tailf 等价于 tail -f
which
which:查找其他命令的位置
which ls
文件权限
rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人 的权限。
r : 表示可读, 可以用数字 4 来表示
w : 标识可写 ,可以用数字 2 来表示
x : 表示可执行 , 可以用数字 1 来表示
- :表示没有相应权限 可以用数字 0 来表示
修改权限的方法:
chmod o+w file1 chmod g-w file1 chmod go-w file1 chmod u=rwx file1 chmod 755 file1 # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限 chmod 644 # -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限 # 其中: # u 代表所有者(user) # g 代表所有者所在的组群(group) # o 代表其他人,但不是u和g (other) # a 代表全部的人,也就是包括u,g和o
目录上的权限:
r : 表示是否可以读取目录下的文件名
w : 表示是否可以在目录下创建修改文件
x : 表示目录是否可以被搜索
有x权限后,就可以使用 ./a.py 的方式执行文件。
chown : 更改文件的所有者和所有组
chown root:root file
chown root file
chown :root file
小结:
- chmod:修改权限位rwx,
- 表示方式:+ - = number(eg:123)
- 表示用户身份:u g o a(所有人)
- chown:更改所有者、所有组
- 参数:-R 递归的修改当前目录及其下的所有文件和目录的权限,即chmod修改的是权限位,chown修改的是所有者、所有组
用户和用户组
linux使用文件保存用户信息
文件 # /etc/passwd 用户账户信息。 # /etc/shadow 安全用户账户信息。 # /etc/group 组账户信息。 # /etc/gshadow 安全组账户信息。 # /etc/default/useradd 账户创建的默认值。 # /etc/skel/ 包含默认文件的目录。 # /etc/login.defs Shadow 密码套件配置。
useradd
useradd: 添加用户
# -c 备注 加上备注。并会将此备注文字加在/etc/passwd中的第5项字段中 # -d 用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权 # -e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow # -f 缓冲天数。限定密码过期后多少天,将该用户帐号停用 # -g 主要组。设置用户所属的主要组 www.cit.cn # -G 次要组。设置用户所属的次要组,可设置多组 # -M 强制不创建用户主文件夹 # -m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下 # -p 密码。输入该帐号的密码 # -s shell。用户登录所使用的shell # -u uid。指定帐号的标志符user id,简称uid useradd user1 # 添加用户 user1 useradd -d /home/userTT user2
userdel
userdel : 删除用户
userdel user1 userdel -r user1 # -r, --remove 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。 # -f, --force 此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户
usermod
usermod : 修改用户信息
# -c<备注> 修改用户帐号的备注文字。 # -d登入目录> 修改用户登入时的目录。 # -e<有效期限> 修改帐号的有效期限。 # -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。 # -g<群组> 修改用户所属的群组。 # -G<群组> 修改用户所属的附加群组。 # -l<帐号名称> 修改用户帐号名称。 # -L 锁定用户密码,使密码无效。 # -s<shell> 修改用户登入后所使用的shell。 # -u<uid> 修改用户ID。 # -U 解除密码锁定。 usermod -G staff user2 # 将 newuser2 添加到组 staff 中 usermod -l newuser1 newuser # 修改 newuser 的用户名为 newuser1 usermod -L newuser1 # 锁定账号 newuser1 usermod -U newuser1 # 解除对 newuser1 的锁定
groupadd
groupadd : 添加组
groupadd group1 groupadd -g 1000 group1 # 指定gid
groupdel
groupdel : 删除组
groupdel group1 # 删除组
小结:
- useradd :添加用户
- userdel :删除用户
- userdel username :只删除用户信息,用户的家目录不会被删除
- userdel -r username1 :删除用户信息,用户的家目录被删除
- usermod :修改用户信息
- passwd :修改用户密码
- groupadd、groupdel、groupmod与 user 类似
su与 sudo
su
su : 切换用户,没有参数时,默认切换为root用户;
su # 切换为root ## 推荐 su - # 切换为root 并加载user1的环境配置 su - user1 # 切换为user1 并加载user1的环境配置
sudo
sudo : 让当前用户暂时以管理员的身份root来执行命令。
Ubuntu 默认没有启用root用户, 普通用户执行一些特殊的操作时,使用sudo就可以让普通用户以root用户的身份执行命令
sudo有一个配置文件: /etc/sudoers ; 通过修改配置文件可以让指定用户使用sudo命令
man sudoers # 查看man手册 看下面几行: # Host alias specification # 配置Host_Alias:就是主机的列表 Host_Alias HOST_FLAG = hostname1, hostname2, hostname3 # User alias specification # 配置User_Alias:就是具有sudo权限的用户的列表 User_Alias USER_FLAG = user1, user2, user3 # Cmnd alias specification # 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径! Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4 # 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表 Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 # User privilege specification # 配置权限的格式如下: # USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG root ALL=(ALL:ALL) ALL 如果不需要密码验证的话,则按照这样的格式来配置 USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG 格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选] 可以执行的命令(或Cmmd_Alias) 这样描述语法很生硬,不易理解,举例子 user1 host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill user1 host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD # 这个tag,默认是PASSWD) user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码 user1 host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于# su -u opertor /bin/kill user1 host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。 %group_name host1 = /bin/kill # 所有group_name里面的用户都可以在host1上执行/bin/kill(Linux中一般代表整个用户群组用# %group_name) 再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行: xxx ALL=NOPASSWD: /bin/su
小结:
- su :切换用户
- su - :加载用户
- sudo :
- 一般情况下让用户以管理员的身份执行某条命令;
- 二般情况下让用户以指定的身份执行某条命令。
- 进入sudo的方式:vi /etc/sudoers 或 visudo
alias
alias : 给命令起别名
alias ll='ls -alF' alias la='ls -A' alias l='ls -CF'
如果需要别名永久生效,需要保存到 .bashrc 文件