Shell-2-命令之乐

1.cat

(1)基本用法

[[email protected] tmp]# cat 1.txt  2.txt
this is a test1
this is a test 2

(2)cat -s file(删除额外空白行)

[[email protected] tmp]# cat 3.txt
a

b

c

d
[[email protected] tmp]# cat -s 3.txt
a

b

c

d

(3)cat -n lines.txt (显示行号)

[[email protected] tmp]# cat -s -n 3.txt
     1    a
     2
     3    b
     4
     5    c
     6
     7    d

2.录制并回放终端回话(script/scriptreplay)

(1)[[email protected] tmp]# script -t 2>timing.log -a output.session(录制)
Script started, file is output.session
(2)[[email protected] tmp]# scriptreplay timing.log output.session (回放)

3.文件查找与文件列表(find)

(1)find base_path(顺着目录,向下查找)

[[email protected] tmp]# find /tmp/
/tmp/
/tmp/.ICE-unix
/tmp/output.session
/tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
/tmp/1.txt
/tmp/2.txt
/tmp/3.txt
/tmp/test.txt

(2)find . -iname "*.txt" -print(忽略要查找内容大小写)

[[email protected] tmp]# find . \( -name "*.txt" -o -name "*.log" \)
./1.txt
./2.txt
./3.txt
./test.txt

(3)find / -path "*/cairui/*"

[[email protected] tmp]# find / -path "*/cairui/*"
/home/cairui/tools
/home/cairui/tools/nginx-1.12.0.tar.gz
/home/cairui/tools/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
/home/cairui/tools/nginx-1.12.0
/home/cairui/tools/nginx-1.12.0/Makefile
/home/cairui/tools/nginx-1.12.0/man
/home/cairui/tools/nginx-1.12.0/man/nginx.8

(4)否定参数(!)

[[email protected] tmp]# ls
1.txt  Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>  test3.txt
2.txt  output.session                                      timing.log
[[email protected] tmp]# find . ! -name "*.txt"(打印出不是以.txt结尾的文件)
.
./.ICE-unix
./timing.log
./output.session
./Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>

(5)基于目录深度的搜索(maxdepth)

find . -maxdepth 1 -name “f*” -print

[[email protected] tmp]# find / -maxdepth 3 -path "*/cairui/*"
/home/cairui/tools
/home/cairui/.bash_profile
/home/cairui/.bash_logout
/home/cairui/.bashrc

(6)根据文件类型搜索

[[email protected] tmp]# find . -type d -print(只列出所有的目录)
.
./.ICE-unix

[[email protected] tmp]# find . -type f (只列出文件)
./timing.log
./output.session
./test3.txt
./1.txt
./2.txt

文件类型


参数类型


普通文件


f


符号链接


l


目录


d


字符设备


c


块设备


b


套接字


s


FIFO


p

(7)根据文件时间进行搜索

访问时间(-atime):用户最近一次访问文件的时间。

修改时间(-mtime):文件内容最后一次被修改的时间。

变化时间(-ctime):文件元数据(例如权限和所有权)最后一次改变的时间。

[[email protected] tmp]# find . -type f -atime -7 (打印出最近7天内访问过的所有文件)
./timing.log
./output.session
./test3.txt
./1.txt
./2.txt

[[email protected] tmp]# find . -type f -atime 7 (正好在7天前那天访问的文件)
[[email protected] tmp]# find . -type f -atime +7 (访问时间超过7天的所有文件)

上面是按照天计算的,同样有按分钟计算的

-amin(访问时间)

-mmin(修改时间)

-cmin(变化时间)

(8)基于文件大小的搜索

find . -type f -size +2k(大于2K的文件)

find . -type f -size -2k(小于2k的文件)

find . -type f -size 2k(等于2k的文件)

除了k,还有其他的

b---块(512字节)

c---字节

w---字(2字节)

k---1024字节

M---1024k字节

G---1024M字节

(9)删除匹配的文件(-delete)

find . type f -name “*.txt” -delete

(10)利用find执行命令或动作(-exec)

find .type f -user root -exec chown slynux {} \;

find . type f -name “*.c” -exec cat {} \;>all_c_files.txt

4.玩转xargs

擅长将标准输入数据转换成命令行参数。

(1)将多行输入转换成单行输出

[[email protected] tmp]# cat ex.txt
123456
789
00
[[email protected] tmp]# cat ex.txt |xargs
123456 789 00

(2)将单行输入转换为多行输出

[[email protected] tmp]# cat ex.txt |xargs -n 2
123456 789
00

(3)

[[email protected] tmp]# cat ex.txt
splitXsplitXsplitX

[[email protected] tmp]# cat ex.txt |xargs -d X(用自己的分隔符来分割参数)
split split split 

5.用tr进行转换

tr [option] test1 test2
(1)[[email protected] tmp]# echo "HELLO WORLD" |tr ‘A-Z‘ ‘a-z’

(2)[[email protected] tmp]# echo 12345|tr ‘0-9‘ ‘9876543210‘(加密)
87654
[[email protected] tmp]# echo 87654|tr ‘9876543210‘ ‘0-9‘(解密)
12345

(3)删除字符(tr -d)
[[email protected] tmp]# echo "hello 122 world 55"|tr -d ‘0-9‘
hello  world 

(4)用tr压缩字符(tr -s)
[[email protected] ~]# echo "cairui    is    so  handsome " | tr -s ‘ ‘
cairui is so handsome

[[email protected] tmp]# cat test.txt
1
2
3
4
5
[[email protected] tmp]# cat test.txt | echo $[ $(tr ‘\n‘ ‘+‘ ) 0 ]
15

6.检验与核实

(1)

[[email protected] tmp]# md5sum test.txt
a7b1ac3a2b072f71a8e0d463bf4eb822  test.txt

如上所示,md5sum是一个32个字符的十六进制串

将输出的检验和重定向到一个文件,然后用md5文件核实数据的完整性

(2)

[[email protected] tmp]# md5sum -c test_sum.md5
test.txt: 确定(检验是否匹配)                              

7.加密工具与散列

(1)

crypt
crypt <input_file >output_file
ENTER passphrase
(2)gpg
[[email protected] tmp]# gpg -c test.txt(加密,保证在传输过程中无法读取)

[[email protected] tmp]# gpg test.txt(解密)

8.排序、唯一与重复

(1)
[[email protected] tmp]# sort 1.txt 2.txt > sorted.txt
[[email protected] tmp]# cat sorted.txt
123
33444
566
dfzcx
dq
kdfi
[[email protected] tmp]# cat 1.txt
123
33444
566
[[email protected] tmp]# cat 2.txt
kdfi
dfzcx
dq

(2)按照数字顺序进行排序

[[email protected] tmp]# sort -n 1.txt
111
123
566
777
33444

(3)按照逆序进行排序

[[email protected] tmp]# sort -r 1.txt
777
566
33444
123
111

(4)按照月份进行排序(依照一月、二月、三月、、、、)

sort -M months.txt

(5)按照两个已排序过的文件

sort -m sorted1 sorted2

(6)找出已排序文件中不重复的行

sort file.txt file2.txt |uniq

(7)检查文件是否已经排序过

#!/bin/bash
#function:paixu
sort -C filename;
if [ $? eq 0 ]; then
echo sorted;
else
echo unsorted;
fi

9.分割文件和数据

split -b 10k data.file
ls
data.file xaa xab xac.......

10.根据扩展名切分文件名

#!/bin/bash
#function:根据扩展名切分文件名
file_jpg="sample.jpg"
name=${file_jpg%.*}  (name=${file_jpg#*.})
echo file name is:$name
[[email protected] shell]# sh sample.sh
file name is:sample

11.批量重命名和移动

#!/bin/bash
#用途:重命名.jpg和.png文件

count=1;
for img in ‘find . -iname ‘*.png’ -o -iname ‘*.jpg’ -type f -maxdepth 1’
do
  new=image-$count.${img##*.}
  echo “renaming $img to $new”
  mv “$img” “$new”
  let count++
done

12.交互输入自动化

#!/bin/bash
read -p "enter number:" no;
read -p "enter name:" name
echo you have entered $no,$name
[[email protected] shell]# echo -e "1\nhello\n" | ./interactive.sh
you have entered 1,hello
时间: 2024-10-18 02:43:39

Shell-2-命令之乐的相关文章

(linux shell)第二章--命令之乐(一)

文章来自于我的个人博客:(linux shell)第二章--命令之乐(一)    上一章我们描写叙述了一些linux shell中须要注意的一些语法.接下来我们開始了解linux shell的经常使用命令.let's go... cat 命令: cat本身表示拼接(concatenate).cat命令有一些经常使用參数,像-n,-s等,我们以下逐一介绍: 假设你想高速查看一个文本文件内容.就能够使用cat命令: cat file 假设你想一次查看多个文件内容.也是在后面加上文件路径就可以 cat

adb shell常用命令

adb shell常用命令: 按下OK键   device.press('KEYCODE_DPAD_CENTER','DOWN_AND_UP') 长按某个按键:  device.drag((236,440),(236,440),2,10) 相应的按键对应的名称如下: home键:KEYCODE_HOME back键:KEYCODE_BACK send键:KEYCODE_CALL End键:   KEYCODE_ENDCALL 上导航键:KEYCODE_DPAD_UP 下导航键:KEYCODE_D

二. 第六单元.shell脚本命令

###########################二. 第六单元.shell脚本命令############################# 1.diff diff        file file1            ##比较两个文件的不同        -c                        ##显示周围的行        -u                        ##按照一定格式统一输出生成补丁        -r                      

Shell 常用命令

Shell 常用命令 这篇博客记录了一些 Shell 常用命令 供未来查阅. 添加ll 为了简化 "ls -l",可以在~/.bash_profile中加入: 1 2 alias ll='ls -l' 获得参数 $0是命令本身$1是第一个参数 $ $可以认为是 获取内容 . 内置变量 bash有很多内置变量,我们可以使用$获取到它们,例如: 1 2 3 4 5 $PWD $HOME $PATH $(pwd) 读取配置 配置数据可以像下面一样: 1 2 3 4 Fansy:UtilToo

hbase shell常用命令

hive常用命令 show tables; 列出hive里面所有数据表名 desc userProfile; 显示数据表userProfile的基本表字段及字段type desc extended trackinfo; 显示数据表trackinfo的详细信息,包括字段说明,数据表等 /usr/local/cloud/hive/bin/hive 进入hive数据库 select attribute_name from pms_attribute where attribute_id=21000 a

[Shell]grep命令

我是好文章的搬运工,原文来自ChinaUnix,博主scq2099yt,地址:http://blog.chinaunix.net/uid-22312037-id-4217835.html 一.基本用法        grep是linux中很常用的一个命令,主要功能就是进行字符串数据的对比,能使用正则表达式搜索文本,并将符合用户需求的字符串打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户.grep在数据中查找出一

linux shell 管道命令(pipe)使用及与shell重定向区别

linux shell 管道命令(pipe)使用及与shell重定向区别 看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 st

Shell 常用命令总结

Shell常用命令总结 1  ls命令:列出文件 ls -la 列出当前目录下的所有文件和文件夹 ls a* 列出当前目录下所有以a字母开头的文件 ls -l *.txt 列出当前目录下所有后缀名为txt的文件 2  cp命令:复制  cp a.txt b.txt : 把文件a的内容复制到b文件 cp a.txt ./test : 把文件a复制到text目录下 cp -a test test2:递归的把目录test下所有文件(包括隐藏的文件)复制到新的目录 test2 3  cat命令:查看 组

ANT编译打包&WIFI调试& adb shell常用命令

ANT编译打包 1:用ADT工具自带的打包:    1:切换到项目目录: 运行,android update project -p . android update project -p ./ --library ../com.example.plugin1.ifs 2:刷新:多了两个目录, 3:local.properties配置: sdk.dir=E:\\samy\\adt-huixin_x86-20140321\\sdk  key.store=./keystore/**** key.sto

adb shell dumpsys 命令

Android开发中,常常可以用adb shell dumpsys这条命令来dump出系统运行时的状态信息,例如可以这样来察看某个应用的内存使用信息 adb shell dumpsys meminfo com.google.android.apps.maps 察看TaskStack adb shell dumpsys activity activities 察看Alarm列表 adb shell dumpsys alarm 在CMD下面输入以下命令: adb shell dumpsys acti