查看有哪些shell可以使用:查看/etc/shells
~/.bash_history 记录上次登录执行的指令
alias 查看、设置命令别名 unalias取消设置
alias lm='ls -al'
type 命令名:查看某一命令是否为shell内建的命令
/ 命令换行继续写
echo $PATH 或 echo ${PATH} 显示变量PATH的内容
myname=bing 设定变量myname的值为bing
""中的特殊字符可以保有变量特性,''内的特殊字符仅为一般字符,/转义
``数字键1左边的按键或$(),里面的命令先执行,返回输出
export PATH 使变量变为环境变量
unset 变量名 取消变量
bash 进入子shell,父shell的变量失效,除非设为环境变量
exit 离开子shell
env 列出所有环境变量,其中的:
HOME:家目录 SHELL:shell程序名 PATH:执行文件搜寻路径
LANG:语系编码 RANDOM:随机数,0~32767
windows下一般是gbk,而linux是utf-8,所以有时会看见乱码。可通过设定LANG来解决
iconv -f GBK -t UTF-8 file1 -o file2 转换文件的编码
unix2dos dos2unix dos文件行结尾/r/n(^M$),unix为/n,可用此转换
set 设定环境,无参数则将系统和自己的变量显示出来,其中:
PS1:提示字符的设定 '/[/u@/h /W/]/$' 显示为 [root@linux ~]# 具体含义见鸟哥的菜
echo $- $-变量是set的所有设定,预设himBH
echo $$:本shell的pid
echo $?:上个执行指令的回传码
OSTYPE,HOSTTYPE,MACHTYPE:主机硬件与核心的等级
locale -a:列出支持的语系,语系文件放在/usr/lib/locale/目录下
read:从键盘读入变量,-p 提示语,-t 等待时间
declare [+-aixr] 变量名 宣告变量属性 +取消 -设置
-a 数组 -i 整形 -x 环境变量 -r 只读
history列出历史命令
!n 执行第n条命令 !! 执行上条命令
登录信息显示数据:/etc/issue,/etc/motd
系统设定值
/etc/sysconfig/i18n:LANG 等
/etc/profile PATH,USER,HOSTNAME等 HISTSIZE设成50,较小较安全
/etc/inputrc 键盘热键
/etc/profile.d/*.sh 针对bash及C-shell规范了一些数据,如alias之类
/etc/bashrc:umask,PS1
/etc/man.config:MANPATH man的搜索路径
个人设定值
先~/.bash_profile,然后 ~/.bash_login,最后 ~/.profile。可放个人的PATH,环境变量等
~/.bashrc 命令别名,路径等
~/.bash_history 历史命令
~/.bash_logout 注销bash后的动作
修改以上文件后,source ~/.bashrc或. ~/.bashrc可让设置立即生效
登录时的读取顺序
1.先读 /etc/profile,再根据/etc/profile的内容去读取其它额外的设定档,例如/etc/profile.d与/etc/inputrc等等;
2.根据不同的使用者,到其家目录去读~/.bash_profile或~/.bash_login或~/.profile 等设定档;
3.根据不同使用者,到其家目录读取~/.bashrc。
non-login shell 登录后取得的shell,配置文件仅有~/.bashrc
stty -a 列出终端设定的所有按键 ^C表示ctrl+c
eof:End of file erase:向后删字符 intr:发出interrupt信号给程序
stty erase ^h 设置Ctrl+h为删除
特殊符号,如*、#等,见鸟哥的菜
标准输入(stdin):0,用<或<< 命令中-可表示标准输入或输出
标准输出(stdout):1,用>或>>(表示追加)
标准错误(stderr):2,用2>或2>>
2>/dev/null 扔掉错误 > filename 2>&1 正确和错误信息写到同一文件
cat > filename 从键盘输入信息到文件,按下Ctrl+d离开
cat > filename <<eof 从键盘输入信息到文件,键入eof离开
cat > filename < file 将file的内容送到filename中
; 多个命令间分隔
ls file1 && touch file2 若file1存在则创建file2。ls命令返回值在$?中
ls file1 || touch file2 若file1不存在则创建file2。指令一个接一个执行,注意顺序
cut 对一行数据进行分解 -d'分隔字符' -f 第几段 -c以字符为单位取出固定字符区间
echo $PATH | cut -d ':' -f 3,5
export | cut -c 12- 取第十二个字符后的所有字符
grep 搜寻字符串 -a搜二进制文件 -c出现次数 -i忽略大小写 -n行号 -v反选
grep aaa filename
sort 预设以第一个数据来排序,以文字型态来排序的
unip 剔重
wc 字符计数,输出顺序:行,字数,字符数
tee 双重导向 -a以累加的方式
ls -l /home | tee /homefile | more 将ls的数据存到homefile中,并输出屏幕
tr -d删除字符 -s替换字符
last|tr '[a-z]' '[A-Z]' 将输出中所有小写字母换成大写
last|tr -d abp 删掉abp last|tr -s abp 123 将abp换成123
col -x 将tab转换为对等的空格
join 文档内容合并
join -t ':' file1 file2 两文件第一列字段相同的行内容合并,字段间以:分隔
join -t ':' -1 4 file1 -2 3 file2 file1的第4个字段和file2的第3个字段若相同,则合并其他字段内容,以:分隔
paste file1 file2 file3 将文件同一行直接合并,以tab间隔,-d指定分隔符
expand file 将文件中tab键换为空格,-t可指定空格数
split file PREFIX 分割文件,-b大小,可加单位b、k、m,-l 行数,分割后文件名PREFIXaa,PREFIXab…… 合并文件 cat PREFIX* >> file
xargs 将输入分割成其他程序的入参,以空格或断行符作为分隔符 -p 需确认 -n 次数
tar -tvf file.tar 查看file内容 tar -cvf file.tar file 打包 tar -xvf file.tar 解包