文件管理
Bash执行命令
passwd
passwd
普通用户修改密码
passwd robinkool
root用户管理账户密码
passwd -d robinkool
root用户删除普通用户密码
file
file /bin/file
cat
cat option 文件
cat -A /etc/hosts
#-A选项等于-VET

cat /etc/hosts /etc/fstab
一次性查看多个文件

head
head option 文件
head /etc/profile
#只查看前四行
head -n 4 /etc/profile

head -n-3 /etc/profile
查看所有内容除了最后三行

head -n3 /etc/hosts /etc/fstab
查看多个文件前三行

tail
tail /etc/profile #默认查看尾十行

tail -n +4 /etc/profile
查看从第四行到最后所有内容
head -n 15 /etc/profile | tail -n 5
tail -n +11 /etc/profile | head -n 5
截取文件11-15行 /etc/profile的两种方法
less
less /etc/profile
q=quit
上下方向键逐行查看
左右键左右翻页
pageup和pagedown上下翻页
wc
wc -l 输出行数
wc -c 输出字节数
wc -m 输出字符串数
wc -L 显示最长行的长度
wc -w 显示单词计数
echo
echo -n 不要追加换行
echo -e 启用反斜杠转义解释
echo -E 抑制对反斜杠转义的解释
bashrc配置文件--持久化保存
seq -s + 10 #-s用法分隔符
grep username /etc/passwd
#如果显示nologin则为不能登录
手动创建用户
#添加账户
vim /etc/passwd
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
#添加组
vim /etc/group
zhangsan:x:1002:
#添加密码
vim /etc/shadow
#最后一行添加 明文为redhat
$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::
#准备家目录
cp -r /etc/skel/ /home/zhangsan
#修改张三家目录所属有zhangsan用户和组
chown zhangsan:zhangsan /home/zhangsan
ll -d /home/zhangsan
#测试
ssh zhangsan@localhost

/usr 系统安装的软件、共享的库
/usr/bin 用户命令
/usr/sbin 系统管理命令
/usr/local 本地自定义软件
/etc 系统配置文件
/var 系统可变数据如数据库、缓存目录、日志
/home 主目录(家目录)普通用户存储个人数据和配置文件的位置,每个用户都有自己的位置,/home/robinkool
/root 管理员root的主目录
/tmp 供临时文件使用的全局可写空间
/dev 设备文件,供系统访问硬件
mkdir
mkdir dir00
mkdir dir01 dir02
mkdir -p dir00/dir01/dir02/dir03/dor04
隔两层创建不存在的目录使用-p
cp
cp /etc/hosts .
复制到当前位置
cp /etc/hosts ./hosts-1
复制到当前位置并且重命名为hosts-1
cp /etc/passwd /etc/host.conf .
复制多个文件到当前位置
cp -r /etc/yum .
复制目录用-r 复制etc下的yum目录到当前位置
cp -r复制目录当目标位置有相同名称目录时,将源目录放到相同目录下,而不是覆盖。
mv
mv hosts-1 /lab
移动单个文件
mv passwd hosts /home/robinkool/lab
移动多个文件,目标位置只能是目录
mv host.conf host.conf-new
重命名
mv lab /home/root
移动目录
rm
rm hosts
删除文件
cp /etc/pki/ca-trust/extracted/java/cacerts .
rm cacerts
强制删除具有写入保护的文件
rm -f cacerts
强制删除文件 不会询问
rm -r /home/root/lab
递归删除
rm -rf
强制递归删除
软连接和硬链接
soft link 类似于Windows中的快捷方式,可以通过将占用空间较大源文件创建软连接到原位置,然后将源文件移动到其余位置来节省磁盘空间。
在软件包的源码编译安装中,将软件的服务创建软连接到/usr/bin目录下可以在全局启动服务。
ln -s 原位置 连接名称

rm mytmp
删除软连接时,连接名称后面不能跟/分隔符
硬链接为普通文件,与源文件的inode号相同,可以通过多个文件名访问同一个数据块,任何一个文件发生改变,其余的也跟着改变。
ln hosts-1 hosts-2
ln默认创建硬连接
Linux的输入和输出重定向
输出重定向到文件



独立输出
find /etc -name 'passwd'
查找etc目录下文件名是passwd的所有文件
find /etc -name 'passwd' 1>passwd.list
cat passwd.list
1>passwd.list可以省略1写为 >passwd.list
1和>之间不能有空格
将找到的名覆盖写入passwd.list中

find /etc -name 'passwd' >> passwd.list
将找到的文件名追加到passwd.list中

find /etc -name 'passwd' 2>passwd.err

这里是因为用的root用户没有权限不足的问题,当使用cat passwd.err时显示为空,如果切换为普通用户就会看到错误信息

find /etc -name 'passwd' 2>/dev/null
设备文件/dev/null永远为空
将错误信息扔掉

这里看不到错误是因为错误信息被定向到空,但是是因为root用户输入的命令,所以没有权限不足的错误信息。
正确信息(标准输出)
-
位置 :直接显示在终端(标准输出,文件描述符
1
) -
内容 :
find
命令找到的匹配文件路径(如/etc/passwd
)
错误信息(标准错误)
-
位置 :被重定向丢弃(
2>/dev/null
表示丢弃所有错误) -
内容 :权限不足、目录不存在等错误(如
find: /etc/ssh: Permission denied
)find /etc -name 'passwd' > passwd.all 2>&1
将错误信息和正确信息覆盖写入到相同文件

find /etc -name 'passwd' >> passwd.all 2>&1
将错误信息和正确信息追加写入到相同文件

输出重定向到程序
管道符
管道符(|)实现,将上一个命令的输出作为标准输入传递给下一个命令

ip a | grep 'ens160$' | awk '{print $2}'
hostname -I 也可以取ip
获取ens33网卡ip地址

管道符后的命令必须能够接受标准输入,才可以配合管道符使用。但是ls不接受管道传递的标准输入。
echo /etc/passwd | ls -l

ls不接受所以只执行了ls -l
echo /etc/passwd | xargs ls -l

tee
> passwd.list
cat passwd.list
将空覆盖写入passwd.list 清空文件内容

find /etc -name 'passwd' 2>/dev/null | tee passwd.list
cat passwd.list
tee命令覆盖保存到文件

find /etc -name 'passwd' 2>/dev/null | tee -a passwd.list
cat passwd.list
tee命令追加保存到文件

标准输入重定向给程序
cat /etc/hosts
cat < /etc/hosts

cat << EOF
> hello
> world
>EOF
shell读取到EOF时,代表标准输入完成
