Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

常用shell命令集 #42

Open
FrankKai opened this issue Apr 27, 2018 · 3 comments
Open

常用shell命令集 #42

FrankKai opened this issue Apr 27, 2018 · 3 comments
Labels

Comments

@FrankKai
Copy link
Owner

FrankKai commented Apr 27, 2018

  • mac OS
  • Linux
  • windows
@FrankKai
Copy link
Owner Author

FrankKai commented Apr 27, 2018

mac OS

ls -A 查看包含隐藏文件的所有文件,不包含. .. 。
ls -a查看包含隐藏文件的所有文件,包含. .. 。
chmod 4755 filename赋予文件root权限
chmod 711 file赋予当前用户读,写,执行文件的权限
man command 查看命令详情
ls -l查看文件(夹)权限
ls -al查看包含隐藏文件的所有文件的文件名和属性
ls -lT查看完整的文件最后修改日期
groups当前用户所属组
groups username用户所属组
whoami当前用户
chgrp group filename修改文件所属组,用户需要在对应的组内
cat /private/var/db/dslocal/nodes/Default/users/root.plist 用户详细信息
ls -l *.sh罗列以.sh结尾的文件
unzip apache-maven-3.5.3-bin.zip 解压zip文件
tar xzvf apache-maven-3.5.3-bin.tar.gz解压tar文件
vim ~/.bash_profile修改环境变量配置文件
mkdir -p创建嵌套目录,假设foo不存在,mkdir foo/bar报错,mkdir -p foo/bar 正常。权限为0777。
echo $HOME打印当前用户的目录。
diff a.txt b.txt -y -W 50 比较两个文件的异同。
ps aux | grep [进程名]查看进程数量。
kill [PID]杀死一个进程。
kill -lPOSIX标准信号列表。
which查看全局工具目录。例如:which git ,which npm etc.
/etc/hostshosts文件地址
sudo vim /etc/hosts修改hosts文件
source /ect/hosts使hosts文件立即生效
sudo spctl --master-disable打开所有来源
ifconfig | grep 192.168.0.255精确查询ip
ifconfig | grep inet查询所有网卡ip
ps -ef | grep node查找所有node进程
curl -X OPTIONS http://example.org -i判断后端是否支持跨域,快速定义问题
telnet 192.168.0.144 9090 检查192.168.0.144主机下的9090端口是否开启
tree 查看当前目录的树形结构
cp ./src/App.vue ..复制App.vue到桌面
cp ./src/App.vue ./src/app.vue复制App.vue并重命名为app.vue
cp ../foo/bar .复制bar文件夹到当前目录
mv README.md readme.md重命名文件
echo "hello, world" > hello.md输入"hello world"到hello.md文件
find [file/directory] -type f/d递归搜索文件或者目录
cp -r thumb/ ~/Desktop/corporation/weidian-crm/static/thumb复制整个目录到目标目录
alias ll='ls -lG'll:command not found
cat package.json | pbcopy复制package.json到粘贴板
ls -lht打印文件详细信息,并且以Byte,Kb,Mb为单位,按最近修改时间排序
tail -f /home/foo.log打印foo.log文件的最后几行,持续的,只有键入ctrl+c才会停止
ifconfig | grep '192' -v展示反向匹配的信息
ifconfig | grep 192 -o精确查找匹配到的内容
ifconfig | grep 192 -c显示匹配到的内容个数
ifconfig | grep foo -i不区分大小写搜索
lsof -i :9090查看某个端口是否被占用
/Users/frank/Library/Application Support/Google/Chrome/Default/Extensionschrome插件目录
cat file | wc -l查看文件有几行
echo hello > foo.txt覆盖文件
echo hello >> foo.txt附加文件
pgrep -lo <process_name>查找对应名称的进程id
which <bin_name>查看二进制bin的目录
find <directory>查看文件目录层级
ls -lh逐行显示文件,文件大小按照Byte, Kilo-byte, Megabyte, Gigabyte, Terabyte and Petabyte单位显示
cp -r dir1 dir2 复制整个dir1到dir2
echo date "+%Y-%m-%d %H:%M:%S" 打印服务器当前时间

Repository owner locked and limited conversation to collaborators Apr 30, 2018
@FrankKai
Copy link
Owner Author

FrankKai commented Oct 8, 2018

Linux

  • 修改文件owner
    sudo chown frank filename
  • 修改文件夹及其子文件owner
    sudo chown -R frank projectDirectory -R recursive 递归目录
  • 修改文件权限
    sudo chmod 644 filename 4 read , 2 write, 1 execute 用户,组,其他
  • 暴力杀进程
    kill -9:KILL (non-catchable, non-ignorable kill,完全不关心进程状态)
  • 所有进程(包括控制进程及其子进程)的进程信息
    ps -ef
  • export PATH=$PATH是什么意思?
    export PATH=$PATH:$GOPATH/bin为例,它可以使得govendor命令在全局得到访问。
    意思是:添加一个bin目录到linux,macOS等unix系统的PATH,而PATH则是全局系统bin命令的集合。
    这里的$GOPATH可以是一个文件夹的地址,通过pwd获取到,例如export PATH=$PATH:/Users/frank/Project/apache-maven-3.6.0/bin
  • $PATH是什么?
    echo $PATH
/Users/frank/.nvm/versions/node/v10.11.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Applications/Wireshark.app/Contents/MacOS:/Users/frank/go/bin

这的确印证了关于golang那些事儿中的Unix系统中,值是一个由冒号":"分隔的字符串

当用户在terminal中,键入一个command时,会遍历所有的bin目录,若不存在,则会报错:

-bash:hahahahaha: command not found

aux是ps的一些可选项。
a = show processes for all users;
u = display the process's user/owner;
x = also show processes not attached to a terminal

  • ps aux与ps -ef区别是什么?
    -e 和-A一致 Display information about other users' processes, including those without controlling terminals.
    f Display the uid, pid, parent pid, recent CPU usage, process start time, controlling tty, elapsed CPU usage, and the associated command.
    aux会打印出命令的完整参数,CPU和内存占用率
    -ef打印父进程ID,精简的CMD

  • 如何查看每一项是什么?
    ps -ef | head或者ps aux | head
    -ef: UID PID PPID C STIME TTY TIME CMD
    aux: USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

  • netstat是什么?
    netstat -tlnp
    netstat - show network status
    -t --tcp
    -l --listening 显示监听的sockets
    -n 显示数字型的ip地址,而不是软链接的主机端口和用户名
    -p --program 显示socket属于程序的pid // macOS系统没有这个参数

  • lsof是什么?
    lsof - list open files.
    至于什么是open file,下面这段引用有说明。

An open file may be a regular file, a directory, a block special file,
a character special file, an executing text reference, a library, a
stream or a network file (Internet socket, NFS file or UNIX domain
socket.) A specific file or all the files in a file system may be
selected by path.

在unix的设计思想中,一切皆文件,所以一个网络端口的占用情况,也可以通过lsof查询到。
sudo lsof -n -P | grep :9090不生效。
-n 禁止将网络号转换为网络文件的主机名。抑制转化可以使lsof跑得更快。当主机名查找工作不正常时,它也很有用。
-P 禁止将网络文件的端口号转换为端口号。抑制这种转换可能会使lsof运行得更快一些。当端口名称查找不能正常工作时,它也很有用。

lsof -i :9090这个才能真正生效。
-i 选择其Internet地址与i中指定的地址匹配的任何文件的列表。

  • 如何区分ubuntu和centos?centos的包管理器是yum;ubuntu的包管理器是apt-get

@FrankKai FrankKai pinned this issue Sep 14, 2019
@FrankKai FrankKai unpinned this issue Sep 14, 2019
@FrankKai FrankKai added the Linux label Mar 6, 2020
@FrankKai
Copy link
Owner Author

windows

  • hosts文件地址
    c:\windows\system32\drivers\etc
  • 查看网卡信息
ipconfig /all

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant