RHEL
isos
文件夹 -> 选择要下载的版本关机之后,右键虚拟机的标签,选择管理,选择右键从磁盘中删除
又或者直接找到文件夹删除也可以
Remote - SSH
ssh root@192.169.x.x
,root为远程主机名,@后面的是主机地址ssh-keygen
这个命令生成.ssh
文件夹,复制 id_rsa.pub
公钥的内容cd ~
,创建 .ssh/authorized_keys
的文件夹和文件,有的话就不用了,将刚才在本地电脑上复制的公钥复制进 authorized_keys
文件中(追加)即可最好是关机快照; 选择虚拟机->快照->快照管理器,进行快照操作
root 系统管理员 / 根目录
bin 执行命令,命令行执行的命令 boot 启动目录,系统启动 dev 驱动、设备、硬件,跟硬件相关的 etc 配置文件 home 用户自己的文件 root 只有超级管理员才可以进 run 运行文件,临时的 sbin 超管命令 tmp 临时目录 usr 应用程序 var 可变的 日志
语法:命令 选项 参数
比如:ls -l /
查看根目录下的文件列表
可以查看文档 https://www.runoob.com/linux/linux-command-manual.html
cd
改变目录(change directory)
cd /
跳到根目录,绝对路径一般都是从这儿跳转的cd ./../
相对路径pwd
显示当前目录ls
文件列表
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出) -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) -d 只列出查询的目录(不递归列出目录内的文件)。
ls -d
是不会列出所有的文件夹的,ls -d 文件夹
只会列出 查看的文件夹 -l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。 -r 倒序显示文件和目录。 -R 递归显示目录中的所有文件和子目录。 -t 将按照修改时间排序,最新的文件在最前面。 -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
ls -l
详细信息
d
开头的是文件夹;
-
开头的是普通文件;
b
块设备,存储设备硬盘,u盘
c
设备文件 字符设备,打印机
i
链接文件
s
套接字文件
p
管道文件
touch
创建文件
touch /root/桌面/aaa
在桌面上创建一个aaa的文件mkdir
创建文件夹
-p 确保目录名称存在,不存在的就建一个。 -v 创建的过程显示出来
mkdir /root/桌面/文件夹1
在桌面上创建一个文件夹1mkdir -p /aa/bb
创建一个文件夹aa,aa中包含bb文件夹mkdir -p cc/{1,txt,2.js}
创建一个cc文件夹(没有的话创建),并且创建其子文件1.txt和2.js。注意逗号前后没有空格mkdir -pv cc/{c-1/{1.txt,2.txt},3.txt}
,{}内自动识别是文件还是文件夹
cp
复制文件或者文件夹
-r 或 --recursive:用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。
cp aa/a.txt bb
将aa文件夹下的a.txt 复制到bb里面去cp -r aa bb
将aa文件夹复制到bb文件夹中去mv
移动文件或文件夹
mv aa bb
将文件夹aa移动到bb中去mv aa bb/aa-1
将文件夹aa移动到bb中去,并改名为aa-1mv aa aa-1
只改名,不移动,将aa文件夹改名为aa-1rm
删除文件或目录
慎用 删了就真的没了,最好是用 mv 重命名
-r 将目录中的内容逐一删除 -f 直接删除 无需确认 -i 删除前,一个一个询问确认
rm -rf aa
删除文件夹aarm -rf aa/*
删除aa文件夹下所有的内容,隐藏文件除外cat
查看文件内容
cat aa/a-1.txt
查看文件a-1的内容head -3 aa/a-1.txt
查看a-1文件内容的前三行tail -3 aa/a-1.txt
查看a-1文件内容的后三行more aa/a-1.txt
当文件内容过多时,在当前终端界面显示不下,会隐藏一部分,按空格翻篇或者回车换行显示剩下的内容grep 2 aa/a-1.txt
搜索a-1文件中,包含2的内容,如果没有搜索到内容,啥都不返回重定向 > 将命令输出的内容写入到一个文件中
ls -l > 1.txt
将 ls -l 命令 输出的内容,写入到 1.txt 文件中ls -l >> 1.txt
一个 > 是覆盖,两个 >> 是追加gedit 1.txt
用图形文件编辑器 打开 1.txti
,进入插入模式
esc
,返回命令模式扩展命令模式
:wq
:w
:q
,如果修改了内容退出时,需要加一个!强制退出,:q!
:set nu
:set nonu
命令模式
yy
复制,再按 p
粘贴,会复制到光标的下一行
数字yy
复制,再按 p
粘贴,复制到光标的下一行,比如 3yy 表示复制了 3 行dd
数字dd
表示删除的行数,比如 3dd 表示从光标位置开始删除三行u
x
删除光标后的那个字,实际上是剪切,按 p 粘贴h
光标前移,l
光标后移,k
光标向上,j
光标向下0
跳到行首,$
跳到行尾gg
回到页首,G
跳到页尾,3G
或者 3gg
跳到第三行/aa
回车后,会查找 aa 的字符,n
会跳转到查找到的下一项,N
跳转查找的上一项: 1,5 s/111/222/g
将第1行到第5行的内容111替换成222,g表示全局:w 路径
会将新文件保存到指定路径:set list
显示控制字符,查看特殊符号:set nolist
隐藏控制字符可视化模式
v
,可以进入选取模式,相当于鼠标拉动选取,对于没有鼠标的情况下使用,选取完成后,按一下 y
,就会复制刚才选取的内容,然后光标移动到适当位置,按 p
就会将复制的内容粘贴下来y
,复制,然后再按 p
粘贴d
,删除注意
有时候,编辑了一半意外的退出了,然后再进入,会询问你是否使用之前的文件,类似这样的 .aaa.txt.swap
,如果不需要,可以 ls -a
查看 .aaa.txt.swap 是否有这个文件,有的话,使用 rm
命令删除掉,再次进入就可以正常进入了
存储在 vim /etc/passwd
文件中,该文件中的数据以一个类似表格的方式存储内容,以冒号分隔,共有七列,每一列表示用户不同信息
比如 head -1 /etc/passwd
查看第一行的内容
root:x:0:0:root:/root:/bin/bash
root | :x | :0 | :0 | :root | :/root | :/bin/bash |
---|---|---|---|---|---|---|
用户名 | 密码占位符 | UID(用户身份证号) | GID(组号) | 描述 | 家目录(登录系统时,所在的目录) (普通用户的家目录在“/home/【用户名】”下) | 登录shell 命令解释器 /sbin/nologin 表示不能登录系统 |
UID:
shell 中文:壳 功能:命令解释器、定义命令、接受命令、执行命令
vim /etc/shadow
例如:
root: $6$yo/8rcV.xV8.kQP8$iPJJvoOJ9nPnHctmNBO/ld.zlkivrNF7J9W05WmMS9JmSim2aAgd65l..PRhMMntdPH/PUe6rbiLmjFRqjvb/.: : 0 : 99999 : 7 : : :
1. : 2. : 3. : 4. : 5. : 6. : 7. : 8. : 9.
解释:以冒号进行分割
root:
用户名$6$yo/8rcV.xV8.kQP8$iPJJvoOJ9nPnHctmNBO/ld.zlkivrNF7J9W05WmMS9JmSim2aAgd65l..PRhMMntdPH/PUe6rbiLmjFRqjvb/.:
$6$
开头的是SHA-512加密$1$
MD5加密$2$
Blowfish加密$5$
SHA-256加密的0:
修改密码时间的 最小时间间隔,多长时间之后才可以再改99999:
密码有效期,最大时间间隔,超过这个天数,必须设置新密码7:
提示修改密码的警告时间,倒数第七天/etc/group
例如:
wheel:x:10:centos7
解释:冒号分割,每列说明
wheel : x : 10 : centos7
组名 : 组密码 : 组id : 成员
每创建一个用户,都会自动生成一个相同名称的组
超级管理员才可以操作用户
useradd user01
创建一个名为 user01 的用户,如果已存在,会返回提示已存在的信息
-u
指定uiduseradd user01 -d /abc
指定家目录,默认是在 home 里面跟用户名相同的文件夹,指定之后,会在指定位置生成指定名称的用户文件夹,打开终端默认就会在这个文件夹中id user01
可以查看名为 user01 的用户的信息,不存在 会返回提示信息
passwd user01
修改 user01 用户的密码,会有提示
passwd
会修改当前用户的密码,当前用户可以修改自己本身的密码,其他用户只能由超管修改whoami
userdel -r user01
删除 user01 用户,-r 表示 /home 下的用户文件夹也一起删掉
usermod
usermod -s /sbin/nologin aaa
修改 aaa 用户的shell解释器,/sbin/nologin 表示无法登陆,-s 表示修改 shell 解释器创建和修改时,都可以指定 -u 指定用户的 UID -g 指定用户的基本组 -G 指定用户的附加组
类型:
groupadd group01
添加一个名为 group01 的组
cat /etc/group
查看是否添加组成功 /etc/passwd
和 /etc/shadow
存储的是用户的信息,没有组的信息。grep group01 /etc/group
也可以查找名称为 group01 的组是否存在,存在会输出groupadd -g 1000 group01
创建一个名称为 group01 的组,并且指定 gid 为 1000,如果没有指定,会自动分配一个 gidgroupdel group02
删除名称为 group02 的组
groupmod -g 1001 group01
修改名称为 group01 的组的 gid 为 1001
cat /etc/group
查看需要查看的组信息,最后一列会显示 组成员,比如 group01:x:1003:user02,user01
grep group01 /etc/group
或者使用搜索
id 用户名
可以查看 用户名当前属于哪些组,以及基本组是哪个
uid=222222(user01) gid=1001(user02) 组=1001(user02),1003(group01)
gpasswd -d user01 group01
表示 将用户 user01 从 group01 中删除
gpasswd -a qxy01 group01
将用户 qxy01 添加到 group01 中,如果 qxy01 不存在,会提示不存在
/var/spool/mail/user01
邮件
su - root
切换到超级管理员账户,需要输入密码
su root
只会切换用户,不会切换环境变量,su - root
切换用户和环境变量exit
可以退出切换到的超管账户,回到之前的用户账户在 etc/sudoers
文件中,可以配置允许哪些用户使用 sudo 命令,哪些用户可以执行哪些命令,哪些用户可以用 sudo 管理哪些用户。
第107行,%wheel ALL=(ALL) ALL
表示 wheel 组的用户可以用 sudo 执行所有命令,并且可以管理所有用户。
举例:
usermod -G 10 qxy01
将 qxy01 用户添加到 wheel 组,这样 qxy01 就可以用 sudo 执行所有命令,并且可以管理所有用户。
切换到 qxy01 用户(需要重新登陆一下qxy01用户),执行超级管理员才能执行的命令
sudo useradd qxy02
就可以使用 qxy01 用户创建一个用户 qxy02,id qxy02
查看是否输出信息
chmod u+r 1.txt
-R
对一个文件夹下所有的文件授权ls -l
显示详细信息,包括权限,简写 ll
可以看到打印出来的第一列信息就是文件的权限信息,比如:
-rw-r--r--. 1 root root 0 6月 28 01:18 file01
第一列:
-rw-r--r--.
,除去第一个和最后一个字符,中间的字符每三个表示一组权限
rw-r--r--
,rw-
表示用户权限 r--
表示组权限 r--
表示其他权限
第二列: 1 表示链接的次数
第三列: root 表示文件所有者(属主)
第四列:
root 表示文件所属的组(属组),比如:在这个组中的用户,对这个文件只能 第一列中的 r--
第五列: 0 表示文件大小,单位是字节
第六列: 6月 28 01:18 表示文件最后一次修改的时间
第七列: file01 表示文件名
chmod u=rwx,g=rw,o=r 1.txt
chmod u=rwx 1.txt
仅修改用户权限,为 读 写 执行chmod g=rw 1.txt
仅修改组权限,为 读 写chmod o=r 1.txt
仅修改其他用户权限,为 读chmod a=r-- 1.txt
所有人只有读的权限chmod a=w 1.txt
所有人只有写的权限,读 和 执行没有设置,表示没权限chmod u+x 1.txt
增加用户执行权限chmod u-x 1.txt
取消用户执行权限
./1.txt
比如文件中写入: echo 'hello linux!!';
read -p "请输入名字:" name;
echo "欢迎使用,$name";
./1.txt
就可以执行了。chmod 444 1.txt
所有人只有读的权限chmod 644 1.txt
用户有读写权限,组和其他只有读权限chmod 777 1.txt
所有人有读写执行权限比如:-rw-r--r--. 1 root root 85 6月 29 01:55 file01.txt
上面 file01.txt
文件的属主是第三列的 root
,属组是第四列的 root
。
修改命令:
chown 用户.组 文件名
修改文件的属主和属组,也可以单独设置
chown qxy01.group01 file01.txt
修改文件 file01.txt
的属主和属组为 qxy01
和 group01
-rw-r--r--. 1 qxy01 group01 85 6月 29 01:55 file01.txt
修改完成后 ll
查看chown root file01.txt
也可以只修改 属主,不修改 属组
-rw-r--r--. 1 root group01 115 6月 29 22:13 file01.txt
chown .qxy02 file01.txt
也可以只修改 属组,不修改 属主
-rw-r--r--. 1 root qxy02 115 6月 29 22:13 file01.txt
chgrp 组 文件名
只修改文件的属组
chgrp group01 file01.txt
修改文件 file01.txt
的属组为 group01
-rw-r--r--. 1 root group01 115 6月 29 22:13 file01.txt
上面的对文件的所有操作,对文件夹也同样生效。
查看文件夹中的子文件和文件夹相当于读取的操作 r(4)
创建文件夹相当于写入的操作 w(2)
打开文件夹相当于执行的操作 x(1)
chomd -R 774 aaaaa
递归设置文件夹权限为 774,包括文件夹中的所有文件和文件夹
chown -R 774 aaaaa
递归设置文件夹属主和属组为 774,包括文件夹中的所有文件和文件夹
对一个文件夹和文件可以设置 属主
和 属组
,根据 属主
和 属组
需要设置 对应的 wrx
权限。
如果一个用户既不属于 属主
和 属组
,那么只能看 other 其他权限。
UGO 顶多设置 三种角色的权限,用户、组、其他角色权限。
ACL 可以设置更多的不同用户的权限
命令:
setfacl -m u:qxy01:rwx file01.txt
-m
表示设置权限u:
表示设置用户,也可以 setfacl -m u::rwx file01.txt
不写用户,表示设置属主的权限,属组和其他 也类似g:
表示设置组o:
表示设置其他用户
setfacl -m o::rw file01.txt
设置 other 其他用户的权限为 读、写rwx
表示读、写、执行权限
设置了 setfacl 后,查看文件的信息,就可以看到第一列的最后一个字符变成了 + 号,表示有 ACL 权限。
-r--rwxr--+ 1 root group01 87 6月 29 23:34 file01.txt
也就是说有 + 号的,一定要用 getfacl
查看权限,否则可能不准确
删除:
setfacl -x u:qxy01 file01.txt
删除用户 qxy01 的权限
-x
删除 qxy01 用户的权限setfacl -b file01.txt
-b
删除所有扩展出来的 ACL 权限getfacl file01.txt
查看文件的 ACL 权限
# file: aaaaaa/
# owner: root // 属主
# group: root // 属组
user::rwx // 属主的权限
group::rwx // 属组的权限
other::r-- // 其他用户的权限
如果设置了
setfacl -m u:qxy01:rwx file01.txt
,
setfacl -m u:qxy02:r file01.txt
则可以看到
# file: file01.txt
# owner: root
# group: group01
user::r--
user:qxy01:rwx // 这里显示的是 qxy01 的权限
user:qxy02:r-- // 这里显示的是 qxy02 的权限
group::r--
mask::rwx
other::r--
创建一个文件 默认的权限是 644
创建一个文件夹 默认的权限是 755
suid 高级权限,针对文件或程序,具备临时提升权限的能力,可以让文件或程序以超级用户权限运行。
ls -l /usr/bin/cat # 显示文件权限,没有 suid 权限
chmod u+s /usr/bin/cat # 给 cat 文件添加 suid 权限
ls -l /usr/bin/cat # 显示文件权限,s 就是 suid 权限
# 切换用户
su - qxy01
cat /home/test11/file01.txt # 可以查看文件内容
exit
# 回到 root 用户,去掉 suid 权限
chmod u=rwx /usr/bin/cat
# 重新切换回 qxy01 用户,发现 无法读取 file01.txt 文件内容了
如果设置时,原本就没有执行的权限,那么 设置 chmod u+s 后,会出现 大写S,如果有权限,会出现 小写 s。
有一个文件,防止被无删除如何操作?也包括超管
# 1. 查看文件属性,没有任何属性
lsattr file01.txt
# ---------------- file01.txt
# 2. 添加 i 属性, 表示不可删除,更改,移动等等
chattr +i file01.txt
# 3. 尝试删除文件,提示不允许
rm -rf file01.txt
# 4. 取消文件不可删除属性
chattr -i file01.txt
# 5. 查看文件属性, 没有 i 属性
lsattr file01.txt
rm -rf file01.txt # 成功删除文件
会更改 创建文件时的默认权限
查看掩码
umask
查看默认的权限,会返回四个数字 0022,掩码
目录创建文件文件夹的权限时就是 0777 - 0022 = 0755
文件的默认权限就是 0777 - 0022 - 0111 = 0644
chmod 7777 file01.txt
中间原本是三个数字,现在多出来了一个,第一位就表示特殊位的权限,4、2、1 分别表示设置 用户、组、其他的特殊位权限
chmod 7777 file01.txt
表示文件权限变成了 rwsrwsrwt
chmod 4777 file01.txt
表示文件权限变成了 rwsrwxrwx
chmod 2777 file01.txt
表示文件权限变成了 rwxrwsrwx
chmod 1777 file01.txt
表示文件权限变成了 rwxrwxrwt
修改掩码
umask 0000
创建文件和文件夹的权限就是 0777 - 0000 = 0777
文件的默认权限就是 0777 - 0000 - 0111 = 0666
现在在创建文件夹就是 rwxrwxrwx,文件 rw-rw-rw-
ps aux
ps aux
查看进程列表
a
显示所有程序u
以用户为主的格式显示x
不以终端来区分ps aux | head -2
查看前两行ps aux --sort %cpu
按照 CPU 使用率升序排序ps aux --sort -%cpu
按照 CPU 使用率降序排序ps -ef
查看进程的父子关系ps axo user,pid,ppid,%cpu,%mem,command
自定义显示信息 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 2.3 0.3 193908 6976 ? Ss 19:04 0:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 19:04 0:00 [kthreadd]
free -m
查看进程内存的使用情况tty
查看当前终端的编号ps aux | grep vim
查看某一个特定的进程信息
root 3062 0.8 0.2 149852 5596 pts/0 S+ 19:31 0:00 vim /etc/group # vim 的进程信息
root 3064 0.0 0.0 112824 976 pts/1 S+ 19:31 0:00 grep --color=auto vim # `ps aux | grep vim` 查询这条命令所占的进程
top
命令:
top -d 3
每隔 3 秒刷新一次进程信息top -p 1666
只查看进程 1666 的信息top -p 1666,2977
只查看进程 1666 和 2977 的信息按键功能:
top - 21:34:06 up 1:00, 1 user, load average: 0.00, 0.01, 0.05
# 程序名 - 系统时间 up 运行时间 用户登录数 CPU负载 1分钟,5分钟,15分钟平均负载
Tasks: 177 total, 1 running, 176 sleeping, 0 stopped, 0 zombie
# 任务总数 177, 运行数 1, 睡眠数 176, 停止数 0, 僵死数 0
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
# CPU占用率:us用户占用,sy系统占用,ni优先级,id空闲,wa等待,hi硬件,si软件,st虚拟机
KiB Mem : 2027896 total, 1165436 free, 502684 used, 359776 buff/cache
# 内存总量, 空闲内存, 使用内存, 缓冲内存/缓存
KiB Swap: 2097148 total, 2097148 free, 0 used. 1350432 avail Mem
# 交换区总量, 空闲交换区, 使用交换区。 可用内存
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1666 gdm 20 0 3241608 136652 62856 S 0.7 6.7 0:08.98 gnome-shell
2977 root 20 0 162096 2308 1580 R 0.7 0.1 0:00.11 top
1218 root 20 0 574288 19528 6144 S 0.3 1.0 0:01.26 tuned
1 root 20 0 193832 7004 4184 S 0.0 0.3 0:06.80 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.06 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.25 ksoftirqd/0
# PID 进程id
# USER 进程所有者
# PR 进程优先级
# NI 进程nice值
# VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
# RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
# SHR 共享内存大小,单位kb
# S 进程状态(S表示休眠,R表示运行,Z表示僵尸进程)
# %CPU 进程使用的CPU资源百分比
# %MEM 进程使用的内存资源百分比
# TIME+ 进程运行时间
# COMMAND 进程名称
控制进程的运行,比如终止进程,杀死进程等。
kill -l
查看所有信号
1
SIGHUP 将 pid 进程 重新加载配置, kill -1 1666
2
SIGINT 键盘退出 ctrl+c3
SIGQUIT 键盘中断 ctrl+\,类似 sigint20
SIGTSTP 键盘暂停 ctrl+z9
SIGKILL 强制终止进程, kill -9 1666
15
SIGTERM 终止进程(正常结束),缺省信号,kill -15 1666
18
SIGCONT 进程继续运行19
SIGSTOP 进程停止运行常用的 15 和 9,使用 15 正常关闭,关闭不成功,使用 9 强制关闭。
可以查看和调整进程的 cpu 优先级,nice 值。
nice 值越大,优先级越低,可以设置 -20 - 19 之间,默认值是 0。
NI 是真实设置的值 PR 是 NI设置的值 +20,表示进程的实际优先级,比如 设置 -20,实际 PR 就是 0 通过 top 命令查看进程的 PR 和 NI 值。
nice -n -5 sleep 7000 &
启动一个 sleep 7000 的进程,放入到后台,优先级为 -5
修改已有进程的优先级
renice -20 3881
调整进程 3881 的优先级为 -20
sleep 7000
启动一个 sleep 7000 的进程,放入到前台运行,等待进程结束。
sleep 7000 &
启动一个 sleep 7000 的进程,放入到后台运行,并不等待进程结束。
jobs
查看后台运行的进程,第一列为后台的进程号
fg 1
将后台进程号 1 放入到前台运行
如果,按键 ctrl + z 将正在运行的前台进程放入后台运行,并暂停进程。
可以使用 bg 4
运行进程号为 4 的进程
消除 后台进程
kill %1
杀死后台进程号为 1 的进程,百分号是一定要带的,否则就识别成 进程id(PID)了
ls /proc/
查看服务器的自身 内核、进程运行的状态信息
cat /proc/cpuinfo
查看 Cpu 信息
cat /proc/meminfo
查看内存信息
cat /proc/cmdline
linux 的内核信息
当使用了 输出重定向,就是调用了 FD,将内容输出到指定位置。
FD 就是文件描述符,是一个数字,表示文件在操作系统中的位置。 0 标准输入,1 标准输出,2 标准错误输出。
输出重定向 就有了 1> 1>> 2> 2>>
写入正常的输出:
>
覆盖写入,将命令的输出重定向到文件,是 1>
的简写
>>
追加写入,将命令的输出追加到文件,是 1>>
的简写
写入错误的输出:
2>
错误输出重定向到文件
2>>
错误输出追加到文件
写入正常和错误的输出:
&>
将命令的输出结果和错误输出结果都重定向到文件
&>>
将命令的输出结果和错误输出结果都追加到文件
ls /root > file.txt # 将 ls /root 的输出重定向到 file.txt 文件
ls /root >> file.txt # 将 ls /root 的输出追加到 file.txt 文件
ls /root 2> error.txt # 将 ls /root 的错误输出重定向到 error.txt 文件
ls /root 2>> error.txt # 将 ls /root 的错误输出追加到 error.txt 文件
ls /root &> all.txt # 将 ls /root 的输出和错误输出都重定向到 all.txt 文件
ls /root &>> all.txt # 将 ls /root 的输出和错误输出都追加到 all.txt 文件
# 合起来写
ls /root > success 2> error # 正确结果将输出到 success 文件,错误结果将输出到 error 文件
# 任何结果都不输出
ls /root &> /dev/null # 将 ls /root 的输出和错误输出都重定向到 /dev/null 文件,即不输出
将一些内容输入给一个程序
程序 < 内容
将内容输入给程序,程序从标准输入读取内容
cat < file # 将 file 文件的内容输入给 cat 程序
前一个命令的输出结果,作为后一个命令的输入。
命令1 | 命令2
将命令1的输出结果作为命令2的输入
cat /etc/passwd | tail -3 # 显示 /etc/passwd 文件的最后三行内容
相当于三通
命令1 | tee 文件名 | 命令2
将命令1的输出结果,同时交给 tee 和 命令2处理。tee 既可以输出到终端,也可以输出到文件中
cat /etc/passwd | tee file2 | tail -3 # 将 /etc/passwd 文件中的内容输入到 file2 文件中,同时 只在终端显示 最后三行
有一些命令,不接受上一个管道输出的结果,就用到了 xargs 命令。
比如 cp rm 不接受上一个管道输出的结果
# 这样删除是不成功的
cat info | rm -rfv # 将读取到的 info 文件中的内容,传递给 rm 命令,告知 rm 要删除那些文件。会删除失败
# 这样写,才可以将读取到的 info 文件中的内容,传递给 rm 命令,告知 rm 要删除那些文件。
cat info | xargs rm -rfv
watch -n1 'ls -l'
每隔一秒刷新一次 ls -l 命令的输出
watch -n1 'date'
每隔一秒刷新一次 date 命令的输出
ln aaa.js bbb.js 创建一个硬链接,两个文件指向同一个文件,修改其中一个,另一个也会跟着变化。
ln -s aaa.js bbb.js 创建一个符号链接。类似快捷方式,bbb.js 保持指向aaa.js的路径地址
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。