shell基础3

cut是一个选取命令:

就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。

(1)其语法格式为:

cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用说明

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。



cut的使用

Using the cut command with /etc/passwd

For a first cut command example, I’ll use the /etc/passwd file on my Unix system. I use this file because fields in the file are separated by the “:” character, which make it very easy to work with.

Using that file, here’s a Linux cut command that prints the first field (first column) of every line in that file:

cut -f1 -d: /etc/passwd

This cut command can be read as:

Print the first field (-f1)

Fields are delimited by the “:” character (-d:)

Use the /etc/passwd file as input

The output of this command will vary by Unix and Linux systems, but it will be the first field of your /etc/passwd file, which contains the name of the users on your system. This will look something like:

nobody
alvin
george
fred

#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

for value in dog "cat" ‘bird‘   #注意 加引号没发现有什么特别的
do
        echo "animal are ${value}s"
done

fuhui@ubuntu:~/script$ sh sh22.sh
animal are dogs
animal are cats
animal are birds


linux 给用户加sudo权限

1、用root帐号登录或者su到root。

2、增加sudoers文件的写权限: chmod u+w /etc/sudoers

3、vim /etc/sudoers 找到 root ALL=(ALL) ALL 在这行下边添加 dituhui ALL=(ALL) ALL (ps:dituhui代表是你要添加sudo权限的用户名)

4、除去sudoers文件的写权限: chmod u-w /etc/sudoers



passwd下我的账户信息

fuhui:x:1000:1000:FirstLinux,,,:/home/fuhui:/bin/bash


命令:id 功能说明:查看显示目前登陆账户的uid和gid及所属分组及用户名

fuhui@ubuntu:~/script$ id fuhui
uid=1000(fuhui) gid=1000(fuhui) groups=1000(fuhui),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)


命令:finger

功能说明:查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。

Login: fuhui                            Name: FirstLinux
Directory: /home/fuhui                  Shell: /bin/bash
On since Sun Jun 21 18:22 (PDT) on pts/12 from 192.168.187.1
   7 seconds idle
No mail.
No Plan.

#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

users=$(cut -f1 -d: /etc/passwd)

for name in $users
do
        id $name   #注意,直接执行命令语句
        finger $name
done


linux seq更为详细的用法

seq命令的作用就是打印出一串有序的数字,seq(sequence of number).

它主要有以下3个参数构成:

       -f, --format=FORMAT
          use printf style floating-point FORMAT (default: %g)

-f 指定打印的格式:

例如:

[root@hao32]# seq -f %05g 2 7
00002
00003
00004
00005
00006
00007
 -s, --separator=STRING
          use STRING to separate numbers (default: \n)

-s 指定分隔符 默认是回车(-s后面可以不带引号):

例如:

[root@hao32]# seq -s" " 2 7
2 3 4 5 6 7
   -w, --equal-width
          equalize width by padding with leading zeroes

-w 输出是同宽 前面不足的用 “0” 补全,即与位数最多的数对齐

例如:

[root@hao32]# seq -w 2 11
02
03
04
05
06
07
08
09
10
11

/dev/null 2>&1 的作用

首先需要了解unix系统的输入输出流,他们分别与数字的对应关系是:

    0:标准输入流( stdin )
    1 : 标准输出流( stdout )
    2 : 标准错误流( stderr )

所以 2>&1 表示的意思是将 stderr 重定向到 stdout, 并一起在屏幕上显示。如果不加数字,默认的重定向是针对 stdout 的。

语句:/dev/null 代表空设备文件; >代表重定向; 2代表标准错误流; &表示引用,等同的意思。所以语句的意思是,将标准输出以及标准错误输出重定向到空设备文件,将信息屏蔽不显示。


#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

network=‘192.168.1‘

for sitenu in $(seq 1 10)
do      #注意${sitenu}和$${sitenu}是完全不相同的
        ping -c 1 -w 1 "${network}.${sitenu}" > /dev/null && result=0 || result=1  #注意 > /dev/null,没有找到-w的用处
        if [ "$result" = 0 ]; then
                echo  "${network}.${sitenu} is up"
        else
                echo "${network}.${sitenu} is down"
        fi
done


使用变量的值和变量赋值的区别是,是否存在前缀$

ls -lh $dir > /dev/null 如果是这样写的话,完了,没有输出
! -d $dir 判断目录是否存在,注意写法
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input a directory:" dir

if [ $dir = ‘‘ -o ! -d $dir ]; then
        echo "the $dir is not existed in the system"
        exit 1
fi

for info in $( ls $dir)
do
        perm=‘‘
        test -r "$dir/$info" && perm="$perm readable"
        test -w "$dir/$info" && perm="$perm writeable"
        test -x "$dir/$info" && perm="$perm executable"
        echo "the $dir/$info permission $perm"
done

for循环的另一种输入方式

for (( 初始值; 限定值; 步长 ))
do
    程序段
done
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input a number:" nu
declare -i sum=0

for((i=1; i<=$nu; i=i+1))	#注意,这里并没有使用$i
do
        sum=$(($sum+$i))
done

echo "the total is : $sum"

这里测试加上$
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input a number:" nu
declare -i sum=0

for((i=1; $i<=$nu; i=$i+1))        #修改成了一般的认识,发现仍然可以,感觉这种更符合平常逻辑
do
        sum=$(($sum+$i))
done

echo "the total is : $sum"

下面的错误应该不是$i的写法的,不明白哪里语法错误了
fuhui@ubuntu:~/script$ sh -n sh27.sh
sh27.sh: 9: sh27.sh: Syntax error: Bad for loop variable


判断脚本是否存在语法错误

[[email protected] ~]# sh [-nvx] scripts.sh

选项参数:

-n :不执行script,仅查询语法是否存在问题;
-v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上;
-x :将使用到的 script 内容显示到屏幕上,这是很有用的参数!

fuhui@ubuntu:~/script$ sh -x sh27.sh
+ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ export PATH
+ read -p please input a number: nu
please input a number:
时间: 2024-09-29 05:44:03

shell基础3的相关文章

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

Linux之shell基础

Shell基础 一.shell概述 1) shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序. 我们输入的abc...24个字符是通过shell对照ASCII码翻译成二进制来让计算机识别的.我们从操作界面上输入命令,这个命令回车之后把此命令对照ASCII码翻译成指定的二进制,通过shell翻译成计算机内核能识别的二进制,然后内核调用硬件来处理,处理完之后再通过shell反馈给用户. 2)

【Linux系列】【基础版】第三章 Shell基础知识

3. Shell基础知识     3.1 Shell的由来         3.1.1 Bourne Agin Shell         3.1.2 其他的shell, 有 zsh, ksh等     3.2 查看有没有shell         3.2.1 yum list | grep zsh         3.2.2 ls /root/.bash_history         3.2.3 echo $HISTSIZE -> vi /etc/profile 修改HISTSIZE的值 -

Linux网络配置及SSH和Shell基础

Linux网络配置及SSH和Shell基础 一.Linux网络配置     ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了. 二.hosts文件的作用及修改主机名      Hosts : The static table lookup for host name(主机名查询静态表)       Linux 的/etc/hosts是

shell基础(上)

Shell基础(上) 1.1什么是shell Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的 输入解释给操作系统.井处理各种各样的操作系统的输出结果,输出屏幕返回给用户 这种对话方式可以是 交互的方式:从键盘输入命令,通过/bin/bash的解折,可以立即得到shell的回应 非交互的方式:脚本 Shell执行命令分为两种方式 内置命令:如讲过的cd ,pwd, exit和echo等命令.当用户登录系统后,shell以及内置命令就被系统载入到内存,并且一直运行 一

Shell基础学习小结

0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本身的限制和效率问题,以下情况一般不推荐Shell: 资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等). 需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理). 有跨平台(操作系统)移植需求(一般使用C 或Java)

Linux学习 -- Shell基础 -- 概述

Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 -- 支持转义字符串 \e[1;31m xxx  开启颜色 \e[0m    关闭颜色 首行:#!/bin/bash #写好注释 执行方式: 方式1 sh xxx.sh 方式2 chmod 755 xxx.sh  ./xxx.sh 或 绝对路径 Linux学习 -- Shell基础 -- 概述

linux常用命令整理(五):shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

linux常用命令整理(四):软件包管理和shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

Linux学习 -- Shell基础 -- Bash基本功能

历史命令 history -c   clear -w   写入 ~/.bash_history 默认保存1000条, 可在/etc/profile中修改 调用 Tab补全 命令.目录.文件 命令别名 alias 别名='原命令' 命令执行顺序: 绝对路径或相对路径 > 别名 > Bash的内部命令 > $PATH环境变量中找到的第一个命令(外部命令) 配置文件:/root/.bashrc 删除:unalias 别名 常用快捷键 输入输出重定向 标准输入输出 输出重定向 注意:2和>