本文共 3479 字,大约阅读时间需要 11 分钟。
在Linux系统中,环境变量的配置文件通常位于/etc/profile
,而用户自定义的环境变量一般存放在~/.bashrc
中。为了让修改后的配置文件在不重启系统的情况下生效,可以在终端执行source ~/.bashrc
。
系统查找环境变量时,会按照以下顺序依次查找:
/etc/profile
、/etc/profile.d/*.sh
、~/.bash_profile
、~/.bashrc
、/etc/bashrc
。 /etc/issue
文件中,使用\n
表示换行。/etc/issue.net
文件中,转义符在此文件中不生效。要显示次欢迎信息,需在/etc/ssh/sshd_config
中添加Banner /etc/issue.net
。/etc/motd
文件中,无论是本地还是远程终端都会显示。正则表达式用于匹配特定模式的字符串,常用于grep、awk、sed等命令中。通配符则用于匹配文件名,常用于ls、find等命令,但这些命令不支持正则表达式。
*
:匹配零个或多个任意字符。^
:匹配行首。$
:匹配行尾。[]
:匹配中括号内的任意一个字符。[^]
:匹配中括号外的任意一个字符。\
:转义符,用于转义特殊字符。\{n\}
:匹配前面的字符恰好n次。\{n,m\}
:匹配前面的字符n次到m次。grep "a*" test.txt
:匹配所有包含"a"的行。grep "aa*" test.txt
:匹配至少含有一个"a"的行。cut
命令用于提取文件中的特定部分。常用选项包括:
-f
:指定要提取的字段编号。-d
:指定字段分隔符。示例:
cut -f 2 student.txt
:提取第二列。cut -d ":" -f 2,3 /etc/passwd
:以":"为分隔符提取第二、第三列。printf
:根据格式输出内容。示例:printf 'Hello %s\n' $(cat student.txt)
。print
:默认会在输出后添加换行符,且在awk中使用时会自动加上换行符。示例:printf 'Hello\n'
。awk
用于处理文本文件,常用语法为awk '条件{动作}' 文件名
。
awk 'BEGIN{print "welcome!!!"}{print $2"\t"$3}' student.txtawk -h | grep sda5 | awk '{print $5}' | cut -d "%" -f 1cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1"\n"}'cat student.txt | grep -v Name | awk '$6 >= 60 {print $2}'
sed
用于编辑和处理文本文件,支持多种操作选项。常用选项包括:
-n
:抑制输出。-i
:直接修改文件。a
:在当前行后添加内容。i
:在当前行前插入内容。d
:删除行。p
:输出行。s
:替换字符串。示例:
sed -n '2p' /etc/passwdsed '2immm' /etc/passwdsed -e 's/root//g;s/michael/leon/g' /etc/passwd
sort
用于对文件内容进行排序,常用选项包括:
-f
:忽略大小写。-n
:按数值型排序。-r
:反向排序。-t
:指定分隔符。-k
:指定排序字段范围。示例:
sort -t ":" -k 3,3 /etc/passwdsort -n -t ":" -k 3,3 /etc/passwd
test
命令用于判断文件和目录的存在性及属性。常用选项包括:
-e
:文件或目录存在。-f
:文件。-d
:目录。-s
:文件非空。-r
:文件具有读取权限。-z
:字符串为空。-eq
、-gt
、-lt
等。示例:
[ -d /root ] && echo yes || echo notest -e /root
if [ 条件判断式 ]; then 程序fi
for i in $(cat ls.log) do tar -zxf $i > /dev/nulldone
case $变量名 in "值1") 程序1 ;; "值2") 程序2 ;; * 默认程序 ;;esac
#!/bin/bashrate=$( df -h | grep /dev/sda5 | awk '{print $5}' | cut -d '%' -f 1 )if [ $rate -ge 80 ]; then echo '/dev/sda5 is full'fi
#!/bin/bashntpd ate asia.pool.ntp.org > /dev/nulldate=$(date +%y%m%d)size=$(du -sh /var/lib/mysql)if [ -d /tmp/dbbak ]; then echo 1 > /dev/null mkdir /tmp/dbbakfiecho "Date:$date!" >> /tmp/dbbak/dbinfo.txtecho "Size:$size!" >> /tmp/dbbak/dbinfo.txtcd /tmp/dbbaktar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt > /dev/nullrm -rf /tmp/dbbak/dbinfo.txt
#!/bin/bashdate=$(date +%y%m%d)port=$(nmap -sT 192.168.1.156 | grep tcp | grep http | awk '{print $2}')if [ "$port"=="open" ]; then echo "$date httpd is ok!" > /tmp/autostart-acc.logelse /etc/rc.d/init.d/httpd start > /dev/null echo "$date restart httpd!" > /tmp/autostart-acc.logfi
#!/bin/bashcd /lamplfor i in $(cat ls.log) do tar -zxf $i > /dev/nulldonerm -rf /lamp/ls.log
#!/bin/bashread -p "username:" -t 30 nameread -p "number of users:" -t 30 numread -p "password of users:" -t 30 passif [ ! -z $name && ! -z $num && ! -z $pass ]; then y=$(echo $num | sed 's/[0-9]//g') if [ -z $y ]; then for(( i=1; i<=$num; i++ )); do /usr/sbin/useradd $name$i > /dev/null echo $pass | /usr/bin/passwd --stdin $name$i > /dev/null done fifi
while [ 条件 ]; do 程序doneuntil [ 条件 ]; do 程序done
以上脚本涵盖了Linux系统配置与日常操作的常用命令及实用脚本,适用于日常工作和自动化操作。
转载地址:http://rqzfk.baihongyu.com/