Linux shell基础知识

1.shell(Bourne Agin shell)是一个命令解析器,提供用户和机器之间的交互,还有zsh、ksh
2.我们敲过的命令在什么地方存的呢?在家目录下的.bash_history文件中,最多可以保存1000条命令,可以用户history命令查看。
[root@bogon ~]# ls /root/.bash_history /root/.bash_history [root@bogon ~]#
3.1000条的个数是有环境变量$HISTSIZE 控制的
[root@bogon ~]# echo $HISTSIZE 1000 [root@bogon ~]#
4.清空当前的命令历史记录,不能清空配置文件中的命令
[root@bogon ~]# history -c [root@bogon ~]#
[root@bogon ~]# history
    1  history
[root@bogon ~]#
5.刚敲得命令不是直接保存到文件中,先保存到内存中,当我们退出终端才保存到文件中。
6.HISTSIZE环境变量控制命令保存条数配置文件在etc/profile中

7.我们将这个值改成5000变量值并不会立即生效,必须source下才生效
[root@bogon ~]# echo $HISTSIZE 1000 [root@bogon ~]# source /etc/profile [root@bogon ~]# echo $HISTSIZE 5000 [root@bogon ~]#
8.想要查看命令是什么时间执行的可以在当前终端定义环境变量
[root@bogon ~]# HISTTIMEFORMAT="%Y%m/%d %H:%M:%S " [root@bogon ~]#
9.再执行history发现可以看到时间了
[root@bogon ~]# history 
    1  201712/29 16:15:32 history
    2  201712/29 16:19:51 vim /etc/profile
    3  201712/29 16:22:32 echo $HISTSIZE 
    4  201712/29 16:23:10 source /etc/profile
    5  201712/29 16:23:20 echo $HISTSIZE 
    6  201712/29 16:24:49 history 
    7  201712/29 16:28:56 HISTTIMEFORMAT="%Y%m/%d %H:%M:%S "
    8  201712/29 16:29:19 history 
[root@bogon ~]# 
10.如果想永久生效需要将环境变量添加到/etc/profile文件中,然后保存推出source一下/etc/profile文件

11.永久生效了
[root@bogon ~]# echo $HISTTIMEFORMAT %Y%m/%d %H:%M:%S [root@bogon ~]#
12.永久保存命令文件,执行了命令以后用户运行的所有命令都会已追加的形式被保存下来(直接关闭终端不会记录刚敲的命令)
[root@bogon ~]# chattr +a ~/.bash_history [root@bogon ~]#
13.!!就是上一条命令
14.!n 就是运行多少条命令,n指的是多少条
15.!word 是从下往上找以单词word开头的执行过的命令执行
命令补全和别名

1.默认不支持命令产生补全,需要安装bash-completion包,按完之后重启系统
[root@bogon ~]# yum install -y bash-completion
2.如果命令太长可以给命令起别名,然后直接执行restartnet就行了
[root@bogon ~]# alias restartnet='systemctl restart network.service' [root@bogon ~]#
3.查看所有的alias别名命令
[root@bogon ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias restartnet='systemctl restart network.service' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@bogon ~]#
4.用户家目录下的.bashrc文件中有系统配置的alias
[root@bogon ~]# vim .bashrc

5.其他的alias配置在/etc/profile.d/下
[root@bogon profile.d]# cd /etc/profile.d/ [root@bogon profile.d]# ls 256term.csh colorls.csh PackageKit.sh vim.sh 256term.sh colorls.sh qt.csh vte.sh abrt-console-notification.sh lang.csh qt-graphicssystem.csh which2.csh bash_completion.sh lang.sh qt-graphicssystem.sh which2.sh colorgrep.csh less.csh qt.sh colorgrep.sh less.sh vim.csh [root@bogon profile.d]#
6.取消自定义的别名
[root@bogon profile.d]# unalias restartnet [root@bogon profile.d]#
通配符

1.* 匹配0或多个字符、?匹配任意一个字符 、[0-3]匹配0-3中的字符 、[12] 1或2、[1-9a-zA-Z]、{1,2,3}也是或
[root@bogon test]# ls 1.txt dnsmasq.txt gzip [root@bogon test]# ls *.txt 1.txt dnsmasq.txt [root@bogon test]# ls ?.txt 1.txt [root@bogon test]#
[root@bogon test]# ls [0-3].txt 1.txt [root@bogon test]#
[root@bogon test]# ls [12].txt 1.txt [root@bogon test]#
[root@bogon test]# ls [1-9a-zA-Z].txt 1.txt [root@bogon test]#
[root@bogon test]# ls {1,2,3}.txt
ls: 无法访问2.txt: 没有那个文件或目录
ls: 无法访问3.txt: 没有那个文件或目录
1.txt
[root@bogon test]# 
输入输出重定向
1.> 正确的输出到文件中
2.>>追加输出
3.2>将错误输出到什么位置
[root@bogon test]# lse bash: lse: 未找到命令... [root@bogon test]# lse 2> e.txt [root@bogon test]# cat e.txt bash: lse: 未找到命令... [root@bogon test]#
4.2>>追加重定向
[root@bogon test]# lse 2>> e.txt [root@bogon test]# cat e.txt bash: lse: 未找到命令... bash: lse: 未找到命令... [root@bogon test]#
5.&> 结合了正确和错误,将正确和错误都输出到文本中。
[root@bogon test]# ls 1.txt dnsmasq.txt e.txt gzip [root@bogon test]# ls 1.txt aaa &> e1.txt [root@bogon test]# cat e1.txt ls: 无法访问aaa: 没有那个文件或目录 1.txt [root@bogon test]# ls 1.txt aaa &>> e1.txt [root@bogon test]# cat e1.txt ls: 无法访问aaa: 没有那个文件或目录 1.txt ls: 无法访问aaa: 没有那个文件或目录 1.txt [root@bogon test]#
6.>1.txt 2>a.txt 将正确的和错误的输出分别保存到文件中
[root@bogon test]# ls 1.txt dnsmasq.txt e1.txt e.txt gzip [root@bogon test]# ls [12].txt aaa.txt > 1.txt 2>a.txt [root@bogon test]# cat 1.txt 1.txt [root@bogon test]# cat a.txt ls: 无法访问aaa.txt: 没有那个文件或目录 [root@bogon test]#
7.<输入重定向
[root@bogon test]# wc -l 1.txt 1 1.txt [root@bogon test]#
管道符和作业控制

1.管道符的作用是把文件的输出内容传递给后面的命令
[root@bogon test]# ls |wc -l 6 [root@bogon test]# cat 1.txt |wc -l 2 [root@bogon test]#
2.ctrl+z暂停一个任务
[root@bogon test]# vim 1.txt [1]+ 已停止 vim 1.txt [root@bogon test]#
3.fg将一个命令调到前台
[root@bogon test]# jobs [1]+ 已停止 vim 1.txt [root@bogon test]# fg vim 1.txt [root@bogon test]#
4.jobs命令列出后台任务
[root@bogon test]# vim 2.txt [1]+ 已停止 vim 2.txt [root@bogon test]# vim 1.txt [2]+ 已停止 vim 1.txt [root@bogon test]# jobs [1]- 已停止 vim 2.txt [2]+ 已停止 vim 1.txt [root@bogon test]#
5.fg + 任务ID 调起后台命令放到前台
[root@bogon test]# jobs [1]- 已停止 vim 2.txt [2]+ 已停止 vim 1.txt [root@bogon test]# fg 2 vim 1.txt [root@bogon test]#
6.bg + 任务id 将任务放到后台并运行
[root@bogon test]# bg 1 [1]+ vim 1.txt & [root@bogon test]#
7.vmstat 1不停的显示系统的状态
[root@bogon test]# vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 281464 324872 32 246636 0 1 29 6 56 94 0 0 99 0 0 0 0 281464 324872 32 246668 0 0 0 0 54 78 1 0 99 0 0 0 0 281464 324872 32 246668 0 0 0 0 45 66 0 1 99 0 0 0 0 281464 324872 32 246668 0 0 0 0 47 72 0 0 100 0 0 ^Z [2]+ 已停止 vmstat 1 [root@bogon test]#
8.&直接将任务放到后台
[root@bogon test]# sleep 100 & [3] 49905 [root@bogon test]# jobs [1]- 已停止 vim 1.txt [2]+ 已停止 vmstat 1 [3] 运行中 sleep 100 & [root@bogon test]#
shell变量

1.evn 获取系统变量
[root@bogon test]# env XDG_SESSION_ID=577 HOSTNAME=bogon TERM=xterm SHELL=/bin/bash HISTSIZE=5000 SSH_CLIENT=10.21.95.218 50134 22 QTDIR=/usr/lib64/qt-3.3 QTINC=/usr/lib64/qt-3.3/include SSH_TTY=/dev/pts/2 QT_GRAPHICSSYSTEM_CHECKED=1 USER=root
2.set 用set 命令可以设置各种shell选项或者列 出shell变量,自己设置变量a,用set命令可以找的。
[root@bogon test]# a=111 [root@bogon test]# echo $a 111 [root@bogon test]# set |grep 111 _=111 a=111 [root@bogon test]#

3.变量名首位不能是数字
[root@bogon test]# a=1 [root@bogon test]# echo $a 1 [root@bogon test]# 1a = 2 bash: 1a: 未找到命令... [root@bogon test]#
4.变量值有特殊符号的时候要用单引号括起来
[root@bogon test]# a=1 [root@bogon test]# a=a b c bash: b: 未找到命令... [root@bogon test]# a='a b c' [root@bogon test]#
[root@bogon test]# a=1 [root@bogon test]# b=2 [root@bogon test]# echo $a$b 12 [root@bogon test]#
5.w命令 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
[root@bogon test]# w 11:34:37 up 5 days, 11:49, 4 users, load average: 0.08, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root :0 :0 2612月17 ?xdm? 43:29 2.45s gdm-session-wor root pts/0 :0 二09 2days 0.04s 0.04s /bin/bash root pts/1 :0 五18 5days 0.06s 0.06s /bin/bash root pts/2 10.21.95.218 二09 5.00s 1.81s 0.71s w [root@bogon test]#
6.查看当前用户是在哪个TTY下
[root@bogon test]# echo $SSH_TTY /dev/pts/2 [root@bogon test]#
7.执行bash再开一个子进程(子shell),pstree查看
        ├─sshd───sshd───bash─┬─bash───pstree
        │                    ├─vim
        │                    └─vmstat
[root@bogon test]# bash
[root@bogon test]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─abrt-dbus───3*[{abrt-dbus}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─caribou───2*[{caribou}]
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon]
        ├─dbus-launch
        ├─dconf-service───2*[{dconf-service}]
        ├─dhclient
        ├─dnsmasq───dnsmasq
        ├─evolution-calen───5*[{evolution-calen}]
        ├─evolution-sourc───2*[{evolution-sourc}]
        ├─gconfd-2
        ├─gdm─┬─Xorg
        │     ├─gdm-session-wor─┬─gnome-session─┬─abrt-applet───2*[{abrt-applet+
        │     │                 │               ├─gnome-settings-───4*[{gnome-s+
        │     │                 │               ├─gnome-shell─┬─ibus-daemon─┬─i+
        │     │                 │               │             │             ├─i+
        │     │                 │               │             │             └─2+
        │     │                 │               │             └─6*[{gnome-shell+
        │     │                 │               ├─gnome-software───3*[{gnome-so+
        │     │                 │               ├─nautilus───3*[{nautilus}]
        │     │                 │               ├─ssh-agent
        │     │                 │               ├─tracker-extract───13*[{tracke+
        │     │                 │               ├─tracker-miner-a───2*[{tracker+
        │     │                 │               ├─tracker-miner-f───3*[{tracker+
        │     │                 │               ├─tracker-miner-u───2*[{tracker+
        │     │                 │               └─3*[{gnome-session}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gnome-keyring-d───4*[{gnome-keyring-d}]
        ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        ├─gnome-terminal-─┬─2*[bash]
        │                 ├─gnome-pty-helpe
        │                 └─3*[{gnome-terminal-}]
        ├─goa-daemon───3*[{goa-daemon}]
        ├─goa-identity-se───3*[{goa-identity-se}]
        ├─gsd-printer───2*[{gsd-printer}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
        ├─gvfsd───2*[{gvfsd}]
        ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        ├─gvfsd-trash───2*[{gvfsd-trash}]
        ├─httpd───6*[httpd]
        ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │             └─2*[{ibus-daemon}]
        ├─2*[ibus-x11───2*[{ibus-x11}]]
        ├─ksmtuned───sleep
        ├─libvirtd───15*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─mission-control───3*[{mission-control}]
        ├─mysqld_safe───mysqld───15*[{mysqld}]
        ├─nginx───nginx
        ├─packagekitd───2*[{packagekitd}]
        ├─php-fpm───3*[php-fpm]
        ├─polkitd───5*[{polkitd}]
        ├─pulseaudio───2*[{pulseaudio}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd───sshd───bash─┬─bash───pstree
        │                    ├─vim
        │                    └─vmstat
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tracker-store───7*[{tracker-store}]
        ├─tuned───4*[{tuned}]
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───{vmtoolsd}
        ├─vmtoolsd
        └─wpa_supplicant
[root@bogon test]# 
8.使用exit可以退出刚才的bash
[root@bogon test]# exit
exit
[root@bogon test]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─caribou───2*[{caribou}]
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon]
        ├─dbus-launch
        ├─dconf-service───2*[{dconf-service}]
        ├─dhclient
        ├─dnsmasq───dnsmasq
        ├─evolution-calen───5*[{evolution-calen}]
        ├─evolution-sourc───2*[{evolution-sourc}]
        ├─gconfd-2
        ├─gdm─┬─Xorg
        │     ├─gdm-session-wor─┬─gnome-session─┬─abrt-applet───2*[{abrt-applet}]
        │     │                 │               ├─gnome-settings-───4*[{gnome-settings-}]
        │     │                 │               ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │     │                 │               │             │             ├─ibus-engine-sim───2*[{ibus-engine-sim}]
        │     │                 │               │             │             └─2*[{ibus-daemon}]
        │     │                 │               │             └─6*[{gnome-shell}]
        │     │                 │               ├─gnome-software───3*[{gnome-software}]
        │     │                 │               ├─nautilus───3*[{nautilus}]
        │     │                 │               ├─ssh-agent
        │     │                 │               ├─tracker-extract───13*[{tracker-extract}]
        │     │                 │               ├─tracker-miner-a───2*[{tracker-miner-a}]
        │     │                 │               ├─tracker-miner-f───3*[{tracker-miner-f}]
        │     │                 │               ├─tracker-miner-u───2*[{tracker-miner-u}]
        │     │                 │               └─3*[{gnome-session}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gnome-keyring-d───4*[{gnome-keyring-d}]
        ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        ├─gnome-terminal-─┬─2*[bash]
        │                 ├─gnome-pty-helpe
        │                 └─3*[{gnome-terminal-}]
        ├─goa-daemon───3*[{goa-daemon}]
        ├─goa-identity-se───3*[{goa-identity-se}]
        ├─gsd-printer───2*[{gsd-printer}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
        ├─gvfsd───2*[{gvfsd}]
        ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        ├─gvfsd-trash───2*[{gvfsd-trash}]
        ├─httpd───6*[httpd]
        ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │             └─2*[{ibus-daemon}]
        ├─2*[ibus-x11───2*[{ibus-x11}]]
        ├─ksmtuned───sleep
        ├─libvirtd───15*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─mission-control───3*[{mission-control}]
        ├─mysqld_safe───mysqld───15*[{mysqld}]
        ├─nginx───nginx
        ├─packagekitd───2*[{packagekitd}]
        ├─php-fpm───3*[php-fpm]
        ├─polkitd───5*[{polkitd}]
        ├─pulseaudio───2*[{pulseaudio}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd───sshd───bash─┬─pstree
        │                    ├─vim
        │                    └─vmstat
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tracker-store───7*[{tracker-store}]
        ├─tuned───4*[{tuned}]
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───{vmtoolsd}
        ├─vmtoolsd
        └─wpa_supplicant
[root@bogon test]# 
9.如何定义全局环境变量,使用export
[root@bogon test]# a=linux [root@bogon test]# echo $a linux [root@bogon test]# bash [root@bogon test]# echo $a [root@bogon test]#
[root@bogon test]# exit exit [root@bogon test]# export a=linux [root@bogon test]# bash [root@bogon test]# echo $a linux [root@bogon test]#
10.unset 删除变量
[root@bogon test]# echo $a linux [root@bogon test]# unset a [root@bogon test]# echo $a [root@bogon test]#
11.Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。
环境变量配置文件有两类一个是系统的 /etc/下的 一个是用户家目录下。
系统变量
/etc/profile:这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等等。
/etc/bashrc:这个文件主要预设umasky以及PS1。这个PS1就是我们在输入命令时,前面的那串字符。例如Linux系统的PS1就是“[root@localhost ~]”,我们不妨看一下PS1的值,如下所示:
#echo $PS1
[\u@\h \W]\$
其中,\u指用户,\h指主机名,\W指当前目录,\$指字符“#”(如果是普通用户则显示为“¥”)。
个人环境变量
.bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专属于自己的shell信息,当前用户登入时,该文件仅仅执行一次。
.bashrc:该文件包含专属于自己的shell的bash信息,当登入或每次打开新的shell时,该文件被读取。例如你可以将用户自定义的alais或者自定义变量写到这个文件中。
.bash_history:该文件用于记录命令历史。
.bash_logout:当退出shell时,会执行该文件。你可以将一些清理的工作放到这个文件中。

12. source 和 . 是一个意思,都是加载一个配置文件
13.PS1在/etc/bashrc下定义,作用是定义 [root@bogon test]

14.特殊符号

例子
[root@bogon ~]# #ls [root@bogon ~]# a=1 [root@bogon ~]# b=2 [root@bogon ~]# c bash: c: 未找到命令... [root@bogon ~]# c=3 [root@bogon ~]# echo $c 3 [root@bogon ~]# echo \$c $c [root@bogon ~]#
 
15.cut 截取字符串 -d 指定分割符 截取第一段 -f 1,截取12段-f 1,2 ,截取1到3 -f 1-3 ,-c 指定第几个字符
[root@bogon ~]# cat /etc/passwd |head -2 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@bogon ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 root bin [root@bogon ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 root:x bin:x [root@bogon ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3 root:x:0 bin:x:1 [root@bogon ~]#
16.sort命令对文件内容排序
[root@bogon ~]# sort /etc/passwd abrt:x:173:173::/etc/abrt:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin chrony:x:991:988::/var/lib/chrony:/sbin/nologin colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
17.将passwd文件的头10行追加到1.txt
[root@bogon ~]# head /etc/passwd >> 1.txt [root@bogon ~]# vim 1.txt [root@bogon ~]#
18.sort -n 以数字排序 -r 倒序排
19wc -l 统计行数 -m 统计字符数 -w 统计词
20.cat -A 查看文件的所有内容包括换行符
21.uniq 去重需要先排序再去重
[root@bogon ~]# sort 1.txt |uniq -c
      1 adm:x:3:4:adm:/var/adm:/sbin/nologin
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 halt:x:7:0:halt:/sbin:/sbin/halt
      1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
      1 operator:x:11:0:operator:/root:/sbin/nologin
      1 root:x:0:0:root:/root:/bin/bash
      1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      1 sync:x:5:0:sync:/sbin:/bin/sync
[root@bogon ~]# 
22.|tee 类似 > tee命令会在执行完显示执行结果 -a 选项是追加
[root@bogon ~]# sort 1.txt |uniq -c |tee a.txt
      1 adm:x:3:4:adm:/var/adm:/sbin/nologin
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 halt:x:7:0:halt:/sbin:/sbin/halt
      1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
      1 operator:x:11:0:operator:/root:/sbin/nologin
      1 root:x:0:0:root:/root:/bin/bash
      1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      1 sync:x:5:0:sync:/sbin:/bin/sync
[root@bogon ~]# 
[root@bogon ~]# sort 1.txt |uniq -c |tee -a a.txt
      1 adm:x:3:4:adm:/var/adm:/sbin/nologin
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 halt:x:7:0:halt:/sbin:/sbin/halt
      1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
      1 operator:x:11:0:operator:/root:/sbin/nologin
      1 root:x:0:0:root:/root:/bin/bash
      1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      1 sync:x:5:0:sync:/sbin:/bin/sync
[root@bogon ~]# cat a.txt 
tr命令 替换字符
[root@bogon ~]# echo "linux" |tr '[ln]' '[Ln]' Linux [root@bogon ~]#
1.将所有的字符变成大写
[root@bogon ~]# echo "linux" |tr '[a-z]' '[A-Z]' LINUX [root@bogon ~]#
2.split 切割 -b 按大小 -l按行数
[root@bogon ~]# split -l 1000
[root@bogon ~]# split -b 1k 1.txt [root@bogon ~]# du -sh * 4.0K 1.txt 4.0K anaconda-ks.cfg 4.0K a.txt 2.2M lnmp-install.log 4.0K xaa
3.指定切割文件的前缀为abc
[root@bogon ~]# split -b 1k 1.txt abc
特殊符号

1.循环
[root@bogon ~]# for i in `seq 1 10` > do > echo $i > done 1 2 3 4 5 6 7 8 9 10 [root@bogon ~]#
2.[ -d dir] 判断目录是否存在
[root@bogon ~]# [ -d linux ] || mkdir linux [root@bogon ~]# [ -d linux ] && mkdir linux mkdir: 无法创建目录"linux": 文件已存在 [root@bogon ~]#
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号