$ ll / 总用量 24 lrwxrwxrwx. 1 root root 7 9月 12 10:55 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 9月 12 11:02 boot drwxr-xr-x. 20 root root 3240 9月 20 10:54 dev drwxr-xr-x. 77 root root 8192 9月 20 12:15 etc drwxr-xr-x. 3 root root 18 9月 12 11:01 home lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib lrwxrwxrwx. 1 root root 9 9月 12 10:55 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 4月 11 2018 media drwxr-xr-x. 2 root root 6 4月 11 2018 mnt drwxr-xr-x. 2 root root 6 4月 11 2018 opt dr-xr-xr-x. 114 root root 0 9月 20 10:54 proc dr-xr-x---. 5 root root 4096 9月 20 12:10 root drwxr-xr-x. 26 root root 760 9月 20 12:45 run lrwxrwxrwx. 1 root root 8 9月 12 10:55 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 4月 11 2018 srv dr-xr-xr-x. 13 root root 0 9月 20 10:54 sys drwxrwxrwt. 25 root root 4096 9月 20 13:02 tmp drwxr-xr-x. 13 root root 155 9月 12 10:55 usr drwxr-xr-x. 19 root root 267 9月 12 11:24 var
和源文件索引节点同样的文件是硬连接, 反之则是软连接java
目录 | 说明 |
---|---|
/bin | /bin目录的硬连接 |
/sbin | /sbin 目录的硬连接 |
/usr/bin | 普通用户所使用得命令的目录 |
/usr/sbin | 超级管理员所使用的命令目录 |
$ ls -lid /usr/bin/ 50331721 dr-xr-xr-x. 2 root root 24576 9月 20 12:45 /usr/bin/ $ ls -lid /bin/ 50331721 dr-xr-xr-x. 2 root root 24576 9月 20 12:45 /bin/ $ ls -lid /usr/sbin/ 77 dr-xr-xr-x. 2 root root 12288 9月 20 12:45 /usr/sbin/ $ ls -lid /sbin/ 77 dr-xr-xr-x. 2 root root 12288 9月 20 12:45 /sbin/
目录 | 说明 |
---|---|
/boot | 引导目录, 存放grub菜单和内核的信息 |
目录 | 说明 |
---|---|
/dev | 设备目录 |
/dev/cdrom | /dev/sr0 的软连接 |
/dev/sr0 | 光驱, 光盘 |
/dev/random | 产生随机数 |
/dev/zero | 源源不断产生数据的文件 |
/dev/pts/ | 虚拟终端 |
/dev/sd* | 磁盘分区 |
/dev/stderr | 错误输出 2 |
/dev/stdin | 标准输入 0 |
/dev/stdout | 标准输出 1 |
/dev/null | 黑洞 |
>>> 光驱, 光盘 $ ll -i /dev/cdrom 28731 lrwxrwxrwx. 1 root root 3 9月 20 10:54 /dev/cdrom -> sr0 $ ll -i /dev/sr0 17931 brw-rw----. 1 root cdrom 11, 0 9月 20 10:54 /dev/sr0 >>> 虚拟终端 $ ll /dev/pts/ 总用量 0 crw--w----. 1 root tty 136, 0 9月 20 13:25 0 c---------. 1 root root 5, 2 9月 20 10:54 ptmx >>> 输入输出目录 $ ll -i /dev/stderr 8729 lrwxrwxrwx. 1 root root 15 9月 20 10:54 /dev/stderr -> /proc/self/fd/2 $ ll -i /dev/stdin 8727 lrwxrwxrwx. 1 root root 15 9月 20 10:54 /dev/stdin -> /proc/self/fd/0 $ ll -i /dev/stdout 8728 lrwxrwxrwx. 1 root root 15 9月 20 10:54 /dev/stdout -> /proc/self/fd/1
目录 | 说明 |
---|---|
/etc | 配置文件 |
/etc/sysconfig/network-scripts/ifcfg-e* | 网卡配置文件(这里配置的DNS优先级高) |
/etc/hostname | 主机名配置文件 |
/etc/resolv.conf | 本地的dns配置文件(这里配置的DNS优先级低) |
/etc/fstab | 挂载设备配置文件 |
/etc/sysconfig/selinux | 安全策略配置文件 |
/etc/motd | 登陆系统前显示内容 |
/etc/hosts | 本地域名解析的文件 |
>>> 网卡配置文件 $ cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=ens33 UUID=a5ae4b2e-6cb7-45b9-90dd-0420ce5d4b02 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.142.23 PREFIX=24 GATEWAY=192.168.142.2 DNS1=223.5.5.5 >>> 主机名配置文件 $ cat /etc/hostname git >>> 本地的dns配置文件 $ grep -v '#' /etc/resolv.conf nameserver 223.5.5.5 >>> 挂载设备配置文件 $ grep -v '#' /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=67ddc4bb-c4e8-4715-b6b4-292df3699ce5 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 >>> 安全策略配置文件 $ grep -v '#' /etc/sysconfig/selinux SELINUX=enforcing SELINUXTYPE=targeted >>> 本地域名解析的文件 $ grep -v '#' /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 >>> 登陆系统前显示内容(通常不推荐, 会占用内存) $ cat /etc/motd "###################欢迎登录主机##############" >>> 退出从新登陆主机 Last login: Fri Sep 20 14:08:11 2019 from 192.168.142.11 "###################欢迎登录主机##############" $
目录 | 说明 |
---|---|
/home | 全部普通用户的家目录 |
/root | 超级管理员的家目录 |
目录 | 说明 |
---|---|
/proc | 虚拟的信息,存放系统实时状态信息 |
/run | 程序运行产生的pid文件存放点 |
/usr | 安装软件目录 |
/usr/local | 安装软件目录 |
/var | 可变的目录 |
/var/run | /run的硬连接 |
/var/log | 存放日志的目录 |
/var/log/messages | 系统日志 |
/var/log/secure | 用户登陆日志 |
>>>> 程序运行产生的pid文件存放点 $ ll -id /run/ 8713 drwxr-xr-x. 26 root root 760 9月 21 00:30 /run/ $ ll -id /var/run/ 8713 drwxr-xr-x. 26 root root 760 9月 21 00:30 /var/run/ >>>> 系统日志 $ tail -f /var/log/messages Sep 21 00:05:54 git chronyd[6155]: Forward time jump detected! Sep 21 00:05:54 git nm-dispatcher: req:2 'connectivity-change': start running ordered scripts... Sep 21 00:05:54 git nm-dispatcher: req:3 'up' [ens33]: start running ordered scripts... Sep 21 00:05:54 git nm-dispatcher: req:4 'connectivity-change': start running ordered scripts... Sep 21 00:08:46 git chronyd[6155]: Selected source 202.112.29.82 Sep 21 00:09:52 git systemd: Started Session 11 of user root. Sep 21 00:09:52 git systemd-logind: New session 11 of user root. Sep 21 00:20:18 git systemd: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 9488 (ls) Sep 21 00:20:18 git systemd: Mounting Arbitrary Executable File Formats File System... Sep 21 00:20:18 git systemd: Mounted Arbitrary Executable File Formats File System. >>>> 用户登陆日志 $ tail -f /var/log/secure Sep 20 14:07:59 git sshd[8981]: pam_unix(sshd:session): session closed for user root Sep 20 14:08:11 git sshd[9008]: Accepted publickey for root from 192.168.142.11 port 57050 ssh2: DSA SHA256:mGJDCO9vLiNLJQZA6NRYY4lyHBUdrnAFihpxJSN9n3w Sep 20 14:08:11 git sshd[9008]: pam_unix(sshd:session): session opened for user root by (uid=0) Sep 20 14:08:38 git sshd[9008]: error: Received disconnect from 192.168.142.11 port 57050:0: Sep 20 14:08:38 git sshd[9008]: Disconnected from 192.168.142.11 port 57050 Sep 20 14:08:38 git sshd[9008]: pam_unix(sshd:session): session closed for user root Sep 20 14:08:53 git sshd[9036]: Accepted publickey for root from 192.168.142.11 port 57052 ssh2: DSA SHA256:mGJDCO9vLiNLJQZA6NRYY4lyHBUdrnAFihpxJSN9n3w Sep 20 14:08:54 git sshd[9036]: pam_unix(sshd:session): session opened for user root by (uid=0) Sep 21 00:09:52 git sshd[9412]: Accepted publickey for root from 192.168.142.11 port 61648 ssh2: DSA SHA256:mGJDCO9vLiNLJQZA6NRYY4lyHBUdrnAFihpxJSN9n3w Sep 21 00:09:52 git sshd[9412]: pam_unix(sshd:session): session opened for user root by (uid=0)
目录 | 说明 |
---|---|
/lib | /usr/lib的软连接 |
/lib64 | /usr/lib64的硬连接 |
usr/lib | 命令调用的库文件的目录 |
usr/lib64 | 命令调用的64位库文件的目录 |
/media | 挂载点,可移动的设备 |
/mnt | 临时挂载点 |
/opt | 早期第三方软件安装目录 |
/srv | 物理设备的信息 |
/sys | 物理设备的信息 |
/tmp | 文件的临时的存放点 |
>>>> 命令调用的库文件的目录 $ ll -id /usr/lib 16777313 dr-xr-xr-x. 28 root root 4096 9月 12 10:57 /usr/lib $ ll -id /lib 80 lrwxrwxrwx. 1 root root 7 9月 12 10:55 /lib -> usr/lib >>>> 命令调用的64位库文件的目录 $ ll -id /usr/lib64/ 79 dr-xr-xr-x. 42 root root 24576 9月 14 01:01 /usr/lib64/ $ ll -id /lib64/ 79 dr-xr-xr-x. 42 root root 24576 9月 14 01:01 /lib64/ $ du -shx /usr/lib64/ 172M /usr/lib64/ $ du -shx /lib64/ 172M /lib64/
显示目录列表node
选项 | 说明 |
---|---|
-a | 显示全部文件, 包括隐藏文件 |
-l | 以长格式显示目录列表, 带属性信息 |
-1 | 显示列表 |
-d | 只显示目录自己信息 |
-i | 显示索引节点信息(inode号) |
-h | 以人类可读的形式显示文件大小 |
-F | 给显示出来的目录加个标识符(/) |
-S | 根据文件大小排序 |
-t | 根据时间进行排序 |
-r | 倒序排序 |
>>>> 给显示出来的目录加个标识符(/) $ ll -F 总用量 36 -rw-r--r--. 1 root root 0 9月 16 09:36 ,$1} -rw-r--r--. 1 root root 0 9月 16 09:36 ,$1,$NF} -rw-------. 1 root root 1681 9月 12 11:02 anaconda-ks.cfg -rwxr-xr-x. 1 root root 86 9月 16 19:12 array.sh* -rw-r--r--. 1 root root 131 9月 14 01:24 col6.txt drwxr-xr-x. 3 root root 18 9月 17 02:18 FishC/ drwxr-xr-x. 3 root root 45 9月 13 22:55 git_data/ -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt -rw-r--r--. 1 root root 924 9月 14 01:02 netstat.txt -rw-r--r--. 1 root root 0 9月 16 10:54 ,$NF} -rw-r--r--. 1 root root 12 9月 19 12:46 oldboy.sh -rw-r--r--. 1 root root 989 9月 16 09:45 passwd -rw-r--r--. 1 root root 28 9月 16 19:29 test.sh -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt >>>> 根据文件大小排序 $ ll -S -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt -rw-------. 1 root root 1681 9月 12 11:02 anaconda-ks.cfg -rw-r--r--. 1 root root 989 9月 16 09:45 passwd -rw-r--r--. 1 root root 924 9月 14 01:02 netstat.txt -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt -rw-r--r--. 1 root root 131 9月 14 01:24 col6.txt ... >>>> 根据时间进行排序 $ ll -t -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt -rw-r--r--. 1 root root 12 9月 19 12:46 oldboy.sh drwxr-xr-x. 3 root root 18 9月 17 02:18 FishC -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt -rw-r--r--. 1 root root 28 9月 16 19:29 test.sh -rwxr-xr-x. 1 root root 86 9月 16 19:12 array.sh ... >>>> 倒序排序 $ ll -rt -rwxr-xr-x. 1 root root 86 9月 16 19:12 array.sh -rw-r--r--. 1 root root 28 9月 16 19:29 test.sh -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt drwxr-xr-x. 3 root root 18 9月 17 02:18 FishC -rw-r--r--. 1 root root 12 9月 19 12:46 oldboy.sh -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt ...
切换目录linux
cd / 切换到根目录 cd . 保持当前目录 cd .. 切换到当前目录的上一级目录 cd ~ 切换到当前用户的家目录下 cd 默认切换到当前用户的家目录下 cd - 切换到上一次所在的目录
以树状形显示目录结构nginx
选项git
选项 | 说明 |
---|---|
-a | 显示隐藏文件 |
-d | 只显示目录 |
-f | 只显示文件 |
-F | 给目录加个标识符 |
-L | 查看目录的深度,层级,后面跟的是正整数 |
>>> 查看目录的深度,层级,后面跟的是正整数 >>> 给目录加个标识符 $ tree -LF 2 . ├── ,$1} ├── ,$1,$NF} ├── anaconda-ks.cfg ├── array.sh* ├── col6.txt ├── FishC/ │ └── sle2/ ├── git_data/ │ ├── a │ ├── b │ └── c ├── help.txt ├── netstat.txt ├── ,$NF} ├── oldboy.sh ├── passwd ├── test.sh └── test.txt 3 directories, 15 files >>>> 只显示目录 $ tree -d . ├── FishC │ └── sle2 └── git_data 3 directories
建立目录算法
选项 | 说明 |
---|---|
-p | 建立多层目录 |
-v | 显示建立过程 |
-m | 建立给目录设置其余权限 |
{} | 生成序列, 建立多个目录 |
>>>> 建立给目录设置其余权限 $ mkdir -m 700 data2 $ mkdir data3 $ ll -d data3 drwxr-xr-x. 2 root root 6 9月 21 01:32 data3 $ ll -d data2 drwx------. 2 root root 6 9月 21 01:32 data2 >>>> 建立多个文件 $ mkdir oldboy oldgirl newboy newgirl $ mkdir oldboy{1..10} $ mkdir oldboy{frank,tank,json}
建立文件shell
1.在一个路径下,不能出现同名的文件,会改变原文件的时间戳 2.使用{},建立多个文件,区分大小写。
复制,拷贝数据库
选项 | 说明 |
---|---|
-r | 递归复制 |
-p | 保持属性 |
-d | 保持软链接 |
-t | 把原目标和目标位置进行替换 |
-a | =-pdr |
-i | 交互式询问,系统自带别名 |
$ ll / 总用量 24 lrwxrwxrwx. 1 root root 7 9月 12 10:55 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 9月 12 11:02 boot drwxr-xr-x. 20 root root 3240 9月 20 10:54 dev drwxr-xr-x. 77 root root 8192 9月 21 00:05 etc drwxr-xr-x. 3 root root 18 9月 12 11:01 home lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib lrwxrwxrwx. 1 root root 9 9月 12 10:55 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 4月 11 2018 media drwxr-xr-x. 2 root root 6 4月 11 2018 mnt drwxr-xr-x. 2 root root 6 4月 11 2018 opt dr-xr-xr-x. 115 root root 0 9月 20 10:54 proc dr-xr-x---. 25 root root 4096 9月 21 01:35 root drwxr-xr-x. 26 root root 760 9月 21 00:30 run lrwxrwxrwx. 1 root root 8 9月 12 10:55 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 4月 11 2018 srv dr-xr-xr-x. 13 root root 0 9月 20 10:54 sys drwxrwxrwt. 25 root root 4096 9月 21 01:35 tmp drwxr-xr-x. 13 root root 155 9月 12 10:55 usr drwxr-xr-x. 19 root root 267 9月 12 11:24 var $ cp -a /lib /opt/ $ ll /opt/ 总用量 0 lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib
移动json
选项 | 说明 |
---|---|
-f | 强制覆盖 |
-t | 把原目标和目标位置进行替换 |
-i | 交互式询问,系统自带别名 |
$ ll -d netstat.txt -rw-r--r--. 1 root root 26 9月 21 01:59 netstat.txt $ ll /mnt/netstat.txt -rw-r--r--. 1 root root 924 9月 14 01:02 /mnt/netstat.txt $ mv -f netstat.txt /mnt/ $ ll /mnt/netstat.txt -rw-r--r--. 1 root root 26 9月 21 01:59 /mnt/netstat.txt $ ll -rw-r--r--. 1 root root 989 9月 16 09:45 passwd $ ll /opt/ lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib drwxr-xr-x. 2 root root 6 9月 21 01:51 oldboy $ mv -t ./ /opt/oldboy/ $ ll drwxr-xr-x. 2 root root 6 9月 21 01:51 oldboy -rw-r--r--. 1 root root 989 9月 16 09:45 passwd
删除centos
选项 | 说明 |
---|---|
-f | 强制删除 |
-r | 递归删除 |
-i | 交互式询问,系统自带别名 |
所见即所得
选项 | 意义 |
---|---|
-e | 支持特殊符号的含义 |
符号名字 | 含义 |
---|---|
单引号 | 强引用,所见即所得 |
双引号 | 所见即所得,支持变量,会解析变量 |
不加引号 | 所见即所得,出现空格不会看作是个总体,会解析变量,支持通配符 |
反引号 | 先执行反引号里面的命令,把结果交给外面的命令。和$()做用同样 |
-e
支持换行符, tab键
$ echo -e 'hello\nworld' hello world $ echo -e 'hello\tworld' hello world
echo表示颜色
$ echo -e "\033[30m黑色字\033[0m" $ echo -e "\033[31m红色字\033[0m" $ echo -e "\033[32m绿色字\033[0m" $ echo -e "\033[33m黄色字\033[0m" $ echo -e "\033[34m蓝色字\033[0m" $ echo -e "\033[35m紫色字\033[0m" $ echo -e "\033[36m天蓝字\033[0m" $ echo -e "\033[37m白色字\033[0m"
echo表示背景
echo -e "\033[40m黑底白字\033[0m" echo -e "\033[41m红底白字\033[0m" echo -e "\033[42m绿底白字\033[0m" echo -e "\033[43m黄底白字\033[0m" echo -e "\033[44m蓝底白字\033[0m" echo -e "\033[45m紫底白字\033[0m" echo -e "\033[46m天蓝底白字\033[0m" echo -e "\033[47m白底白字\033[0m"
查看文件内容
选项 | 含义 |
---|---|
-n | 给显示内容加上行号 |
-A | 给每行的结尾加上标识符 |
>>> cat建立新文件 $ cat >> oldboy.txt <<E > egon > lxx > alex > E $ cat oldboy.txt egon lxx alex $ cat -A oldboy.txt egon$ lxx$ alex$ >>> cat追加数据到文件 $ cat >>oldboy.txt <<E > hhp > lll > E $ cat oldboy.txt egon lxx alex hhp lll
当文件里面出现'$'符号, 结束符在定义的时候须要加上引号(单引号双引号均可以)
EOF
不加引号的状况$ cat > test2.sh << EOF > #!/bin/bash > read -p '请输入用户名' name > read -p '请输入密码' pwd > echo "用户名 $name, 密码 $pwd" > EOF $ cat test2.sh #!/bin/bash read -p '请输入用户名' name read -p '请输入密码' pwd echo "用户名 , 密码 " $ chmod +x test2.sh $ ./test2.sh 请输入用户名lxx 请输入密码sb 用户名 , 密码
EOF
加上引号能够正常输出$ cat > test.sh << 'EOF' > #!/bin/bash > read -p '请输入用户名' name > read -p '请输入密码' pwd > echo "用户名 $name, 密码 $pwd" > EOF $ chmod +x test.sh $ ./test.sh 请输入用户名lxx 请输入密码123 用户名 lxx, 密码 123
分页显示文件内容,文件结束时,会自动退出文件
外部选项 | 说明 |
---|---|
-n(数字) | 指定一页显示多少行 |
+n(数字) | 指定从第几行开始显示 |
$ more +15 /etc/passwd dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin java:x:1000:1000:java:/home/java:/bin/bash $ more -5 /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 --More--(18%)
内部命令 | 说明 |
---|---|
空格或f | 向下翻页 |
b | 向上翻页 |
回车 | 下一行 |
/ | 搜索 |
= | 显示当前光标所在行 |
q | 退出 |
分页显示文件内容,文件结束时,不会自动退出
外部选项 | 说明 |
---|---|
-N | 显示的时候加上行号 |
$ less -N /etc/services
内部命令 | 说明 |
---|---|
空格或f | 向下翻页 |
b | 向上翻页 |
回车 | 下一行 |
/ | 搜索, 会高亮 |
= | 显示当前光标所在页, 第几行到第几行, 会显示字节大小 |
q | 退出 |
显示文件头部信息,默认显示前十行内容
选项 | 说明 |
---|---|
-n (数字) | 取消默认输出,指定显示几行 |
-c | 显示头部几个字符 |
$ head -n5 /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2013-04-10 $ head -5 /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2013-04-10 $ head -c 5 /etc/services # /et
显示文件尾部信息,默认显示十行内容
选项 | 说明 |
---|---|
-n | 取消默认输出,指定显示几行 简写 -数字 |
-c | 显示尾部几个字符,最后一个是换行符 |
-f | 实时查看文件的更新 |
-F | 实时查看文件的更新,文件不存在时,不会退出,会一直尝试读取该文件 |
tailf
实时查看文件的更新,在磁盘不更新时,不会读取磁盘,减小磁盘的读写
$ tail -F /var/log/mess tail: 没法打开"/var/log/mess" 读取数据: 没有那个文件或目录 $ tail -f /var/log/messages $ tailf /var/log/messages
tailf
和 tail -f
区别在显示结果上没有任何区别, 在底层有区别
tail -f
会不停地读取磁盘中文件的内容, 无论文件有没有更新
tailf
则是只有文件更新的时候才会读取磁盘中文件的内容
tailf
会减小磁盘的读写, 减小性能的使用
根据本地数据库进行查找, 查找前须要更新数据库
$ yum provides locate 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com mlocate-0.26-8.el7.x86_64 : An utility for finding files by name 源 :base 匹配来源: 文件名 :/usr/bin/locate $ yum -y install mlocate-0.26-8.el7.x86_64 $ locate hostname locate: 没法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录 $ updatedb $ locate hostname /etc/hostname /etc/dbus-1/system.d/org.freedesktop.hostname1.conf /etc/selinux/targeted/active/modules/100/hostname /etc/selinux/targeted/active/modules/100/hostname/cil /etc/selinux/targeted/active/modules/100/hostname/hll /etc/selinux/targeted/active/modules/100/hostname/lang_ext /usr/bin/hostname >>> 支持正则(须要加上-r选项) $ locate -r hostname$ /etc/hostname /etc/selinux/targeted/active/modules/100/hostname /usr/bin/hostname /usr/bin/nmtui-hostname /usr/lib64/gettext/hostname
查找命令的绝对路径
$ which hostname /usr/bin/hostname
$ whereis hostname hostname: /usr/bin/hostname /etc/hostname /usr/share/man/man1/hostname.1.gz /usr/share/man/man5/hostname.5.gz
查看命令类型
$ type hostname hostname 是 /usr/bin/hostname $ type cd cd 是 shell 内嵌 $ type -a cd cd 是 shell 内嵌 cd 是 /usr/bin/cd
>>>> 默认精确查找 $ find / -type f -name "*hostname" >>>> 加上通配符模糊查询 find / -type f -name "*hostname*" >>> 相似于locate hostname
经过url的方式进行文件传输
查看是否能访问网站
输出的结果是网站的HTML代码
$ curl www.baidu.com
$ curl -o nginx.tar.gz http://nginx.org/download/nginx-0.1.14.tar.gz $ ll nginx.tar.gz -rw-r--r--. 1 root root 263949 9月 21 21:36 nginx.tar.gz
下载文件
$ wget -O nginx.tar.gz http://nginx.org/download/nginx-0.1.14.tar.gz
$ scp nginx.tar.gz root@192.168.142.40:/root/
$ scp root@192.168.142.40:/root/nginx.tar.gz .
本地上传和下载
$ yum install -y lrzsz
$ rz
$ sz *
大文件上传和下载
安装注册码 101210-450789-147200
排序
2
选项 | 说明 |
---|---|
-t | 指定分隔符, 默认以空白字符为分隔符 |
-k | 指定列数 |
-n | 以数字的大小方式进行排序 |
-r | 倒序 |
$ cat > file.txt <<EOF > b:3 > c:4 > d:5 > e:11 > f:33 > a:22 > EOF $ sort file.txt a:22 b:3 c:4 d:5 e:11 f:33 $ sort -t ':' file.txt a:22 b:3 c:4 d:5 e:11 f:33 $ sort -t ':' -k2 file.txt e:11 a:22 b:3 f:33 c:4 d:5 $ sort -t ':' -nk2 file.txt b:3 c:4 d:5 e:11 a:22 f:33 $ sort -t ':' -rnk2 file.txt f:33 a:22 e:11 d:5 c:4 b:3
$ sort -t ':' /etc/passwd -nk3 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 ...
对相邻的行进行去重统计
$ cat >>test.txt <<EOF > tank > egon > tank > egon > oldboy > frank > EOF $ sort test.txt |uniq egon frank oldboy tank
统计每一行中的内容出现的次数
$ sort test.txt |uniq -c |sort -nr 2 tank 2 egon 1 oldboy 1 frank
擅长取列, 默认是以tab键为分隔符
选项 | 说明 |
---|---|
-d | 指定分隔符 |
-f | 指定取出的列 |
-c | 取指定的字符 |
$ echo 'oldboyfgkdfssdsd' |cut -c 1-6 oldboy
$ echo 'frank, QQ is 1176494252' > file2.txt $ cut -d ' ' -f2,4 file2.txt QQ 1176494252
$ echo 'frank ,QQ is 1176494252'>file2.txt >>> 第一种方法 $ cut -d ' ' -f2,4 file2.txt |cut -d ',' -f2 QQ 1176494252 >>> 第二种方法 $ cut -d ' ' -f2,4 file2.txt |tr -d ',' QQ 1176494252
统计/etc/passwd
中全部解释器用到的次数
>>> 第一种方法 $ cut -d: -f7 /etc/passwd|sort|uniq -c|sort -n 1 /bin/sync 1 /sbin/halt 1 /sbin/shutdown 2 /bin/bash 16 /sbin/nologin >>> 第二种方法 $ awk -F: '{print $7}' /etc/passwd|sort|uniq -c|sort -n 1 /bin/sync 1 /sbin/halt 1 /sbin/shutdown 2 /bin/bash 16 /sbin/nologin >>> 第三种方法 $ awk -F: '{a[$7]++}END{for(i in a){print a[i]":"i}}' /etc/passwd|sort -t: -n 1:/bin/sync 1:/sbin/halt 1:/sbin/shutdown 2:/bin/bash 16:/sbin/nologin
统计
选项 | 说明 |
---|---|
-l | 统计文件的行数 |
-c | 统计文件的字节数, 包括换行符 |
-w | 以空格为分隔符, 统计文件的单词数 |
$ cat > test5.txt <<EOF > root:apple > /bin/bash:bin > apple > root:apple > EOF $ wc -l test5.txt 4 test5.txt $ wc -w test5.txt 4 test5.txt $ wc -c test5.txt 42 test5.txt
不能单独对文件操做, 必须先将文件输入给tr
命令
tr
全局替换
$ echo 'frank QQ, is 1176494252'>file2.txt $ cut -d ' ' -f2,4 file2.txt|tr '1' '0' QQ, 0076494252
$ echo "HELLO WHO IS SB"|tr 'A-Z' 'a-z' hello who is sb
说明: 这里的A被替换为a, B被替换为b, ...Z被替换为z
$ echo 12345 |tr '0-9' '9876543210' 87654
说明: 0被替换为9, 1被替换为8, 2被替换为7, ...9替换为0
$ echo 'frank QQ, is 1176494252'>file2.txt >>> 经过cut没法筛选出QQ 117649425 $ cut -d ' ' -f2,4 file2.txt|cut -d ',' -f1,2 QQ, 117649425 >>>> 经过tr -d 删除字符串中的逗号 $ cut -d ' ' -f2,4 file2.txt|tr -d ',' QQ 1176494252
$ echo hello 1 char 2 next 4 |tr -d -c '0-9 \n' 1 2 4 $ echo hello 1 char 2 next 4 |tr -c '0-9\n' ' ' 1 2 4
$ cat >multi_blank.txt<<EOF > line1 > > line2 > > > line3 > line4 > EOF $ cat multi_blank.txt line1 line2 line3 line4 $ tr -s '\n'<multi_blank.txt line1 line2 line3 line4
$ cat sum.txt 1 2 3 4 5 >>>> 先把算法列出来 $ echo $(tr '\n' '+'<sum.txt) 1+2+3+4+5++ >>>> 根据上面的算法, 须要多加个0, 否则会报错 $ echo $(tr '\n' '+'<sum.txt)0 1+2+3+4+5++0 >>>> 而后把结果计算出来, bash中$[加减乘除运算] 能够获得运算的结果 $ echo $[$(tr '\n' '+'<sum.txt)0] 15
$ cat test.txt first 1 second 2 third 3 >>> 第一种方法 ----->>>首先把全部数字搞出来 $ tr -d -c '0-9\n' < test.txt 1 2 3 ----->>>将算法搞出来 $ echo $(tr -d -c '0-9\n' < test.txt |tr '\n' '+')0 1+2+3+0 ----->>>算出结果 $ echo $[$(tr -d -c '0-9\n' < test.txt |tr '\n' '+')0] 6 >>>> 第二种方法 ----->>>首先把全部数字搞出来 $ tr -d [a-z]<test.txt 1 2 3 ----->>>将算法搞出来 $ tr -d [a-z]<test.txt |echo $(tr ' ' '+') +1 +2 +3 ----->>>算出结果 $ tr -d [a-z]<test.txt |echo $[echo $(tr ' ' '+')] 6