Linux命令详解__不定时更新

阅读: 1895 | 文章分类: Linux | Tag: 命令  

# 不定时更新~~ > 首页将会持续更新新的内容,欢迎查阅,如有错误的地方欢迎指正 ### du 查看目录或文件的大小 ``` du [参数] [目录] -a :显示目录/文件大小 包括隐藏文件 建议配合使用-h使用,将单位换算为更直观显示 -b :文件大小以byte单位显示 -c :显示所有文件大小并在最后一行显示所有文件大小总和 建议配合使用-h使用,将单位换算为更直观显示 -h :将文件大小以合理单位显示(比喻:10000000元 与 一千万元) 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 查看当前目录下的所有文件大小(这里显示的有test目录的大小和当前目录大小) [root@localhost data]# tree . . ├── file2 ├── file3 └── test └── file1 1 directory, 3 files [root@localhost data]# du 16252 ./test 518924 . 或 [root@localhost test]# du -h 16M ./test 507M . # 查看/etc/目录大小(此处不会显示其子目录的大小,-s 仅显示总计) [root@localhost ~]# du -sh /etc/ 30M /etc/ ``` ### df 查看磁盘大小 ``` df [参数] -h :将磁盘大小以合理单位显示(比喻:10000000元 与 一千万元) 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 查看磁盘大小 [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 4.7G 13G 28% / devtmpfs 446M 0 446M 0% /dev tmpfs 456M 0 456M 0% /dev/shm tmpfs 456M 18M 439M 4% /run tmpfs 456M 0 456M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 92M 0 92M 0% /run/user/0 ``` ### yum 查找、安装、删除某一个或某一组依赖关系的软件包 ``` yum ``` 举个栗子 ``` # 声明参数: # -y 在安装过程中所有提示全部为yes ; -q 不显示安装过程。 # install为安装的意思,所有安装命令都需要使用它 # 列出所有可更新的命令 [root@localhost ~]# yum check-update # 更新所有软件命令(包括内核) 注意!!在生产环境中切勿随意使用这种方式更新,因为更新完可能会导致现有的程序(指公司开发的业务性程序)容易报错以致奔溃 [root@localhost ~]# yum update # 安装指定软件,例如vim [root@localhost ~]# yum -y install vim # 只更新指定命令 例如vim (也可使用yum -y install vim) [root@localhost ~]# yum update vim # 列出所有可安装的软件清单 [root@localhost ~]# yum list # 删除指定命令 例如vim [root@localhost ~]# yum remove vim # 查找软件包 例如vim [root@localhost ~]# yum search vim # 更换软件源 (软件源有:阿里/163/国内各大学镜像站等,百度搜索镜像站就有一堆) # 先安装wget(下一条会讲到怎么安装,还有怎么用) # 打开网址阿里yum源的地址 http://mirrors.aliyun.com/repo/ # 找到自己对应系统的yum源,例如Centos-7.repo 右击拷贝链接 [root@localhost ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo [root@localhost ~]# ll Centos-7.repo -rw-r--r-- 1 root root 2573 11月 21 2014 Centos-7.repo # 获得 Centos-7.repo 文件(该文件就是阿里的yum源 阿里就是淘宝那个阿里,以后很多都要跟它接触) # 先把/etc/yum.repos.d/CentOS-Base.repo 这个文件剪切到/tmp/目录下,然后将刚下载的Centos-7.repo剪切并重命名 [root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /tmp/ [root@localhost ~]# mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo [root@localhost ~]# ll /etc/yum.repos.d/CentOS-Base.repo -rw-r--r-- 1 root root 2573 11月 21 2014 /etc/yum.repos.d/CentOS-Base.repo # 执行清理缓存并重新更新生成缓存 [root@localhost ~]# yum clean all && yum makecache # 执行将rpm包目录下载到本地 [root@localhost ~]# yum -y install createrepo # 完成yum源更换 ``` ### wget 下载工具 ``` wget [url] ``` 举个栗子 ``` # 使用yum -y install wget安装 # 将Cloud享mirrors站的一个php7下载到本地服务器上 [root@localhost ~]# wget https://mirrors.cloudhy.cn/PHP/php-7.1.7.tar.bz2 ``` ### vim 文本编辑器 ``` vim [文件名] 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 安装方式 yum -y install vim # 编辑网卡eth0 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 # vim快捷键 键盘esc == 退出编辑模式(退出编辑模式后可执行搜索或保存退出等其他命令) 退格键 == 删除光标前1个字符 delete == 删除光标后1个字符 insert == 切换 插入模式/替换模式 home == 光标移动到行首 a == 光标后面插入 i == 光标当前位置插入 I == 行首插入 gg == 第一行 G == 最后一行 Ctrl F == 上翻页 Ctrl B == 下翻页 :324 == 定位到324行 /123 == 查找文本中的123 n查找下一个 N查找上一个 dd == 删除当前行 dgg删除到第一行 5 dd == 往下删5行 d0 == 从光标删除到行首 d$ == 从光标删到行尾 大写D等同d$ u == 撤回 :e! == 恢复初始状态(即恢复上次保存状态) yy == 复制行 3yy即复制3行 p == 粘贴行 ! == 强制执行 :q == 不保存并退出 :q!为强制退出 :w == 保存文件 :w!为强制保存 :wq!为强制保存并退出 # 将文件内所有abc替换为def :%s/abc/def/g ``` ### find 文件/目录 搜索 ``` find [路径] [参数] -type :搜索类型 f为文件 d为目录 c为文件类型 不加-type则为目录和文件一起搜索 -name :文件名称 如:-name file1 -size :[数字]为单位 b为512位元组区块 c为字元数 k为单位bytes w为二个位元组 -perm :按文件权限搜索 如:-perm 744 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 从/etc/目录搜索host (以host开头则是host* 以host结尾的则是*host) [root@localhost ~]# find /etc/ -name host # 从/etc/目录搜索host目录(不包含文件) [root@localhost ~]# find /etc/ -type d -name host # 从/etc/目录搜索host文件(不包含目录) [root@localhost ~]# find /etc/ -type f -name host 搜索并删除/var/log/目录下大于50M的文件 (如需精文件确后缀名,则在-a后面加入 -name "*.log" +50M为大于50M 50M等于50M -50M小于50M) [root@localhost ~]# find /var/log -size +50M -a -exec rm {} \; # 从/test目录下搜索文件权限为744的文件并查看路径及文件详情 [root@localhost ~]# find /test -type f -perm 744 -exec ls -l { } ; # 搜索/test目录下文件长度为0的普通文件并查看路径及文件详情 [root@localhost ~]# find /test -type f -size 0 -exec ls -l { } ; # 查找/test目录下7天以前更新过的普通文件并删除 [root@localhost ~]# find /test -type f -mtime +7 -ok rm { } ; # 查找系统中文件长度为0的普通文件 ``` ### grep 查找文件里的内容 ``` grep [参数] [目录] -v :排除内容,将排除的内容以外的信息打印 详细用法见 Linux三剑客用法 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 查找file1文件里的"testfile"字符串 (如在目录下所有文件内容搜索内容时,file1可为路径,当前路径为 . ) [root@localhost ~]# grep -Hrn 'testfile' file1 file1:6:testfile file1 == 文件名称 6 == 第6行 testfile == 行内容(注意:如行内有其他字符将同时显示在这,但搜索的内容会标记红色) # 执行ifconfig并筛选出里面包含inet的行 (以a开头的行 == "^a" ; 以b结尾的行 == "b$") [root@localhost ~]# ifconfig | grep "inet" # 用cat命令查看file1文件并过滤出test (如搜索内容没有特殊符号,可不带双引号) cat file1 | grep test ``` ### alias 设置指令别名 ``` alias [别名]=[命令] 仅本终端有效,其他终端或重新打开终端将失效 永久生效则在 ~/.bashrc 或 ~/.cshrc 文件中添加(当前用户) 添加后输入source ~/.bashrc 或 source ~/.cshrc 生效(修改哪个文件就对应执行该文件生效) ``` 举个栗子 ``` 将ls -a设置别名未asd [root@bogon ~]# alias "asd=ls -a" [root@bogon ~]# asd . .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .ssh .tcshrc ``` ### unzip 解压zip工具 ``` unzip [解压的文件] [路径] -l :查看压缩包内所有文件 -v :查看压缩包内所有目录详细信息(不解压) -p<密码> :密码选项 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 需yum安装 # 解压file1.zip到当前目录 [root@localhost ~]# unzip file1.zip # 解压file1.zip到/data/目录ixa [root@localhost ~]# unzip file1.zip -d /data/ ``` ### gzip 压缩 ``` gzip [压缩的文件] -dv :压缩过程中列出详细信息 -l :查看压缩文件详细信息 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 压缩file1 (此方式压缩后会将原文件删除) [root@localhost ~]# gzip file [root@localhost ~]# ls file1.gz ``` ### tar 压缩工具 ``` tar [参数] [路径/文件] [路径/文件] cvf :打包文件(组合参数,详见帮助文档) xf :解压文件(组合参数,详见帮助文档) 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 打包/test/目录下的所有文件并命名为test.tar.gz放到当前工作目录下 [root@localhost ~]# tar cvf test.tar.gz /test/* # 解压test.tar.gz到当前目录下 [root@localhost ~]# tar xf test.tar.gz # 解压test.tar.gz到/data/目录下 [root@localhost ~]# tar xf test.tar.gz -C /data ``` --- --- ### ssh 远程链接到其他服务器 >只允许链接linux,别问我为啥不能链接Windows~~ ``` ssh -p<端口号> :默认非22端口的远程服务器则需加端口 ``` 举个栗子 ``` # 使用ssh远程链接到192.168.112.9 [root@serve_112.4 ~]# ssh 192.168.112.9 The authenticity of host '192.168.112.9 (192.168.112.9)' can't be established. ECDSA key fingerprint is SHA256:uWoj+qYcp3jIezZWdbUGvMUHGbVmgMQM6iOG7m/2O+8. ECDSA key fingerprint is MD5:e4:06:80:1a:b8:84:0c:f0:9b:86:41:aa:f7:b8:b0:c8. Are you sure you want to continue connecting (yes/no)? yes # 输入yes Warning: Permanently added '192.168.112.9' (ECDSA) to the list of known hosts. root@192.168.112.9's password: #输入密码 Last login: Tue Apr 3 10:28:32 2018 from desktop-4j8shb2.mshome.net [root@server_112.9 ~]# # 上面操作等同于 ssh -p 22 root@192.168.112.9 例如: [root@serve_112.4 ~]# ssh 192.168.112.4 The authenticity of host '192.168.112.4 (192.168.112.4)' can't be established. ECDSA key fingerprint is bc:49:c0:e8:63:ff:53:03:34:83:c3:46:42:59:2c:cd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.112.4' (ECDSA) to the list of known hosts. root@192.168.112.4's password: # 观察此处,已使用root用户 Last login: Tue Apr 3 09:28:36 2018 from 192.168.112.1 [root@server_112.9 ~]# # 如使用用户jiahui,则为: [root@server_112.10 ~]# ssh jiahui@192.168.112.9 # 因默认ssh链接端口为22,如果ssh端口已修改为666,则为 [root@server_112.10 ~]# ssh -p 666 jiahui@192.168.112.9 # 远程执行命令date [root@server_112.10 ~]# ssh jiahui@192.168.112.9 date # 知识点:企业中运维人员一般为保障服务器安全,防止被字典等暴力行为攻击,会将端口该为其他端口,一般设置5位数的端口较为安全 ``` ### useradd 添加用户 ; userdel 删除用户 ``` useradd [参数] [用户组] [新用户名称] -g :添加新用户并指定用户组 -r :添加系统用户 -d :添加用户并指定用户home目录 useradd -d /test/abc abc -u :创建用户并指定id useradd abc -u 500 参数自行参阅man或help帮助文档 userdel [删除用户] ``` 举个栗子 ``` # 添加用户jiahui (创建用户后将在/home目录下自动生成用户的家目录) [root@localhost ~]# useradd jiahui [root@localhost ~]# ls /home/ jiahui # 添加用户并将新用户home目录指向/test [root@localhost ~]# useradd -d /test jiahui # 添加新的系统用户 [root@localhost ~]# useradd-r jiahui # 添加新用户并将它指定到U1用户组 [root@localhost ~]# useradd -g U1 jiahui # 删除用户jiahui,连同家目录删除 (操作前请确保该用户文件已备份,删除后无法恢复) [root@localhost ~]# userdel -r jiahui [root@localhost ~]# ls /home/ [root@localhost ~]# ``` ### groupadd 创建用户组 ; groupdel 删除用户组 ``` groupadd [参数] [用户组] -g :添加用户组并指定组的id -r :创建系统工作组,系统工作组id都小于500 -K :覆盖配置文件/etc/login.defs 参数自行参阅man或help帮助文档 groupdel [用户组] ``` 举个栗子 ``` # 创建用户组user1 [root@localhost ~]# groupadd user1 # 删除用户组user1 [root@localhost ~]# groupdel user1 ``` ### su 切换用户 ``` su - [用户] :切换用户 包括当前工作路径及用户环境变量(注意空格) 当没有加-时,用户切换了但用户环境变量及工作路径则不会被切换 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 切换用户到jiahui(连同环境变量包括工作家目录切换) [root@localhost ~]# su - jiahui [jiahui@localhost ~]$ pwd /home/jiahui # 切换到jiahui用户(环境变量包括家目录不变) [root@localhost ~]# su jiahui [jiahui@localhost root]$ pwd /root ``` ### passwd 修改用户密码 ``` passwd [用户名称] 当前用户则不用加用户名 ``` 举个栗子 ``` # 修改当前用户密码 [root@localhost ~]# passwd 更改用户 root 的密码 。 新的 密码: #输入密码后按回车 Enter 无效的密码: 密码少于 8 个字符 重新输入新的 密码: #输入密码后按回车 Enter passwd:所有的身份验证令牌已经成功更新。 # 使用root用户修改其他用户密码 [root@localhost ~]# passwd jiahui 更改用户 jiahui 的密码 。 新的 密码: #输入密码后按回车 Enter 无效的密码: 密码少于 8 个字符 重新输入新的 密码: #输入密码后按回车 Enter passwd:所有的身份验证令牌已经成功更新。 ``` ### who 查看当前所登陆的用户 ; whoami查看当前用户是谁 ``` who w whoami ``` 举个栗子 ``` # 查看当前在线用户 [root@localhost ~]# who root pts/0 2018-04-03 08:39 (192.168.112.1) root pts/1 2018-04-03 09:28 (192.168.112.1) 或者使用w [root@localhost ~]# w 09:29:27 up 2:25, 2 users, load average: 0.08, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.112.1 08:39 47.00s 0.13s 0.01s -bash root pts/1 192.168.112.1 09:28 7.00s 0.01s 0.00s w # 查看当前用户是谁 (常用于脚本判断) [root@localhost ~]# whoami root ``` ### tty 查看终端输入设备文件名称 ``` tty ``` 举个栗子 ``` # 查看当前终端输入设备文件名称 [root@localhost ~]# tty /dev/pts/0 ``` ### whereis 查找命令的帮助文件或是原始代码、二进制文件 ``` whereis [参数] [文件] -b :只查找二进制文件 -B<目录> :只在指定路径下查找二进制文件 -f :不现实文件名前面的路径 -m :只查找帮助文件 -s :只查看原始代码文件 -S<目录> :只在指定路劲下查找原始代码文件 参数自行参阅man或help帮助文档 ``` 举个栗子 ``` # 查看命令cd的帮助文件所在位置 [root@localhost ~]# whereis cd cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz ``` ### which 在环境变量$PATH设置的目录下查找符合条件的文件 ``` which [参数] [文件] 参数不重要,如需查看请使用man或help查看帮助文档 ``` 举个栗子 ``` # 查找命令cd文件所在位置 [root@localhost ~]# which cd /bin/cd ``` ### cp 拷贝文件命令 ``` cp [参数] [目录/文件] [目标目录/文件] -a :保留原有文件属性 -d :复制时保留链接(等同于windows里拷贝快捷方式) -f :不提示直接覆盖已有目标文件 -i :如有同名文件询问是否覆盖 -p :复制文件并保留文件属性包括访问时间记录等 -r :复制目录 包括子目录/文件 -l :生成软链 等同于ln 当修改a时b也同时被修改 当删除文件a或b时,b或a不受影响 ``` 举个栗子 ``` # 拷贝/etc/passwd文件到root的家目录下 [root@localhost ~]# cp /etc/passwd . [root@localhost ~]# ls passwd # 拷贝文件夹/tmp/test到root的家目录下 [root@localhost ~]# cp -r /tmp/test . [root@localhost ~]# ls test ``` ### scp 远程拷贝文件 ``` scp [参数] [目标文件] [目标文件] -P :加端口,在非22端口远程主机下使用 -p :保留源文件属性 -r :拷贝目录 包括子目录和文件 ``` 举个栗子 ``` # 拷贝远程主机home目录下的test11文件 [root@bogon ~]# scp 192.168.10.12:~/test11 非root用户,指定用户则为↓ [root@bogon ~]# scp jiahui@192.168.10.12:~/test11 # 拷贝ssh非22端口远程主机home目录下的test11文件 [root@bogon ~]# scp -P root@192.168.10.12:~/test11 # 将本地文件拷贝到远程主机home目录下 [root@bogon ~]# scp ~/test11 root@192.168.10.12:~/ ``` ### mv 剪切文件/目录 或者 重命名文件/目录 ``` mv [-if] [文件/目录] [目标文件/目录] -i :存在同名文件时询问是否覆盖 -f :无需询问直接覆盖已有文件 ``` 举个栗子 ``` # 剪切/tmp/passwd文件到root的家目录下 [root@localhost ~]# mv /tmp/passwd . [root@localhost ~]# ls passwd # 将root的家目录下的passwd文件重命名为pwd [root@localhost ~]# mv passwd pwd [root@localhost ~]# ls pwd ``` ### mkdir 创建文件夹 ``` mkdir [目录名称] -p :强制创建目录(同时创建多级目录时需使用) 只创建1级目录则无需加参数 ``` 举个栗子 ``` # 在root的家目录下创建test文件夹 (无法同时创建多级目录) [root@localhost ~]# mkdir test [root@localhost ~]# ls test # 在root的家目录下的test文件内创建5个file文件夹 [root@localhost test]# mkdir filr{1..5} [root@localhost test]# ls filr1 filr2 filr3 filr4 filr5 # 在root目录下创建多级目录 test/a/b/c (参数-r) [root@localhost ~]# mkdir -p test/a/b/c [root@localhost ~]# tree test/ test/ └── a └── b └── c ``` ### tree 查看树状目录结构 需安装 ``` tree [路径] -a :查看目录所有文件(包括隐藏文件) -A :显示目录时间 -C :颜色显示文件,方便区分 -sh :将文件大小以合理单位显示(比喻:10000000元 与 一千万元) -L[数字] :查看几层目录 安装方式: yum -y install tree ``` 举个栗子 ``` # 查看root的家目录下的test文件树状结构 [root@localhost ~]# tree test/ test/ └── a └── b └── c 3 directories, 0 files # 查看root的家目录下的test文件树状结构(只查看2层目录结构) [root@localhost ~]# tree -L 2 test/ test/ └── a └── b 2 directories, 0 files # 更多详细查看man帮助文档 ``` ### touch 创建文件 ``` touch [文件名称] [文件名称] :未存在的文件时创建文件 [文件名称] :已存在的文件时为更新文件的时间戳 -d00:00:04 :修改文件时间(00:00表示00时00分04秒) -t06010800 :修改时间未06月06日08时00分 时间格式MMDDhhmm ``` 举个栗子 ``` # 在root的家目录下创建file文件 [root@localhost ~]# touch file [root@localhost ~]# ls file # 在root的家目录下创建5个file文件 [root@localhost ~]# touch filr{1..5} [root@localhost ~]# ls filr1 filr2 filr3 filr4 filr5 创建单个文件可使用">"覆盖写入文件的方式创建 [root@localhost ~]# >file [root@localhost ~]# ls file # 修改文件时间 [root@bogon ~]# ll file1 -rw-r--r-- 1 root root 33 4月 4 00:00 file1 或者直接vim编辑文件后保存 ``` ### echo 打印命令 ``` echo [要输出的内容] ``` 举个栗子 ``` # 在命令行中echo出 hello world 的语句 [root@localhost ~]# echo hello world hello world [root@localhost ~]# echo "hello world" hello world # 在命令行中echo出 “hello world” 的语句 带双引号 [root@localhost ~]# echo "\"hello world\"" "hello world" 转义符: \ 说明:将转义符后的字符转换为普通字符 # 在命令行中echo出 “hello world” 的语句并追加到file文件里(这里使用两个 > 尖括号) [root@localhost ~]# echo hello world >> file [root@localhost ~]# cat file test hello world # 在命令行中echo出 “hello world” 的语句并覆盖写入到file文件里 (这里只使用单个 > 尖括号) [root@localhost ~]# echo hello world > file [root@localhost ~]# cat file hello world ``` ### head 查看文件头部 ``` head -[数字] :查看文本头部几行,不加参数默认为10行 ``` 举个栗子 ``` # 查看/etc/passwd文件头部 默认为10行,如需指定,使用“-”接数字 [root@localhost ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin ``` ### tail 查看文件尾部 ``` tail [参数] file -f :实时查看文本内容(当日志文件有更新时可使用,工作中经常用来看日志,可以tail -f 一个文件,然后打开另一个终端往文本里追加信息观察看看 -[数字] :查看文本尾部几行,不加参数默认为10行 ``` 举个栗子 ``` # 查看/etc/passwd文件尾部 默认为10行,如需指定,使用“-”接数字 [root@localhost ~]# tail /etc/passwd systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin mysql:x:1000:1000::/home/mysql:/sbin/nologin www:x:1001:1001::/home/www:/sbin/nologin jiahui:x:1002:1002::/home/jiahui:/bin/bash ``` ### less 翻页查看文件 ``` less [参数] file1 详细参数见man帮助文档,此处列举常用快捷方式 翻页: Ctrl F :向上翻一页 Ctrl B :向后翻一页 Ctrl D :向上翻半页 Ctrl U :向下翻半页 空格键 :下一页 其他常用: G :移动到文本最后行 g :移动到文本第一行 q或ZZ :退出less / :搜索 例如:/test 即 在文本搜索test文字 搜索下一个N 搜索上一个n ``` 举个栗子 ``` # 查看文件file1 [root@bogon ~]# less file1 # 查看进程并以less查看 [root@bogon ~]# ps -ef | less # 主要使用快捷方式就可以,参数自己略看下帮助文档 # 怎么使用需自己动手去琢磨琢磨 ``` ### more分页显示文件内容 > 我自己觉得没啥用,还不如使用less,在工作过程中最常使用的分页查看文本工具是less,所以建议还是使用less吧~~~ ``` more file ``` ### ps 查看进程 ``` # 查看进程信息 [root@localhost ~]# ps -A PID TTY TIME CMD 1 ? 00:00:02 systemd ...略 15857 pts/0 00:00:00 ps # 显示指定用户进程信息 [root@localhost ~]# ps -u root PID TTY TIME CMD 1 ? 00:00:02 systemd ...略 15881 pts/0 00:00:00 ps # 查看进程信息连同执行的命令 [root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 4月03 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 ...略 root 15882 15628 0 00:44 pts/0 00:00:00 ps -ef 因aux显示的信息比较多比较乱,建议使用-ef参数 # 只查看java的进程 [root@localhost ~]# ps -ef | grep java root 1335 1 81 14:44 pts/0 00:00:06 /usr/local/jdk/jre/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-8.5.29/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/apache-tomcat-8.5.29/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.29/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-8.5.29 -Dcatalina.home=/usr/local/apache-tomcat-8.5.29 -Djava.io.tmpdir=/usr/local/apache-tomcat-8.5.29/temp org.apache.catalina.startup.Bootstrap start root 1356 29346 0 14:44 pts/0 00:00:00 grep --color=auto java ``` 举个栗子 ``` ``` ### ls 查看指定目录下的内容(文件或目录) ``` ls [目录/文件] -a :显示以.开头的隐藏文件 -l :显示目录/文件详细信息 包括文件形态、权限、拥有者、文件大小、时间等信息 -r :按时间排序 -A :等同-a但不会显示当前目录.和父目录.. -F :如目录则在后面加/表示 -R :显示目录及子目录下的文件(见实例) -h :将文件大小以合理单位显示(比喻:10000000元 与 一千万元) ls别名(alias别名见2018.4.4笔记) ll 等同于 ls -l ll -a 等同于 ls -la ``` 举个栗子 ``` # 查看当前目录下的文件及文件夹(不包括隐藏文件) [root@localhost test]# ls file1 file2 # 查看当前目录下的文件及文件夹(包括隐藏文件) [root@localhost test]# ls -a . .. file1 file2 .file3 # 查看指定路径下的文件或文件夹 [root@localhost test]# ls /usr/ bin etc games include lib lib64 libexec local sbin share src tmp # 查看文件及文件夹详细内容 [root@localhost test]# ll -a 总用量 4 drwxr-xr-x. 2 root root 46 3月 28 21:05 . dr-xr-x---. 5 root root 220 3月 28 19:18 .. -rw-rw----. 1 root root 2188 3月 28 20:33 file1 -rw-r--r--. 1 root root 0 3月 28 21:05 file2 -rw-r--r--. 1 root root 0 3月 28 21:05 .file3 # 查看指定文件夹详细内容 [root@localhost tmp]# ls -dl /tmp/ drwxrwxrwt. 9 root root 284 4月 3 08:26 /tmp/ # 查看当前目录及子目录文件 [root@bogon ~]# ls -R . .: file1 file1.gz lalalla lsls php-7.1.7.tar.bz2 test.tar.gz ./lalalla: ./lsls: dai ./lsls/dai: cahua ./lsls/dai/cahua: # 同理,灵活应用 ``` --- ### cd 切换当前工作目录 ``` cd [目录] ``` 举个栗子 ``` # 切换到当前用户的home目录下(可用cd ~) [root@localhost test]# cd [root@localhost ~]# # 切换到指定路径下 [root@localhost ~]# cd /etc/ [root@localhost etc]# # 切换到上一级目录下 [root@localhost etc]# cd .. [root@localhost /]# # 切换到上一次工作目录下(可用cd $OLDPWD) [root@localhost /]# cd - /etc [root@localhost etc]# ``` --- ### pwd 查看当前所在目录 ``` pwd ``` 举个栗子 ``` [root@localhost etc]# pwd /etc ``` --- ### mount 挂载外置设备(如U盘、光驱等) 说明:因服务器插入U盘等设备进来后,系统是无法自动加载,需将它挂载到某个目录下我们才能看到里面的文件 ``` mount [驱动文件位置] [目标空目录位置] ``` 举个栗子 ``` # 挂载光驱到指定路径下 [root@localhost ~]# mount /dev/cdrom /CDorDVD/ mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# ls /CDorDVD/ boot boot.catalog # 卸载指定挂载光驱目录 [root@localhost ~]# umount /CDorDVD/ [root@localhost ~]# ls /CDorDVD/ [root@localhost ~]# ``` --- ### cat 查看文件内容 ``` cat [-n] file1 -n :由1开始对整个文件行数进行编号并打印(包括空白行) -b :同-n,区别于-b不会对空白行进行编号 -s :将两行以上的空白行显示为一行 -E :每行结尾显示$ -T :使用^I代替tab空白 ``` 举个栗子 ``` # 查看hosts文件内容 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 查看hosts文件内容并显示行 [root@localhost ~]# cat -n /etc/hosts 1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 将hosts文件内容输出到/test文件里 (将清空原本文件内容,没有改文件则被创建) [root@localhost ~]# cat /etc/hosts > /test [root@localhost ~]# cat /test 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 将hosts文件内容输出追加到/test文件里 (将不清空,以追加形式输出到该文件里) [root@localhost ~]# cat /etc/hosts >> /test [root@localhost ~]# cat /test 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ``` --- ### chattr 改变文件属性 ``` chattr -R :连同子目录/文件一起修改 ``` 举个栗子 ``` # 锁定指定文件 (该文件将无法删除或修改 解除则-i即可) [root@localhost ~]# chattr +i file1 [root@localhost ~]# rm -f file1 rm: 无法删除"file1": 不允许的操作 # 锁定指定文件只写入 (允许追加内容,但无法修改或删除 适用于服务器日志文件 取消则-a) [root@localhost ~]# chattr +a file1 [root@localhost ~]# echo lalala >> file1 [root@localhost ~]# echo lalala > file1 -bash: file1: 不允许的操作 # 备注:查看文件属性则使用lsattr查看 ``` ### lsattr 查看文件属性 ``` lsattr file1 ``` 举个栗子 ``` # 为文件file1加入ia并查看其属性 (一般不会同时用这两个) [root@bogon ~]# chattr +ia file1 [root@bogon ~]# lsattr file1 ----ia---------- file1 ``` ### chgrp 修改文件或目录属组 ``` chgrp [group] file -R :连同子目录/文件一起修改 ``` 举个栗子 ``` # 将/test目录的属组改为bin [root@localhost ~]# ll /test -rw-r--r--. 1 root root 323 3月 28 21:38 /test [root@localhost ~]# chgrp bin /test [root@localhost ~]# ll /test -rw-r--r--. 1 root bin 323 3月 28 21:38 /test # 类同chmod [root@localhost /]# chown root.bin /test [root@localhost /]# ll -dl /test/ drwxr-xr-x 2 root bin 6 4月 3 08:42 /test/ ``` --- ### chmod 修改文件或目录权限 ``` chmod [ugoa][+-=][rwxX] file1 -R :连同子目录/文件一起修改 User、Group、Other、All u :表该文件的拥有着 g :表该文件的拥有者属组 o :表该文件其他以外的人 a :表前三者都是 + :表增加权限 - :表取消权限 = :表唯一设定权限 r :表可读取 w :表可写入 x :表可执行 目录与文件权限的差异 r :读权限 文件:可查看文件内容 目录:可查看目录内容 w :写权限 文件:可修改文件内容 目录:可以在该目录下删除、创建、等一系列能够 x :执行权限 文件:可执行该文件 目录:可进入该目录 rwx权限可使用数字表示 权限 : r w x 数字 : 4 2 1 二进制 :100 010 001 rwx == 7 rw- == 6 r-x == 5 r-- == 4 -wx == 3 -w- == 2 --x == 1 --- == 0 表示为: 777 :rwx rwx rwx 755 :rwx r-x r-x 700 :rwx --- --- ... ... ``` 举个栗子 ``` # 添加指定文件执行权限 [root@localhost ~]# chmod +x file1 [root@localhost ~]# ll file1 -rwxr-xr-x. 1 root root 323 3月 28 21:38 file1 # 将指定文件权限改为rw- r-- r-- [root@localhost ~]# chmod 644 file1 [root@localhost ~]# ll file1 -rw-r--r--. 1 root bin 323 3月 28 21:38 file1 ``` ![666](https://www.cloudhy.cn/uploads/blog/6666.png "666") 再不明白这个表情的同学要拉出去打靶的哈!!! 继续上课↓↓↓ --- ### chown 修改文件或目录的用户或组 ``` chown [-cfhvR] user[:group] file1 参数: user :所有者 group :所属组 -R :连同子目录/文件一起修改 以上为常用参数,其他参数见man帮助文档 ``` 举个栗子 ``` # 修改指定文件用户和组改为jiahui [root@localhost ~]# ll /test -rw-r--r--. 1 root root 323 3月 28 21:38 /test [root@localhost ~]# chown jiahui. /test [root@localhost ~]# ll /test -rwxr-xr-x. 1 jiahui jiahui 323 3月 28 21:38 /test # 将文件所有者改未root,所属组改为U1 (修改所属组也可使用chgrp) [root@localhost ~]# ll /test -rwxr-xr-x. 1 jiahui jiahui 323 3月 28 21:38 /test [root@localhost ~]# chown root.U1 /test [root@localhost ~]# ll /test [root@localhost ~]# ll /test -rwxr-xr-x. 1 root U1 323 3月 28 21:38 /test # 将/test/目录(包括子目录/文件)用户和用户组改为jiahui [root@localhost ~]# chown -R jiahui. /test # 如用户和用户组名称相同时可使用.代替 如 jiahui. ``` ### ifconfig 查看网卡信息 ``` ifconfig ``` 举个栗子 ``` # 查看网卡信息 [root@localhost ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.112.4 netmask 255.255.255.240 broadcast 192.168.112.15 ether 00:15:5d:d2:db:00 txqueuelen 1000 (Ethernet) RX packets 4729 bytes 635678 (620.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2779 bytes 821319 (802.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 72 bytes 6256 (6.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 72 bytes 6256 (6.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # 只查看eth0的网卡信息 [root@localhost ~]# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.112.4 netmask 255.255.255.240 broadcast 192.168.112.15 ether 00:15:5d:d2:db:00 txqueuelen 1000 (Ethernet) RX packets 4768 bytes 638860 (623.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2804 bytes 824713 (805.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # 关闭网卡 [root@localhost ~]# ifconfig eth0 down 或 [root@localhost ~]# ifdown eth0 # 启用网卡 [root@localhost ~]# ifconfig eth0 up 或 [root@localhost ~]# ifup eth0 # 给eth0配置IP地址 [root@localhost ~]# ifconfig eth0 192.169.10.12 # 给eth0配置IP地址和子网掩码 [root@localhost ~]# ifconfig eth0 192.168.10.12 netmask 255.255.255.0 # 给eth0配置IP地址和子网掩码、广播地址(查看广播地址:ifconfig eth0 | grep broadcast | awk -F ' ' ' {print $6} ') [root@localhost ~]# ifconfig eth0 192.168.10.12 netmask 255.255.255.0 broadcast 192.168.10.15 # 启用和关闭arp协议 [root@localhost ~]# ifconfig eth0 arp [root@localhost ~]# ifconfig eth0 -arp ``` [什么是arp协议](https://baike.baidu.com/item/ARP/609343?fr=aladdin "什么是arp协议") ### ip 同ifconfig ,也可使用ip add ``` ip ``` 举个栗子 ``` # 查看网卡信息 [root@localhost ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:15:5d:d2:db:00 brd ff:ff:ff:ff:ff:ff inet 192.168.112.4/28 brd 192.168.112.15 scope global dynamic eth0 valid_lft 86252sec preferred_lft 86252sec # 列出路由表 [root@localhost ~]# ip route default via 192.168.112.1 dev eth0 proto static metric 100 192.168.112.0/28 dev eth0 proto kernel scope link src 192.168.112.4 metric 100 # 列出网络接口的统计数据 [root@localhost ~]# ip -s link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 6256 72 0 0 0 0 TX: bytes packets errors dropped carrier collsns 6256 72 0 0 0 0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:15:5d:d2:db:00 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 668482 5058 0 0 0 849 TX: bytes packets errors dropped carrier collsns 846131 2973 0 0 0 0 ``` 附加: Linux文件系统 所有分区都必须挂载到根目录下(任意位置) ![linux文件系统](https://www.cloudhy.cn/uploads/blog/linux001.png "linux文件系统") --- 另外得注意一下:文件命名不要使用跟命令相关的单词,例如本文,例如file,最好加个数字等特殊字符与命令区分开来。